CN101963918A - 实现cpu/gpu异构平台的虚拟执行环境的方法 - Google Patents

实现cpu/gpu异构平台的虚拟执行环境的方法 Download PDF

Info

Publication number
CN101963918A
CN101963918A CN2010105195169A CN201010519516A CN101963918A CN 101963918 A CN101963918 A CN 101963918A CN 2010105195169 A CN2010105195169 A CN 2010105195169A CN 201010519516 A CN201010519516 A CN 201010519516A CN 101963918 A CN101963918 A CN 101963918A
Authority
CN
China
Prior art keywords
gpu
program
cpu
information
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010105195169A
Other languages
English (en)
Other versions
CN101963918B (zh
Inventor
管海兵
陈凯
贾昭元
董国星
章一超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN 201010519516 priority Critical patent/CN101963918B/zh
Publication of CN101963918A publication Critical patent/CN101963918A/zh
Application granted granted Critical
Publication of CN101963918B publication Critical patent/CN101963918B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

一种电信技术领域的实现CPU/GPU异构平台的虚拟执行环境的方法。利用动态二进制翻译技术使得程序运行在X86CPU和NVIDIA GPU混合架构上,并且利用动态二进制翻译技术来收集程序的静态信息和动态信息,利用这些信息寻找程序执行嵌套的循环、循环之间的依赖关系和进出热块的数据流;执行中分两阶段实施:第一阶段、收集信息和优化热块,并存储到文件中;第二阶段、生成包含串行指令和并行指令的混合程序,执行含有混合指令的程序。本发明的优点是在不修改程序源代码的情况下,利用了动态二进制翻译技术使得传统的串行程序可以运行在CPU/GPU异构多核架构上,并且可以利用GPU实现程序执行的加速。

Description

实现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状态寄存器的一致性。
所述的优化,是指:结合了动态分析和静态分析,用静态分析找到二进制程序中的循环部分,利用动态分析中获得循环的索引、循环的边界等信息,通过静态二进制分析得到程序的全局信息,而程序执行时是单路径的,得不到全局信息;静态分析也有其缺陷,因为有些信息只能在程序执行的时候获得,如条件跳转时的目的地址只能在执行的阶段获得,而且静态分析要扫描所有的执行路径,因此开销较大;动态分析是在程序执行的时候进行的,执行的路径取决于程序的输入,它获取的是程序在执行时的信息。
所述的动态二进制翻译技术,是指基于Crossbit实现了一个CPU/GPU异构平台的虚拟执行环境GXBIT,使得x86平台上程序可并行在x86CPU和NVIDIA GPU异构平台上,前端将源机器指令翻译为自行设计的中间指令块,后端将中间指令翻译为目标机器指令并执行。
所述的执行的第一阶段、收集信息和优化热块,并存储到文件中,实施步骤如下:
1读入某个二进制可执行文件,首先扫描该文件中的可执行的代码段,找出其中所有嵌套循环,将它们作为备选的热块。
2然后只执行找到的嵌套循环部分,在执行的过程中,在每个访存指令后面***额外的指令,在执行的时候,所有的访存地址都会被记录下来。在最外层的循环执行了一次以后,动态分析工具利用上述记录的访存地址信息建立多面体模型,该模型可以确定循环之间是否有依赖,如果没有依赖,则这些循环就可以被并行化在GPU上执行,并将这些循环设置为热块。
3优化器针对特定GPU架构对热块进行某些优化,最后将收集的信息和优化后的热块存储到文件中。
所述的执行的第二阶段、生成包含串行指令和并行指令的混合程序,执行含有混合指令的程序,实施步骤如下:
1第二次读入该可执行文件,并装载上一阶段收集到的信息和优化后的热块,并获取热块的入口和出口地址。
2执行整个二进制文件,当执行流进入某一个热块中时,启动并行翻译引擎,将优化后的热块翻译为GPU上可运行的并行指令。这样就生成了一个混合的二进制文件,它同时包含串行指令和并行指令。
3将上一步生成的混合指令放到CPU/GPU异构平台上执行,并且处理内存的一致性问题。
本发明目的是实现程序加速执行,在刚开始分析程序获取信息时要耗费时间,所以为了减少开销,本发明采用两阶段的执行,第一个阶段是只执行程序一部分,目的在于分析程序。在执行程序循环部分的时候,收集足够的信息以提取循环中可以并行化的部分,这个策略是基于以下的假设:在部分执行阶段可以收集到循环间依赖,内存访问等足够的信息,用CUDA SDKSample和Parboil Benchmark进行实验得到的数据可以证明这一假设的正确性。第二个阶段是执行整个程序,利用上一阶段执行所获取的信息,将循环中可以并行的部分翻译为并行指令,这样就生成了包含串行指令和并行指令的混合程序,最后执行含有混合指令的程序,性能会有很大的提高。而且由于热块中程序的执行流一般是不会改变的,因此第一阶段只需要执行一次。
本发明将所有输入流拷贝到全局内存中,将所有源寄存器和嵌套循环中的临时变量映射到GPU的寄存器中。由于CPU与GPU异步内存***,在GPU计算之前,数据先要拷贝到GPU的内存中,这部分的数据的拷贝是通过调用GPU驱动中的API来完成的。另外,GPU中内存架构包括混合cache和全局内存,不同存储层次上的数据作用不同。
本发明的优点是在不修改程序源代码的情况下,利用了动态二进制翻译技术使得传统的串行程序可以运行在CPU/GPU异构多核架构上,并且可以利用GPU实现程序执行的加速。
具体实施方式
以下对本发明的实施例作详细说明:以下实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和过程,但本发明的保护范围不限于下述的实施例。
实施例
GXBIT扩展了Crossbit原有的中间指令VINST,设计了GVINST。GVINST是一种底层的、RISC类型的指令集,它定义了无限多个32位虚拟寄存器(v0到vn)和8个双精度的浮点虚拟寄存器(f0到f7)。GVINST定义类RISC的访存指令(只有load和store才能访问内存),唯一的寻址方式是偏移量寻址。大多数GVINST指令还有一个域指定了操作数的类型。GVINST指令分为以下6大类:
1状态映射
2内存访问
3数据移动
4算术和逻辑计算
5控制转移
6特殊指令
在GVINST指令中没有使用条件码,这是因为GXBIT的中间指令设计原则是易于分析和传输,需要减少指令间依赖,因此引入了COMPARE指令来模拟X86指令中条件码的行为。这并不影响GPU计算的结果。
GXBIT具体实现的步骤如下:
第一阶段:
主要目的是从源x86二进制文件中提取流模型。
1初始化:GXBIT打开源可执行文件,读取程序头部,计算装载源映像所需的内存空间大小,用***调用mmap为源程序分配内存空间。然后读取节头部,找到.text节(.text包含程序所有的可执行的代码)的位置,其中包含程序的可执行部分。在装载完源程序后,GXBIT为源程序建立堆栈,将所有参数和环境变量压入栈中,设置合适栈顶指针。
2静态分析:静态分析器在程序执行之前扫描.text节,找出其中所有的嵌套循环。因为x86的指令格式是变长的,这里用boch中的解码函数来找到每一条x86指令。如果碰到跳转指令,会通过比较该指令的地址和跳转的目标地址判断这是不是回跳。如果是,就说明检测到一个循环,并且计算出它的嵌套层数。找到所有嵌套循环后,将它们存储在vector结构中,这些循环都是候选的热块。这里假设所有的循环都是for循环。
3profile收集:在找到所有的嵌套循环后,GXBIT开始运行源二进制程序。将每条源x86指令翻译成为若干条GVINST指令,当遇到跳转指令或者***调用时,生成一个VBlock。然后后端将VBlock翻译为目标机器代码并在本地执行。当执行到某个嵌套循环中时,在中间语言层对每个VBlock插桩,插桩是指为了收集程序运行的一些信息在嵌套循环中的每个VBlock中***若干条GVINST。在本发明中,GXBIT为了检测每个VBlock的内存访问情况,设计了一个名为MemoryAccess的VFilter,它在每条访存的GVINST后***若干指令。这样在后端代码执行的时候,就可以收集到程序运行的实时信息以供接下来的分析。
这里详细说明在动态二进制翻译中的插桩技术和上述VFilter的实现:
插桩是为了在二进制级别上监视和统计程序的行为,在二进制程序中***某些特定的指令来完成程序行为监测,如程序的内存访问情况。当程序含有这些指令时,就可以用分析工具来评估程序的性能和对监测程序的出现的错误。而动态二进制翻译中插桩是在程序运行的时候***指令,这样做的好处是不需要修改及重新编译源代码。
本发明中采取的是在中间指令层(GVINST)插桩,而没有选择在x86指令层插桩。这是因为一条x86指令可能包含多个访存操作,不能精确通过插桩来检测内存操作。而将x86指令翻译成为多条GVINST中间指令后,每条中间指令就只有一次访存操作,这样就可以精确的检测到每次访存操作。中间指令中只有LD和ST指令才能访问内存,因此只需在每个LD/ST指令前***一些指令就可以检测到所有的访存操作。当中间指令被翻译为后端目标代码,然后在运行目标代码时,就可以收集到这些访存信息。
下面举例说明VFilter的实现:
假设中间指令中有一条访问指令:LD.s32v5(0x0),v7。这条指令含义是将内存地址为v5(0x0)中一个32位数装载到虚拟寄存器v7中,虚拟寄存器v5是基址,0x0为偏移量。
则VFilter在该指令前面添加如下三条指令:
LI.s320x0,v27
ADD.s32v27,v5,v28
ST.s32v28,v0(0x800dd800)
它们的含义是:首先将偏移地址0x0存到v27中,将v27中值与v5中值相加,结果存到v28中,最后将v28中值存到一个指定内存地址,该地址是一个临时数组的地址。
在这三条中间指令翻译成为后端x86指令然后执行时,GXBIT将检测到每条GVINST的访存地址,并把这些地址存到一个临时数组中,然后建立一个map容器,该map的key是源基本块的入口地址,value是一个vector容器,该容器存储着所有被访问的内存地址。(map和vector是STL中的两个常用容器)。
4动态分析:上一步是在执行最外层嵌套循环时收集的信息,然后GXBIT利用这些信息为当前的嵌套循环建立一个多面体模型,该模型可以检测到内层循环之间是否有数据依赖,如果没有则说明当前的循环部分可以并行化并放到GPU上执行。然后将这些循环设置为真正的热块,接着再利用动态分析器得到该热块中循环索引、循环边界、矩阵大小和临时变量的地址和矩阵基址。
5优化和输出:CPU和GPU的存储体系结构是不同的。x86架构的CPU中只有8个通用寄存器,但GPU中有超过1000个寄存器。在x86架构的CPU上进行计算时,首先必须把数据从内存中拷贝到空闲的寄存器中,但在GPU中就不需要这么做了,因为GPU中有足够多的寄存器。所以这里又设计了另外一个VFilter来对VBlock进行优化,减少块中访存指令。x86中访存指令翻译到GVINST都一个固定的模式,可以根据这个模式进行优化,将某些指令替换为MOV指令,它可以在虚拟寄存器和GPU寄存器之间拷贝数据。最后将优化后VBlock及上一步获得的每个热块的出口和入口地址、循环的信息、矩阵的信息和临时变量都存储到磁盘文件当中。
第二阶段:
该阶段主要是利用上一阶段提取的流信息将源程序中计算密集部分转移到GPU上执行。
1并行的翻译模块:该模块将GVINST分别翻译为x86指令和PTX指令。该模块分为两个部分:指令选择和内存管理。因为GXBIT是在运行时翻译,复杂的指令选择算法会有很大的开销,这里使用一个比较简单的方法,即将一个GVINST翻译为多个目标指令。同样,传统的内存管理方法也会有很大开销,这里采用一个简单有效的方法,GPU上的内存分配策略如下:
(1)将循环中要计算的数据存在全局内存中。
(2)将输入和输出流存在全局内存中。
(3)将临时变量映射到GPU的特殊寄存器中。
2并行的执行模块:在为源二进制文件初始化执行环境后,GXBIT从文件中装入第一阶段生成的热块。然后在翻译基本块的时候,判断该基本块是否是热块的一部分。若不是,则将其翻译为x86指令,若不是,则装入对应优化过的块,将其交给翻译模块翻译为PTX指令,并生成ptx文件,然后执行模块调用CUDA的API将要用的数据从CPU的内存拷贝到GPU的全局内存中,并生成足够的块和线程,执行ptx文件。当GPU计算完后,将结果从GPU拷贝到CPU的内存中,继续翻译基本块,重复上述过程直到执行完成。

Claims (9)

1.一种实现CPU/GPU异构平台的虚拟执行环境的方法,其特征在于,利用动态二进制翻译技术使得程序运行在X86 CPU和NVIDIA GPU混合架构上,并且利用动态二进制翻译技术来收集程序的静态信息和动态信息,利用这些信息寻找程序执行嵌套的循环、循环之间的依赖关系和进出热块的数据流;执行中分两阶段实施:
第一阶段、收集信息和优化热块,并存储到文件中;
第二阶段、生成包含串行指令和并行指令的混合程序,执行含有混合指令的程序。
2.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,包括以下步骤:
①、首先对整个二进制程序文件进行静态分析,找到和标记出其中的嵌套循环部分;
②、然后对这部分单独执行,获得该块的控制流和数据流信息;
③、利用这些信息建立多面体模型,检测循环之间的依赖;
④、为后续生成并行指令的算法提供信息;
⑤、静态分析结束后,开始动态执行。
3.根据权利要求2所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,步骤①中所述的二进制程序中for循环进行分析、优化和并行化处理。
4.根据权利要求3所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的并行化处理,是指:CPU的执行是线性的,而GPU采用了流计算模型,要在GPU上运行传统的程序,必须改变程序的结构,将传统串行的程序转换变为流计算模型,包括将串行的指令转换为并行的指令。
5.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的并行化处理,在CPU切换到GPU时保存处理器的状态,并且在GPU的执行的时候要保持CPU状态寄存器的一致性。
6.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的优化,是指:结合了动态分析和静态分析,用静态分析找到二进制程序中的循环部分,利用动态分析中获得循环的索引、循环的边界等信息,通过静态二进制分析得到程序的全局信息,而程序执行时是单路径的,得不到全局信息;静态分析也有其缺陷,因为有些信息只能在程序执行的时候获得,如条件跳转时的目的地址只能在执行的阶段获得,而且静态分析要扫描所有的执行路径,因此开销较大;动态分析是在程序执行的时候进行的,执行的路径取决于程序的输入,它获取的是程序在执行时的信息。
7.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的动态二进制翻译技术,是指基于Crossbit实现了一个CPU/GPU异构平台的虚拟执行环境GXBIT,使得x86平台上程序可并行在x86CPU和NVIDIA GPU异构平台上,前端将源机器指令翻译为自行设计的中间指令块,后端将中间指令翻译为目标机器指令并执行。
8.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的执行的第一阶段、收集信息和优化热块,并存储到文件中,实施步骤如下:
①、读入某个二进制可执行文件,首先扫描该文件中的可执行的代码段,找出其中所有嵌套循环,将它们作为备选的热块;
②、然后只执行找到的嵌套循环部分,在执行的过程中,在每个访存指令后面***额外的指令,在执行的时候,所有的访存地址都会被记录下来;在最外层的循环执行了一次以后,动态分析工具利用上述记录的访存地址信息建立多面体模型,确定循环之间是否有依赖,如果没有依赖,则这些循环就被并行化在GPU上执行,并将这些循环设置为热块;
③、优化器针对特定GPU架构对热块进行某些优化,最后将收集的信息和优化后的热块存储到文件中。
9.根据权利要求1所述的实现CPU/GPU异构平台的虚拟执行环境的方法,其特征是,所述的执行的第二阶段、生成包含串行指令和并行指令的混合程序,执行含有混合指令的程序,实施步骤如下:
①、第二次读入该可执行文件,并装载上一阶段收集到的信息和优化后的热块,并获取热块的入口和出口地址;
②、执行整个二进制文件,当执行流进入某一个热块中时,启动并行翻译引擎,将优化后的热块翻译为GPU上可运行的并行指令,这样就生成了一个混合的二进制文件,它同时包含串行指令和并行指令;
③、将上一步生成的混合指令放到CPU/GPU异构平台上执行,并且处理内存的一致性问题。
CN 201010519516 2010-10-26 2010-10-26 实现cpu/gpu异构平台的虚拟执行环境的方法 Expired - Fee Related CN101963918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010519516 CN101963918B (zh) 2010-10-26 2010-10-26 实现cpu/gpu异构平台的虚拟执行环境的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010519516 CN101963918B (zh) 2010-10-26 2010-10-26 实现cpu/gpu异构平台的虚拟执行环境的方法

Publications (2)

Publication Number Publication Date
CN101963918A true CN101963918A (zh) 2011-02-02
CN101963918B CN101963918B (zh) 2013-05-01

Family

ID=43516799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010519516 Expired - Fee Related CN101963918B (zh) 2010-10-26 2010-10-26 实现cpu/gpu异构平台的虚拟执行环境的方法

Country Status (1)

Country Link
CN (1) CN101963918B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103294543A (zh) * 2013-06-28 2013-09-11 马骁 一种基于高速总线的数据混合处理模块及软件无线电平台
CN103593179A (zh) * 2012-08-17 2014-02-19 通用电气航空***有限责任公司 用于在并行计算环境中开发软件的方法
CN103858101A (zh) * 2011-10-03 2014-06-11 国际商业机器公司 采用解码时间指令优化连接用于增强应用二进制接口(abi)的代码
CN103942082A (zh) * 2014-04-02 2014-07-23 南阳理工学院 一种消除冗余的内存访问操作的编译优化方法
CN103955394A (zh) * 2014-04-03 2014-07-30 北京大学 一种基于推迟提交的gpu虚拟化优化方法
CN105511867A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN105677436A (zh) * 2015-12-31 2016-06-15 华为技术有限公司 程序转换方法、处理器及计算机***
CN105740036A (zh) * 2014-12-29 2016-07-06 辉达公司 用于支持代码的编译时间定制的编译器的***和方法
CN105892931A (zh) * 2014-05-16 2016-08-24 上海京知信息科技有限公司 一种支持基于智能闪存缓存的异构cpu-gpu***架构的操作***原型
CN106030558A (zh) * 2014-03-26 2016-10-12 英特尔公司 用于处理器的协同设计动态语言加速器
CN106407006A (zh) * 2016-08-31 2017-02-15 上海交通大学 一种基于Whippletree模型的GPU动态任务分配方法
CN108072895A (zh) * 2016-11-09 2018-05-25 中国石油化工股份有限公司 一种基于gpu的各向异性叠前逆时偏移优化方法
CN108197027A (zh) * 2017-12-29 2018-06-22 广州景派科技有限公司 软件性能优化方法、可存储介质、计算机、计算机程序
CN109936674A (zh) * 2017-11-22 2019-06-25 柯尼卡美能达株式会社 图像形成装置以及储存有程序的计算机可读取的记录介质
CN110083469A (zh) * 2019-05-11 2019-08-02 肖银皓 一种异构硬件组织运行统一内核方法及***
CN111124594A (zh) * 2018-10-31 2020-05-08 杭州海康威视数字技术股份有限公司 容器运行方法、装置、异构gpu服务器及容器集群***
CN112083956A (zh) * 2020-09-15 2020-12-15 哈尔滨工业大学 一种面向异构平台的复杂指针数据结构自动管理***
WO2021238462A1 (zh) * 2020-05-28 2021-12-02 华为技术有限公司 一种检测内存乱序的方法及装置
CN115114003A (zh) * 2022-07-04 2022-09-27 上海交通大学 Gpu动态多任务可控并发执行方法及***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HUIHUI SHI等: "An Intermediate Language Level Optimization Framework for Dynamic Binary Translation", 《ACM SIGPLAN NOTICES ARCHIVE》 *
JINGHUI GU等: "The Implementation of Static-Integrated Optimization Framework for Dynamic Binary Translation", 《INFORMATION TECHNOLOGY AND COMPUTER SCIENCE, 2009. ITCS 2009. INTERNATIONAL CONFERENCE ON》 *
YI YANG等: "A GPGPU Compiler for Memory Optimization and Parallelism Management", 《ACM SIGPLAN NOTICES - PLDI "10》 *

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103858101B (zh) * 2011-10-03 2016-10-26 国际商业机器公司 代码处理方法和代码处理***
CN103858101A (zh) * 2011-10-03 2014-06-11 国际商业机器公司 采用解码时间指令优化连接用于增强应用二进制接口(abi)的代码
CN103593179A (zh) * 2012-08-17 2014-02-19 通用电气航空***有限责任公司 用于在并行计算环境中开发软件的方法
CN103294543B (zh) * 2013-06-28 2016-08-10 马骁 一种基于高速总线的数据混合处理模块及软件无线电平台
CN103294543A (zh) * 2013-06-28 2013-09-11 马骁 一种基于高速总线的数据混合处理模块及软件无线电平台
CN106030558B (zh) * 2014-03-26 2019-10-11 英特尔公司 用于处理器的协同设计动态语言加速器
CN106030558A (zh) * 2014-03-26 2016-10-12 英特尔公司 用于处理器的协同设计动态语言加速器
CN103942082A (zh) * 2014-04-02 2014-07-23 南阳理工学院 一种消除冗余的内存访问操作的编译优化方法
CN103942082B (zh) * 2014-04-02 2017-03-29 南阳理工学院 一种消除冗余的内存访问操作的编译优化方法
CN103955394A (zh) * 2014-04-03 2014-07-30 北京大学 一种基于推迟提交的gpu虚拟化优化方法
CN103955394B (zh) * 2014-04-03 2017-05-17 北京大学 一种基于推迟提交的gpu虚拟化优化方法
CN105892931A (zh) * 2014-05-16 2016-08-24 上海京知信息科技有限公司 一种支持基于智能闪存缓存的异构cpu-gpu***架构的操作***原型
US10241761B2 (en) 2014-12-29 2019-03-26 Nvidia Corporation System and method for compiler support for compile time customization of code
CN105740036A (zh) * 2014-12-29 2016-07-06 辉达公司 用于支持代码的编译时间定制的编译器的***和方法
CN105740036B (zh) * 2014-12-29 2019-04-23 辉达公司 用于支持代码的编译时间定制的编译器的***和方法
CN105511867A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN105511867B (zh) * 2015-11-30 2019-04-23 华为技术有限公司 一种优化模式自动生成方法及优化装置
CN105677436B (zh) * 2015-12-31 2019-04-05 华为技术有限公司 程序转换方法、处理器及计算机***
CN105677436A (zh) * 2015-12-31 2016-06-15 华为技术有限公司 程序转换方法、处理器及计算机***
CN106407006A (zh) * 2016-08-31 2017-02-15 上海交通大学 一种基于Whippletree模型的GPU动态任务分配方法
CN108072895A (zh) * 2016-11-09 2018-05-25 中国石油化工股份有限公司 一种基于gpu的各向异性叠前逆时偏移优化方法
CN109936674A (zh) * 2017-11-22 2019-06-25 柯尼卡美能达株式会社 图像形成装置以及储存有程序的计算机可读取的记录介质
CN108197027A (zh) * 2017-12-29 2018-06-22 广州景派科技有限公司 软件性能优化方法、可存储介质、计算机、计算机程序
CN111124594A (zh) * 2018-10-31 2020-05-08 杭州海康威视数字技术股份有限公司 容器运行方法、装置、异构gpu服务器及容器集群***
CN111124594B (zh) * 2018-10-31 2023-04-07 杭州海康威视数字技术股份有限公司 容器运行方法、装置、异构gpu服务器及容器集群***
CN110083469A (zh) * 2019-05-11 2019-08-02 肖银皓 一种异构硬件组织运行统一内核方法及***
CN110083469B (zh) * 2019-05-11 2021-06-04 广东财经大学 一种异构硬件组织运行统一内核方法及***
WO2021238462A1 (zh) * 2020-05-28 2021-12-02 华为技术有限公司 一种检测内存乱序的方法及装置
CN113742252A (zh) * 2020-05-28 2021-12-03 华为技术有限公司 一种检测内存乱序的方法及装置
CN113742252B (zh) * 2020-05-28 2024-03-29 华为技术有限公司 一种检测内存乱序的方法及装置
CN112083956A (zh) * 2020-09-15 2020-12-15 哈尔滨工业大学 一种面向异构平台的复杂指针数据结构自动管理***
CN115114003A (zh) * 2022-07-04 2022-09-27 上海交通大学 Gpu动态多任务可控并发执行方法及***
CN115114003B (zh) * 2022-07-04 2024-05-28 上海交通大学 Gpu动态多任务可控并发执行方法及***

Also Published As

Publication number Publication date
CN101963918B (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
CN101963918B (zh) 实现cpu/gpu异构平台的虚拟执行环境的方法
KR101559090B1 (ko) 이종 코어를 위한 자동 커널 마이그레이션
Mikushin et al. KernelGen--The Design and Implementation of a Next Generation Compiler Platform for Accelerating Numerical Models on GPUs
CN101937343A (zh) 异构多核虚拟执行环境的后端翻译框架实现的方法
Rauchwerger Run-time parallelization: Its time has come
Diamos et al. Translating GPU binaries to tiered SIMD architectures with Ocelot
Munk et al. Acotes project: Advanced compiler technologies for embedded streaming
Aditya et al. Elcor's machine description system: Version 3.0
Metcalf The seven ages of fortran
CN107038019A (zh) 单指令多数据计算***中处理指令的方法及计算***
Popov et al. Piecewise holistic autotuning of compiler and runtime parameters
Moreira et al. Function call re-vectorization
CN114546411A (zh) 面向栈式浮点架构使用规则翻译的动态二进制翻译方法
Blockhaus et al. A Framework for Adaptive Reprogramming Using a JIT-Compiled Domain Specific Language for Query Execution
Dong et al. A Translation Framework for Virtual Execution Environment on CPU/GPU Architecture
Fernandes A clustered VLIW architecture based on queue register files
Jacob Opportunistic acceleration of array-centric Python computation in heterogeneous environments
Kong et al. Research on control flow conversion technique based on Domestic Sunway compiler
Diamos Harmony: an execution model for heterogeneous systems
Arvind et al. A multithreaded substrate and compilation model for the implicitly parallel language pH
Sedaghati Mokhtari Performance optimization of memory-bound programs on data parallel accelerators
Albert et al. SuperStack: Superoptimization of Stack-Bytecode via Greedy, Constraint-Based, and SAT Techniques
Gellerich et al. Massively parallel programming languages: a classification of design approaches
Qiu et al. Optimization of Tensor Operation in Compiler
Júnior Efficient Execution of Microscopy Image Analysis on Distributed Memory Hybrid Machines

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130501