当前位置: 首页 > 专利查询>辉达公司专利>正文

为了用于由通用处理器执行而对应用程序重定目标制造技术

技术编号:3880944 阅读:170 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种为了用于由通用处理器执行而对应用程序重定目标。本发明专利技术的一个实施例提出了一种技术,用于将使用并行编程模型编写的用于在多核图像处理单元(GPU)上执行的应用程序翻译成用于由通用中央处理单元(CPU)执行。所述应用程序中依赖于多核GUP的特定特征的部分由翻译器转换成由通用CPU执行。所述应用程序被划分为同步独立指令区域。所述指令被分类为收敛的或发散的,并且在区域之间共享的发散存储器基准被复制。插入线程循环,以确保在由通用CPU执行期间各种线程之间存储器的正确共享。

【技术实现步骤摘要】
为了用于由通用处理器执行而对应用程序重定目标 相关专利申请的交叉引用本申请要求于2008年4月9日提交的美国临时申请序列号为61/043, 708 (律师案巻号No. NVDA/SC-08-0007-US0 )的优先权,在此通过4爰引 的方式纳入本说明书。才支术领域本专利技术的实施例大体上涉及编译器程序,更具体地涉及一种翻译器, 所述翻译器用于将为了由多核图像处理器执行而编写的应用程序重定目 标,以便由具有共享存储器的通用处理器执行。
技术介绍
现代图像处理系统通常包括配置为以多线程方式执行应用程序的多核 图像处理单元(GPU)。这种图像处理系统还包括存储器,该存储器具有在 执行线程之间共享的部分和每个线程专用的部分。NVIDIA的CUDA (计算统一设备架构)技术提供了 一种C语言环 境,使得编程人员和开发人员能够编写解决复杂计算问题的软件应用程序, 这些复杂计算问题诸如视频和音频编码、油气勘探建模和医学成像。应用 程序配置为由多核GPU并行执行,并且通常依靠多核GPU的特定特4正。 由于同样的特定特征在通用中央处理单元(CPU)中是不可用的,因此用 CUDA编写的软件应用程序可能无法移植到通用CPU上运行。如前所述,在本领域中需要这样一种技术,这种技术不需要编程人员 对应用程序进行修改就能让用并行编程模型编写的用于在多核GPU上执 行的应用程序能够在通用CPU上运行。
技术实现思路
本专利技术的一个实施例给出了 一种将用并行编程模型编写的程序翻:^,为 用于由通用CPU执行的方法。该方法包括接收用并行编程模型编写的用于 由多核图像处理单元执行的应用程序的步骤,和将该应用程序划分成同步 独立指令的区域以创建划分的应用程序的步骤。将一个循环插入到划分的应用程序中的至少 一个区域附近,以创建用于由通用处理器执行的翻译后 的应用程序。该循环在合作线程阵列维度上进行迭代,该线程阵列维度与 由位于多核图像处理单元内的并行处理器同时执行的多个线程相对应。在此披露的方法的一个优势在于用并行编程模型编写的用于由多核GPU执行的应用程序可以无需修改而移植到通用CPU上。为了能够由通 用CPU执行,将应用程序中依赖于多核GPU的特定特征的部分由翻译器 进行转换。将应用程序划分为同步独立指令的区域。将这些指令分类为收 敛的或发散的,并且将这些区域之间共享的发散存储器基准进行复制。在 由通用CPU执行的过程中,插入线程循环以确保在各种线程之间能够正确 地共享存储器。附图说明为了详细地理解本专利技术的上述特征,对于以上筒要说明的专利技术,将参 照实施例进行更为具体的描述,其中对部分实施例结合附图进行了说明。 然而,需要注意的是,附图中示出的只是本专利技术代表性的实施例,因此不 能认为附图限制了本专利技术的范围,本专利技术可以适用于其他同样有效的实施例。图l是说明计算机系统的框图2是根据本专利技术的一个实施例对计算机系统进行说明的框图3A是根据本专利技术的一个实施例,将用于由多核图像处理单元执行而编写的代码翻译为由通用处理器执行的代码的方法步骤的流程图3B是根据本专利技术的一个实施例,说明翻译为划分后的代码的输入代码的概念图3C是根据本专利技术的一个实施例,说明翻译为优化后的代码的输入 代码的概念图;以及图4是根据本专利技术的一个实施例,说明由通用处理器^丸行翻译后的代 码的方法步骤的流程图。具体实施例方式解。然而,对于本领域:术人员来说显而易见的i,'即使缺少其中二个或多个这些具体细节也可以实施本专利技术。在其他例子中,为了避免引起与本 专利技术的混淆,对一些公知的特征没有进行描述。5图l示出了配置为用于执行用CUDA编写的代码的计算机系统100的 框图。计算机系统100包括CPU 102和系统存储器104,两者通过包含存 储器桥105的总线路径互相通信。存储器桥105例如可以是北桥芯片,通 过总线或其他通信路径106 (例如,超传输链接)与I/O (输7v/输出)桥 107相连接。I/O桥107例如可以是南桥芯片,从一个或多个用户输入装置 108(例如,键盘、鼠标)接收用户输入,并将该输入通过路径106和存储 器桥105转发给CPU 102。多线程处理子系统112通过总线或其他通信路 径113 (例如,PCIExpress、加速图像端口 (AGP)或者超传输链接)与存储 器桥105相连接。在一个实施例中,多线程处理子系统112是将像素输送 到显示装置110 (例如,传统的CRT或基于LCD的显示器)的图像子系 统。系统盘114还与I/O桥107相连接。开关116为I/O桥107和诸如网 络适配器118以及各种外插卡120和121的其他部件之间提供了连接。其 他部件(图中没有示出)包括USB或其他端口连接、CD驱动器、DVD马区 动器、电影刻录装置及类似的部件,也可以与1/0桥107相连接。在图1PCI (外设部件互连)、PCIExpress (PCI-E)、 AGP (加速图像端口 )、超传 输或其他任何一种总线或点对点通信协议,并且不同装置之间的连接可以 4吏用本领域已知的不同协议。CPU 102作为计算机系统IOO的控制处理器来运行,管理和协调其他 系统部件的工作。特别是,CPU 102发出控制多线程处理子系统112中的 并行处理器134工作的命令。在一些实施例中,CPU 102将用于并行处理 器134的命令流写入到命令緩冲器(图中未示出),该命令緩冲器可以位于 系统存储器104中、子系统存储器138中、或者是CPU102和并行处理器 134都可以访问的其他存储位置中。并行处理器134从命令緩冲器中读出 命令流,并且相对于CPU 102的工作异步地执行这些命令。系统存储器104包括操作系统的执行映像、装置驱动器103和配置为 用于由多线程处理子系统112执行的CUDA代码101 。 CUDA代码101包 含了意在多线程处理子系统112上执行的编程指令。在本文的描述中,代 码指的是任何计算机代码、指令、和/或可以用处理器执行的函数。例如, 在各种实施例中,所述代码可以包含C代码、C十+代码等等。在一个实施 例中,所述代码可以包括一种计算机语言的扩展语言(例如,C、 C++的 扩展等等)。操作系统提供了用于管理和协调计算机系统IOO工作的详细指令。装置驱动器103提供了用于管理和协调多线程处理子系统112,特别是并行 处理器134工作的详细指令。另外,装置驱动器103可以提供编译功能, 用来生成特别针对并行处理器134进行优化的机器代码。装置驱动器103 可以结合由NVIDIA公司提供的CUD八tm框架来提供。在一个实施例中,多线程处理子系统112包含了一个或多个并行处理 器134,该并行处理器134可以例如用一个或多个集成电路装置来实现, 所述集成电路装置例如是可编程处理器、专用集成电路(ASICs)。并行处 理器134可以包括针对图像和视频处理进行优化的电路,例如包括^L频输 出电路和图像处理单元(GPU)。在另一个实施例中,多线程处理子系统 112可以和一个或多个其他的系统元件集成,例如存储器桥105、 CPU 102 和I/O桥107,以形成片上系统(SoC)。 一个或多个并行处理器134可以 将数据输出到显示装置110上,或者每一个并行处理器34可以将数据输 出本文档来自技高网...

【技术保护点】
一种计算系统,所述计算系统被配置用于将应用程序翻译为由通用处理器来执行,所述计算系统包括: 处理器,所述处理器被配置用于执行翻译器;和 系统存储器,所述系统存储器与所述处理器连接并被配置用于存储所述翻译器、第一应用程序和第二应用 程序, 所述第一应用程序使用并行编程模型来编写以用于在多核图像处理单元上执行, 所述第二应用程序被配置用于由通用处理器执行,以及 所述翻译器被配置用于: 接收所述第一应用程序; 将所述第一应用程序划分为同步独立 指令的区域以生成划分后的应用程序;以及 在至少其中一个划分后的应用程序周围插入循环,以生成所述第二应用程序,其中所述循环在合作线程阵列维度上进行迭代,所述合作线程阵列维度对应于由多核图像处理单元内的并行处理器同时执行的多个线程。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:维诺德格罗夫巴斯蒂安约翰马特乌斯阿特斯迈克尔墨菲鲍里斯柏林贾扬特B科尔希道格拉斯塞勒
申请(专利权)人:辉达公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1