[发明专利]实现CPU/GPU异构平台的虚拟执行环境的方法有效
| 申请号: | 201010519516.9 | 申请日: | 2010-10-26 |
| 公开(公告)号: | CN101963918A | 公开(公告)日: | 2011-02-02 |
| 发明(设计)人: | 管海兵;陈凯;贾昭元;董国星;章一超 | 申请(专利权)人: | 上海交通大学 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F15/16 |
| 代理公司: | 上海交达专利事务所 31201 | 代理人: | 王锡麟;王桂忠 |
| 地址: | 200240 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 实现 cpu gpu 平台 虚拟 执行 环境 方法 | ||
技术领域
本发明涉及的是一种电信技术领域的方法,特别是一种实现CPU/GPU异构平台的虚拟执行环境的方法。
背景技术
多核技术是目前处理器发展的趋势,但是通过纯粹增加CPU内核的数量来提升处理器的并行处理性能存在一定的极限。因此为了满足日益增长的计算需求,引入了针对某些特定计算类型涉及的处理核,就形成了异构多核体系结构,针对特定的领域,异构核可以弥补传统CPU计算的不足,而CPU/GPU就是近年来发展较快一种异构多核架构。GPU(图形加速单元)适用于处理大量计算密集型的任务,诸如图像和多媒体处理等。由于它本身独特的并行架构设计,使得它在很多时候可以比传统的x86处理器有更好的性能。可以将可并行的高密度浮点计算放在GPU上执行,而CPU则执行传统处理器的主要任务,如运行操作系统。因此针对GPU这种硬件的特定的编程环境已经成为目前学术界和企业界研究的热点。NVIDIA推出的CUDA就是这样一个编程环境,它使得程序员可以充分利用GPU的功能来进行编程,它为程序开发人员提供了C语言的编程模式的API和SDK,但是对于程序开发人员来讲,用CUDA编程依旧是很复杂的。这种特定的编程环境虽然可以利用GPU的性能,但该方法主要存在着两个问题:
1、代码重写代价问题:由于CPU上的程序无法直接在GPU上运行,需要按照并行模型修改或重写源代码,目前有大量计算密集型程序是用通用的C/C++开发的,这样移植CPU上的程序就是耗时长,工作量极大的任务。而且很多程序的源代码是难以获得的。
2、二进制兼容性问题:特定的编程环境会带来兼容性的问题,由于不同硬件的存储系统以及处理器核心数目的的差异,编译后的程序在不同GPU产品上,有的甚至在同GPU的不同代产品上也不兼容。
由于以上不足之处,针对GPU的程序自动并行技术是一个比较好的方法。由于X86架构上的程序是串行执行的,要使其运行在GPU上,就必须将其转化为并行的程序。自动并行技术就是将用户编写的串行程序通过并行编译器编译,自动生成适合在并行计算机体系结构上运行的代码。其中基于多面体模型的自动并行技术是目前应用比较多的,它可以将可执行代码映射到多个核上面。目前基于多面体模型的技术主要用在编译时的优化方面,尽管这在一定程度上减少了开发人员为使程序并行化重写代码的工作量,但是它是源代码到源代码的转换,没有从根本上解决异构核上程序设计问题。比如针对NVIDIA的GPU,在调用主机端函数或使用指针的时候会有些限制,仍然需要程序员去手动修改一些C/C++代码。另外,它并不能解决二进制程序的兼容性问题。
发明内容
本发明的目的在于针对现有技术的不足,提供一种实现CPU/GPU异构平台的虚拟执行环境的方法。本发明的虚拟执行环境GXBIT,在不用修改源代码的前提下,使得现有的由串行语言编译好的程序可以直接运行在GPU/CPU异构平台上,并且可以利用GPU来实现程序的加速执行。
本发明是通过以下技术方案实现的:
本发明利用动态二进制翻译技术使得程序运行在X86CPU和NVIDIA GPU混合架构上,并且利用动态二进制翻译技术来收集程序的静态信息和动态信息,利用这些信息寻找程序执行嵌套的循环、循环之间的依赖关系和进出热块的数据流;执行中分两阶段实施:
第一阶段、收集信息和优化热块,并存储到文件中;
第二阶段、生成包含串行指令和并行指令的混合程序,执行含有混合指令的程序。
本发明包括以下步骤:
①、首先对整个二进制程序文件进行静态分析,找到和标记出其中的嵌套循环部分;
②、然后对这部分单独执行,获得该块的控制流和数据流信息;
③、利用这些信息建立多面体模型,检测循环之间的依赖;
④、为后续生成并行指令的算法提供信息;
⑤、静态分析结束后,开始动态执行。
步骤①中所述的二进制程序中for循环进行分析、优化和并行化处理。
所述的并行化处理,是指:CPU的执行是线性的,而GPU采用了流计算模型,要在GPU上运行传统的程序,必须改变程序的结构,将传统串行的程序转换变为流计算模型,包括将串行的指令转换为并行的指令。
所述的并行化处理的一个基本原则是:保持原有程序运行的正确性。即必须要保证并行化以后的程序中的数据流和控制流和原来在CPU上的串行程序是一样的。因此在CPU切换到GPU时保存处理器的状态,并且在GPU的执行的时候要保持CPU状态寄存器的一致性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010519516.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数字化课堂教学系统
- 下一篇:一种遥控电子设备的控制检测方法和一种遥控器





