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

由通用处理器执行重定目标的图形处理器加速代码制造技术

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

【技术实现步骤摘要】

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

【技术保护点】
一种配置用于执行翻译后的应用程序的计算系统,所述计算系统包括: 通用处理器,所述通用处理器被配置用于执行编译器; 系统存储器,所述系统存储器与所述处理器连接并且被配置用于存储翻译后的应用程序和编译后的代码;并且 所述编译器 被配置用于: 接收翻译后的应用程序,所述翻译后的应用程序由采用并行编程模型编写的用于多核图像处理单元上执行的应用程序转换而来;以及 编译翻译后的应用程序,以生成用于由通用处理器执行的编译后的代码; 装置驱动器,所述装置驱动 器被配置用于: 确定在通用处理器中可用来执行翻译后的应用程序的执行内核的数量; 将所述通用处理器配置用于启用该数量的执行内核;以及 运行时间环境,所述运行时间环境被配置为启动所述编译后的代码用于由包括所述数量的执行内核的所 述通用处理器来执行。

【技术特征摘要】
...

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

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

1
相关领域技术
  • 暂无相关专利