[发明专利]用于分开编译嵌入在主机代码中的设备代码的方法和系统无效
| 申请号: | 201310170391.7 | 申请日: | 2013-05-09 |
| 公开(公告)号: | CN103389908A | 公开(公告)日: | 2013-11-13 |
| 发明(设计)人: | 麦克尔·墨菲;肖恩·Y·李;斯蒂芬·琼斯;吉里什·巴拉姆贝;杰迪普·马拉泰亚 | 申请(专利权)人: | 辉达公司 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45 |
| 代理公司: | 北京市磐华律师事务所 11336 | 代理人: | 董巍;徐丁峰 |
| 地址: | 美国加利*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 分开 编译 嵌入 主机 代码 中的 设备 方法 系统 | ||
相关申请的交叉引用
本申请要求享有于2012年5月9日提交的、题目为“SEPARATE COMPILATION OF DEVICE CODE EMBEDDED IN HOST CODE”的、申请号为61/644956的美国临时专利申请的优先权和权益,其通过援引整体并入本文。该申请和与该申请同时提交的、代理人案号为NVID-P-SC-12-0176-US1的专利申请“A METHOD AND SYSTEM FOR MULTIPLE EMBEDDED DEVICE LINKS IN A HOST EXECUTABLE”相关,其通过援引整体并入本文。
技术领域
本发明的实施例总地涉及图形处理单元(GPU)和用于异构环境(例如GPU和CPU)的编译器。
背景技术
软件可执行文件典型地通过编译分开的主机对象(host object)来生成,其中每个主机对象包括源代码或主机代码的各自部分(例如以诸如C、C++等高级语言所写的)。由编译器所生成的可执行文件包括可以由中央处理单元(CPU)所执行的对象代码。最近,包括CPU和图形处理单元(GPU)的主机系统已经开始利用GPU的并行处理能力来实施否则将由CPU所实施的任务。GPU执行设备代码,而CPU执行主机代码。设备代码典型地作为单个文件嵌入在主机代码中,从而创建异构编译器环境。
常规的主机链接器或编译器从多个主机对象生成可执行文件。然而,这些常规的主机链接器不能链接嵌入在多个主机对象中的设备代码,并且因此要求任何设备代码被嵌入在单个主机对象中。例如,常规的主机链接器可以从仅包含主机代码(用于由CPU执行)的第一主机对象和包含主机代码(用于由CPU执行)和设备代码(用于由GPU执行)的第二主机对象创建可执行文件。然而,因为常规的主机链接器不能适当地链接嵌入在每个主机对象中的各自的设备代码,所以常规的主机链接器不能从每个包含各自的主机代码(用于由CPU执行)和各自的设备代码(用于由GPU执行)的多个主机对象创建可执行文件。
发明内容
因此,存在对从包含各自的主机代码和各自的设备代码的多个主机对象生成可执行文件的需要。本发明的实施例提供支持在异构编程环境内所使用的主机代码和设备代码的分开编译的新颖的解决方案。本发明的实施例可操作以使用分开的设备链接操作链接嵌入在多个主机对象文件内的设备代码。本发明的实施例可以从它们各自的主机对象文件提取设备代码并且之后将其链接在一起以形成经链接的设备代码。该经链接的设备代码随后可以被嵌回到通过本发明的实施例所生成的主机对象,可以之后将该主机对象传递给主机链接器以形成主机可执行文件。因此,通过本发明的实施例,设备代码可以分成多个文件并且之后链接在一起以形成最终可执行文件
更具体地,在一个实施例中,本发明实现为生成可执行文件的方法。方法包括编译从多个不同源文件所访问的第一部分程序代码和第二部分程序代码,其中第一部分包括将由中央处理单元(CPU)所执行的指令并且第二部分代码包括将由图形处理单元(GPU)所排外地执行的指令。在一个实施例中,第二部分代码以计算统一设备架构编程语言(CUDA)的版本所写。在一个实施例中,编译的方法进一步包括分开地编译第一部分和第二部分代码。
在一个实施例中,编译的方法进一步包括生成模拟经编码实体,其中第一部分代码可操作以使用模拟经编码实体从第二部分代码访问数据。方法还包括将经编译的第一部分代码链接在一起以产生经链接的第一部分代码。方法还包括将经编译的第二部分代码链接在一起以产生经链接的第二部分代码。在一个实施例中,将第二部分代码链接在一起的方法进一步包括生成外壳主机对象文件以及将经链接的第二部分代码嵌入在外壳主机对象文件内。
在一个实施例中,将第二部分代码链接在一起的方法进一步包括区分共享公共名称的、嵌入在第二部分代码内的经编码对象。在一个实施例中,区分经编码对象的方法进一步包括生成用于共享公共名称的经编码对象的唯一标识符。此外,方法包括生成可执行文件,其中可执行文件包括经链接的第一部分代码和经链接的第二部分代码的可执行形式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辉达公司,未经辉达公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310170391.7/2.html,转载请声明来源钻瓜专利网。





