CN103124956B - 在异类系统中使用虚拟化编译和执行应用的方法和装置 - Google Patents
在异类系统中使用虚拟化编译和执行应用的方法和装置 Download PDFInfo
- Publication number
- CN103124956B CN103124956B CN201180046553.5A CN201180046553A CN103124956B CN 103124956 B CN103124956 B CN 103124956B CN 201180046553 A CN201180046553 A CN 201180046553A CN 103124956 B CN103124956 B CN 103124956B
- Authority
- CN
- China
- Prior art keywords
- gpu
- code
- cpu
- machine code
- fictitious order
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
提供了用于编译和执行包括中央处理单元(CPU)源代码和图形处理单元(GPU)源代码的应用的方法和装置。该装置包括:硬件设备,包括CPU和GPU;编译器,用于将GPU源代码编译为GPU虚拟指令;以及混合虚拟化块,用于通过将GPU虚拟指令翻译为GPU机器代码来执行执行文件。
Description
技术领域
本发明一般涉及用于在集成了中央处理单元(CPU)和图形处理单元(GPU)的异类系统(heterogeneous system)中以虚拟化编译和执行应用的方法和装置,更具体地,涉及用于通过在源代码编译过程中将应用的GPU源代码编译为GPU虚拟指令以及在文件执行过程中将编译的GPU虚拟指令翻译为GPU机器代码、来编译和执行应用的方法和装置。
背景技术
GPU技术的进步正给计算环境带来众多的改变。更具体地说,传统地,GPU是设计用于进行图形处理的设备,并且已经在很少使用图形内容时被用作减轻作为计算机的主要部分的CPU的过载的辅助部分。然而,随着高清晰度(HD)视频和游戏、以及现在的三维(3D)内容的广泛普及,GPU的角色得到提高。也就是说,GPU近来已经被关注,作为负责替代CPU处理大量操作以及进行图形处理的单元。
发明内容
技术问题
因此,随着GPU角色的扩展,存在着改善GPU利用效率的增长的需求。
问题的解决方案
因此,本发明被提供用来解决上述问题和/或缺点,并提供至少下述优点。
本发明的一个方面提供用于在集成了CPU和GPU的异类系统中使用虚拟化编译和执行应用的方法和装置。
本发明的另一个方面提供了方法和装置,在编译包括在应用中的源代码时,将GPU源代码编译为GPU虚拟指令,将编译的虚拟GPU命令直接翻译为GPU机器代码,导致增强的CPU和GPU利用效率。
根据本发明的一个方面,提供了用于在包括中央处理单元(CPU)和图形处理单元(GPU)的系统中编译和执行应用的方法。该方法包括:接收对 编译应用的请求,该应用包括CPU源代码和GPU源代码;响应于对编译的请求,通过将GPU源代码编译为GPU虚拟指令来生成执行文件;接收对执行所述执行文件的请求;以及响应于对执行所述执行文件的请求,通过将GPU虚拟指令翻译为GPU机器代码来执行所述执行文件。
根据本发明的另一个方面,提供了用于编译和执行包括中央处理单元(CPU)源代码和图形处理单元(GPU)源代码的应用的装置。该装置包括:硬件设备,包括CPU和GPU;编译器,用于将GPU源代码编译为GPU虚拟指令;以及混合虚拟化块,用于通过将GPU虚拟指令翻译为GPU机器代码来执行执行文件。
根据本发明的另一个方面,提供了用于编译和执行包括中央处理单元(CPU)源代码和图形处理单元(GPU)源代码的应用的装置。该装置包括:硬件设备,包括CPU和GPU;编译器,用于将GPU源代码编译为GPU虚拟指令;以及操作系统(OS),用于通过将GPU虚拟指令翻译为GPU机器代码来执行执行文件。
发明的有益效果
根据本发明的实施例的应用执行方法和装置能够同时有效地利用CPU和GPU,并且通过以GPU解决传统的实时编译方法的问题改善了GPU执行效率。
附图说明
当结合附图时,从以下详细描述中,本发明的某些实施例的上述和其他方面、优点、以及显著的特征将变得对于本领域技术人员更加清晰,其中:
图1是示出使用具有由操作系统(OS)提供的程序库(library)的GPU的系统的框图;
图2是示出使用GPU的系统的框图,其中GPU代码包含在应用程序中以便在程序运行时执行;
图3是示出开放计算语言()的应用程序执行程序的流程图;
图4示出了方法的示范性代码;
图5示出了能在程序中执行的执行文件(二进制图像);
图6是示出在和根据本发明实施例的应用执行方法之间的差别的流程图;
图7是示出根据本发明实施例的集成了CPU和GPU的异类计算系统的框图;
图8示出了根据本发明实施例的混合执行文件(二进制图像);
图9是示出根据本发明实施例的编译应用的程序的流程图;
图10是示出根据本发明实施例的由虚拟化层上的混合虚拟化块执行混合执行文件的程序的流程图;
图11示出了根据本发明实施例的具有GPU机器代码的混合执行文件;
图12是示出根据本发明实施例的由系统OS执行混合执行文件的程序的流程图;
图13是示出根据本发明实施例的系统的示图;
图14是示出根据本发明的另一个实施例的系统的示图;以及
图15是示出根据本发明的另一个实施例的系统的框图。
具体实施方式
以下,参考附图详细描述本发明的各种实施例。在下面的描述中,在描述中定义的事物被提供用来帮助对本发明的理解,本领域普通技术人员很清楚,可以对这里所描述的事物进行预定的修改或改变而不脱离本发明的范围。贯穿附图相同的参考标号被用来指代相同或相似的部分。而且,对于这里结合的熟知功能和结构的详细说明将被省略,以避免模糊本发明的主题。
在以下描述中,术语“应用”意味着原始代码或源代码在被编译之前的应用程序。例如,源代码可以是用于执行CPU操作的CPU源代码或用于执行GPU操作的GPU源代码。另外,术语“执行文件(execution file)”意味着在编译应用时由编译器生成的文件。
基本上,GPU可以以两种方式被应用(或应用程序)使用。第一种方式是用于诸如OS的系统程序,以提供应用要使用的程序库。第二种方式是将要由GPU使用的代码包括在应用中,以便GPU在程序运行时直接执行代码。
图1是示出使用具有由OS提供的程序库的GPU的常规系统的框图。
如图1中所示,该系统包括:具有应用程序的应用层;包括诸如CPU和GPU的物理处理单元的硬件层;中间件层,其插入在应用层和硬件层之间;以及OS。在图1的系统中,OS提供GPU程序库,从而应用直接调用(calls)GPU程序库来执行相应的功能。
开放图形程序库()是用于在如图1中所示的系统配置中使用的代表性的图形标准。应用程序可以调用应用编程接口(API)以便以GPU处理3D图形。API是一种标准API,利用其来开发应用。例如,代表性的基于的应用是游戏程序。然而,这类方法具有一个缺点,即只能使用提供的功能。
例如,为了使用GPU实现面部识别操作,标准的面部识别API应该以程序库的形式指定和实现在相应的系统中。然而,如果不提供用于面部识别操作的程序库,则程序开发者无法实现该操作。
图2是示出使用GPU的系统的框图,其中GPU代码包含在应用程序中以便在程序运行时执行。
类似于图1,在图2中示出的系统包括:具有应用程序的应用层;包括诸如CPU和GPU的物理处理单元的硬件层;中间件层,其插入在应用层和硬件层之间;以及OS。然而,图2中示出的系统不同于图1中示出的系统之处在于,用于驱动GPU的GPU代码是直接插入应用中的。例如,是用于在如图2中所示的系统配置中使用的代表性的图形标准。
图3是示出的应用程序执行程序的流程图。
参考图3,在步骤S305,应用程序被执行。这里,“应用被执行”的表达意味着通过编译应用而生成的执行文件被运行。
在步骤S310中,执行文件的CPU机器代码被执行。如果GPU在运行执行文件时将被使用,则在源代码级编译用于GPU的代码。在步骤S320中,作为编译结果创建的GPU机器代码被执行。在GPU机器代码执行完成之后,CPU机器代码再次在步骤S325被执行。
步骤S315中的GPU源代码编译过程更详细地示出在图3右侧的步骤S330-S365中。
具体地说,当GPU源代码编译在步骤S330中启动时,GPU机器代码通过以下步骤来生成:步骤S335中的词法-语法分析、步骤340中的预处理、步骤S345中的语法分析、步骤350中的其他分析、步骤355中的最优化、步骤360中的代码生成、以及步骤365中的GPU机器代码创建。本方法的优点在于,相应的GPU源代码可以由GPU执行而不管GPU类型(制造商)。在这种情况下,公共GPU源代码被分配,以便在运行时被编译,并以一定GPU机器代码的格式操作。
图4示出了传统的方法的示范性代码。
参考图4,应用包括可以由CPU和GPU同时执行的代码。在这种情况下,被称为“主要”的代码是由CPU执行的代码,而被称为“内核源(KernelSource)”的代码是由GPU执行的代码。
图4中示出的代码被编译,从而CPU代码部分被转换为机器代码。然而,GPU代码部分被以字符串的形式插入到执行文件中,或者存储在外部源文件中而不被编译。如上所述,当相应的应用程序被执行时,GPU源代码被编译和执行。
图5示出了能在传统的程序中执行的执行文件(二进制图像)。
参考图5,在如图2中所示的系统中使用的执行文件包括诸如首标(未示出)、CPU机器代码、以及GPU源代码的元数据,在执行文件中,包括在应用程序中的GPU代码由GPU在程序运行时来执行。
如上所述,随着GPU的角色变得越来越重要,需要一种方法用来更自由地扩展GPU的使用,以克服上述只能使用标准化API的限制。因此,本发明的一个方面提供用于有效的GPU应用使用的改进的方法。
更具体地,由于GPU源代码在程序运行时被编译,诸如的传统技术具有执行速度显著降低的缺点。编译操作包括多个中间步骤并且很复杂,因此在缺乏计算能力的嵌入式系统中导致了严重的问题。
而且,在编译GPU机器代码的过程的简化使得很难生成最优化的GPU机器代码、与GPU机器代码的最优化增加了编译操作复杂度之间存在一个平衡。而且,在诸如的传统方法中,GPU源代码510被插入执行文件的数据区域中,或者以外部脚本文件的形式存在,例如GPU源代码520,如图5中所示。GPU源代码暴露给外部导致了潜在的安全性问题。
因此,本发明的一个方面提供用于有效地利用CPU和GPU的方法和装置,并解决现有技术的前述问题。也就是说,本发明的一个方面是为了最小化由复杂的GPU编译所导致的时间延迟、防止暴露GPU源代码、以及提供能够编译的GPU机器代码而不管GPU的类型。
为了这个目的,本发明使用用于GPU操作的代码,该代码在指令级(或机器代码级)被编译,而不是在源代码级被编译。在以下描述中,在指令级被编译的GPU源代码被称为GPU虚拟指令。GPU虚拟指令是虚拟指令,而不是在实际GPU硬件上执行的机器代码。GPU虚拟指令在运行时被二进制翻译为将要执行的GPU机器代码。GPU虚拟指令还可以在所有类型的GPU硬件上执行。
因为被编译为虚拟指令,根据本发明实施例的GPU虚拟指令改进了运行时的执行速度,并且在安全性方面具有鲁棒性。
图6示出了在和根据本发明实施例的应用执行方法之间的差别。
如上所述,在中,在编译应用时排除了GPU源代码。在二进制图像的运行时期间,源代码经由词法分析、预处理、语法分析、以及最优化来编译;然后作为编译结果的GPU机器代码被执行。
然而,根据本发明的实施例,GPU源代码在指令级被编译为GPU虚拟指令。然后在执行文件的运行时期间,GPU虚拟指令被翻译为将要执行的GPU机器代码。
不同于在GPU源代码被执行时从GPU源代码执行编译过程的传统方法,根据本发明实施例的方法通过翻译已经编译和翻译为GPU机器代码的GPU虚拟命令来简化程序。
图7是示出根据本发明实施例的集成了CPU和GPU的异类计算系统的框图。
参考图7,该异类计算系统包括应用710、编译器720、以及混合虚拟化块730。应用710在应用层上操作,并且包括全部CPU源代码和GPU源代码两者。例如,这样的应用程序已经如上参考图4进行了描述。
编译器720将包括在应用710中的CPU源代码和GPU源代码编译为机器代码。这里,编译器720将CPU源代码编译为CPU机器代码,并将GPU源代码编译为GPU虚拟指令。因此,编译器720生成包括CPU机器指令和GPU虚拟指令的执行文件。在以下描述中,如上生成的执行文件被称为“混合二进制图像”。以下参考图8更详细地描述混合执行文件。
混合虚拟化块730被插入在应用层和硬件层之间以便在运行时期间检测GPU虚拟命令,并且在检测到GPU虚拟命令时将GPU虚拟指令翻译为GPU机器代码。而且,混合虚拟化块730协调应用执行过程。
在图7中示出的系统包括两个不同的OS740用于控制系统的总体操作。然而,应当注意到OS的数目不限于两个。
图8示出了根据本发明实施例的混合执行文件(二进制图像)。
参考图8,混合执行文件包括CPU机器代码和包括GPU虚拟指令的虚拟段810。这里,GPU虚拟段包括虚拟段首标820、CPU机器代码段830、以及GPU虚拟指令840。
虚拟段首标820包括用于识别虚拟段的水印以及诸如CPU和GPU执行时间的执行信息。
当CPU将要执行时,例如,因为系统没有GPU或者GPU忙于处理另一个任务,CPU机器代码段830包括将要执行的CPU机器代码。
GPU虚拟指令区域840包括将要由GPU执行的指令。GPU虚拟指令区域840包括虚拟指令首标850和虚拟指令代码860。虚拟指令首标850包括关于用于输入和输出以执行(input and output of the to execute)GPU操作的存储器和推荐处理元件(PE)的数目的信息。GPU虚拟指令代码包括将要由GPU执行的虚拟化的信息。也就是说,GPU虚拟指令代码是将要在运行时翻译为GPU机器代码的代码。
图9是示出根据本发明实施例的用于编译应用的程序的流程图。
参考图9,在步骤S910中,生成包括CPU和GPU源代码的应用。当检测到对编译应用的请求时,编译器720分别在步骤S920和S940分开编译CPU源代码和GPU源代码。
更具体地,当检测到CPU源代码时,编译器720在步骤S920中编译CPU源代码,并在步骤S930中生成可由CPU执行的CPU机器代码。而且,当检测到GPU代码时,编译器720在步骤S940中编译GPU代码,并在步骤S950中生成可由虚拟GPU执行的GPU虚拟指令。例如,GPU虚拟指令的结构如图8中所示。
编译器720在步骤S960中将创建的CPU机器代码链接到GPU虚拟指令,并在步骤S970中生成混合执行文件(二进制图像)。
如上所述,混合执行文件包括CPU机器代码和虚拟段。当执行混合执行文件时,CPU段和GPU段根据虚拟化层的协调而分开执行,如以下将参考图10所描述的。
图10是示出根据本发明实施例的在虚拟化层上由混合虚拟化块执行混合执行文件的程序的流程图。
当系统被层级地组织时,图10假设正常的OS被放在由本发明的实施例所建议的虚拟化层上。而且,混合执行文件可以被执行而无需在本发明中建 议的虚拟化层,如稍后将参考图12所描述的。
参考图10,OS利用系统就好像只有OS本身在运行一样。首先,因为混合执行文件通过OS被正常地执行,OS首先在步骤S1010中执行。在步骤S1015中,OS执行其中插入GPU虚拟指令的混合执行文件。如果虚拟段在混合执行文件的执行期间被执行,则在步骤S1020中,在CPU中发生异常(exception)。在步骤S1025中,对系统的控制被从OS移交给虚拟化层上的混合虚拟化块730。
混合虚拟化块730在步骤S1030中检查虚拟段的水印来识别虚拟段。如果没有识别到虚拟段,混合虚拟化块730在步骤S1050中执行传统的异常处理,并在步骤S1055中将系统控制移交给OS。
然而,如果在步骤S1030中识别到虚拟段,则混合虚拟化块730在步骤S1035中将GPU虚拟指令翻译为GPU机器代码。在步骤S1040中,混合虚拟化块730将翻译的GPU机器代码插入到存储器(或文件)执行区域中,如图11中所示。在步骤S1045中,混合虚拟化块730将控制移交给OS。在步骤S1070中,OS使用GPU执行相应的GPU机器代码。
如果在步骤S1020中没有发生异常,OS在步骤S1060中确定是否检测到GPU分支(branch)。如果检测到GPU分支,则OS在步骤S1070中执行GPU机器代码,否则OS在步骤S1065中执行CPU机器代码。这里,通过步骤S1060和S1070执行的GPU机器代码是在步骤S1035中翻译的GPU机器代码,并且存在于能够被执行而无需另外的翻译步骤的存储器(或文件)中。
图12是示出根据本发明实施例的由系统OS执行混合执行文件的程序的流程图。
上文中已经提供了其中虚拟化层的混合虚拟化块703运行混合执行文件的描述。下文中将参考图12描述OS运行混合执行文件而没有引入另外的虚拟化层。因为用于生成GPU虚拟指令的编译过程相同而不管是否引入虚拟化层,所以这里省略对其详细的描述。
当在步骤S1205中执行混合执行文件时,OS在步骤S1210中确定在CPU中是否发生异常。如果发生异常,OS在步骤S1215中检查虚拟段中的水印来识别虚拟段。如果没有识别到虚拟段,则OS在步骤S1235中执行传统的异常处理,并且在步骤S1240中执行CPU机器代码。
如果在步骤S1215中识别到虚拟段,OS在步骤S1220中将GPU虚拟指 令翻译为GPU机器代码,并在步骤S1225中将翻译的GPU机器代码插入到存储器(或文件)执行区域中,如图11中所示。
在步骤S1230中,OS使用GPU执行相应的机器代码。
如果在步骤S1210中没有发生异常,则OS在步骤S1245中确定是否检测到GPU分支。如果检测到GPU分支,则OS在步骤S1230中执行GPU机器代码,否则OS在步骤S1240中执行CPU机器代码。这里,通过步骤S1245和S1230执行的GPU机器代码是在步骤S1220中翻译的GPU机器代码,并且存在于能够被执行而无需另外的翻译步骤的存储器(或文件)中。
如上所述,根据本发明的实施例,GPU使用位于虚拟化层上的混合虚拟化块将GPU虚拟指令翻译为GPU机器代码。图13示出了根据本发明的这个实施例的系统。
参考图13,混合虚拟化块被包括在安排在应用层和硬件层之间的OS以下的虚拟化层1310上。使用混合虚拟化块,OS将当前执行的混合执行文件认作(recognize as)传统执行文件。也就是说,根据本发明的实施例,GPU虚拟指令可以被执行而无需修改更高的OS。
如上所述,根据本发明的另一个实施例,OS在运行时期间将GPU虚拟指令翻译为GPU机器代码。图14和图15示出了根据本发明的这个实施例的系统。
参考图14和图15,用于执行混合执行文件的混合虚拟化块被结合到OS中。例如,如图14中所示,第一OS可以是的而如图15中所示,第二OS可以是的根据本发明的这个实施例,当发生异常时,OS将GPU虚拟指令翻译为GPU机器代码。
如上所述,根据本发明的实施例的应用执行方法和装置能够通过以GPU解决传统实时编译方法的问题,有效地同时利用CPU和GPU并改进GPU执行效率。
本发明的应用执行方法和装置在GPU虚拟指令中编译包括在应用的源代码中的GPU源代码,并将编译的GPU虚拟指令翻译为GPU机器代码,由此能够通过补偿用于GPU使用的实时编译方法的问题,同时改进CPU和GPU的利用效率,以及GPU运行效率。
而且,本发明的应用执行方法和装置能够防止GPU源代码暴露给外部,从而改进了安全性。进一步,本发明的应用执行方法和装置引入对于硬件透 明的GPU虚拟指令,即,将被独立地实现而无需考虑GPU硬件制造商。
虽然在上文中已经详细描述了本发明的一定实施例,但是应当理解,由本领域技术人员看来,在这里教导的基础发明构思的许多变化和/或修改仍将落在本发明的精神和范围之内,本发明的精神和范围定义在所附权利要求及其任意等效物中。
Claims (21)
1.一种在包括中央处理单元(CPU)和图形处理单元(GPU)的系统中编译和执行应用的方法,该方法包括:
接收对编译应用的请求,该应用包括CPU源代码和GPU源代码;
响应于对编译应用的请求通过将CPU源代码编译为CPU机器代码以及将GPU源代码编译为GPU虚拟指令来生成包括CPU机器代码和GPU虚拟指令的执行文件;
接收对执行所述执行文件的请求;
响应于对执行所述执行文件的请求,将GPU虚拟指令翻译为GPU机器代码,并且将GPU机器代码插入所述执行文件;以及
执行CPU机器代码和GPU机器代码。
2.如权利要求1所述的方法,其中,所述执行文件包括虚拟段,该虚拟段包括CPU机器代码和GPU虚拟指令。
3.如权利要求2所述的方法,其中,所述虚拟段还包括虚拟段首标、CPU机器代码、以及GPU虚拟指令,该虚拟段首标具有用于识别虚拟段的水印。
4.如权利要求2所述的方法,其中,执行所述执行文件包括:
由所述系统的操作系统(OS)检测执行文件中的异常;
将系统控制移交给混合虚拟化块;
由所述混合虚拟化块识别所述虚拟段;
将GPU虚拟指令翻译为GPU机器代码;
将系统控制移交回所述OS;以及
由所述OS使用GPU执行GPU机器代码。
5.如权利要求4所述的方法,其中,所述混合虚拟化块位于应用层和硬件层之间的虚拟化层上。
6.如权利要求2所述的方法,其中,执行所述执行文件包括:
由所述系统的操作系统(OS)检测执行文件中的异常;
识别虚拟段;
将GPU虚拟指令翻译为GPU机器代码;以及
使用GPU执行GPU机器代码。
7.如权利要求1所述的方法,其中,在机器代码级格式化所述GPU虚拟指令和GPU机器代码。
8.一种用于编译和执行包括中央处理单元(CPU)源代码和图形处理单元(GPU)源代码的应用的装置,该装置包括:
硬件设备,包括CPU和GPU;
编译器,用于响应于对编译应用的请求,将CPU源代码编译为CPU机器代码,将GPU源代码编译为GPU虚拟指令,并且生成包括CPU机器代码和GPU虚拟指令的执行文件;以及
混合虚拟化块,用于响应于对执行所述执行文件的请求,将GPU虚拟指令翻译为GPU机器代码,将GPU机器代码插入所述执行文件,并且执行CPU机器代码和GPU机器代码。
9.如权利要求8所述的装置,其中,所述混合虚拟化块被插入在应用层和硬件层之间。
10.如权利要求9所述的装置,其中,所述执行文件包括虚拟段,该虚拟段包括CPU机器代码和GPU虚拟指令。
11.如权利要求10所述的装置,其中,所述虚拟段包括虚拟段首标、CPU机器代码、以及GPU虚拟指令,该虚拟段首标包括用于识别虚拟段的水印。
12.如权利要求10所述的装置,其中,所述硬件设备包括操作系统(OS),其运行所述执行文件,并将系统控制移交给混合虚拟化块。
13.如权利要求12所述的装置,其中,所述混合虚拟化块将GPU虚拟指令翻译为GPU机器代码,并将系统控制移交给OS。
14.如权利要求12所述的装置,其中,所述OS将GPU机器代码放在执行文件中,并响应于用于执行GPU虚拟指令的命令执行所述执行文件的GPU机器代码。
15.如权利要求8所述的装置,其中,在机器代码级格式化所述GPU虚拟指令和GPU机器代码。
16.一种用于编译和执行包括中央处理单元(CPU)源代码和图形处理单元(GPU)源代码的应用的装置,该装置包括:
硬件设备,包括CPU和GPU;
编译器,用于响应于对编译应用的请求,将CPU源代码编译为CPU机器代码,将GPU源代码编译为GPU虚拟指令,并且生成包括CPU机器代码和GPU虚拟指令的执行文件;以及
操作系统(OS),用于响应于对执行所述执行文件的请求,将GPU虚拟指令翻译为GPU机器代码,将GPU机器代码插入所述执行文件,并且执行CPU机器代码和GPU机器代码。
17.如权利要求16所述的装置,其中,所述执行文件包括虚拟段,该虚拟段包括CPU机器代码和GPU虚拟指令。
18.如权利要求17所述的装置,其中,所述虚拟段包括虚拟段首标、CPU机器代码、以及GPU虚拟指令,该虚拟段首标包括用于识别虚拟段的水印。
19.如权利要求18所述的装置,其中,所述OS将GPU虚拟指令翻译为GPU机器代码。
20.如权利要求19所述的装置,其中,所述OS将GPU机器代码放在执行文件中,并响应于用于执行GPU虚拟指令的命令执行所述执行文件的GPU机器代码。
21.如权利要求16所述的装置,其中,在机器代码级格式化所述GPU虚拟指令和GPU机器代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100093327A KR20120031756A (ko) | 2010-09-27 | 2010-09-27 | Cpu와 gpu를 사용하는 이종 시스템에서 가상화를 이용한 어플리케이션 컴파일 및 실행 방법 및 장치 |
KR10-2010-0093327 | 2010-09-27 | ||
PCT/KR2011/007049 WO2012044016A1 (en) | 2010-09-27 | 2011-09-26 | Method and apparatus for compiling and executing an application using virtualization in a heterogeneous system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103124956A CN103124956A (zh) | 2013-05-29 |
CN103124956B true CN103124956B (zh) | 2017-02-15 |
Family
ID=45870188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180046553.5A Expired - Fee Related CN103124956B (zh) | 2010-09-27 | 2011-09-26 | 在异类系统中使用虚拟化编译和执行应用的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9495720B2 (zh) |
EP (1) | EP2622465B1 (zh) |
JP (1) | JP6076908B2 (zh) |
KR (1) | KR20120031756A (zh) |
CN (1) | CN103124956B (zh) |
WO (1) | WO2012044016A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014038433A (ja) * | 2012-08-14 | 2014-02-27 | Nec Corp | 描画プログラム変換装置、情報処理装置、及び描画プログラム変換装置の制御方法、並びにコンピュータ・プログラム |
CN102981836B (zh) * | 2012-11-06 | 2015-08-12 | 无锡江南计算技术研究所 | 异构系统的编译方法和编译器 |
US9665921B2 (en) * | 2012-12-29 | 2017-05-30 | Futurewei Technologies, Inc. | Adaptive OpenGL 3D graphics in virtual desktop infrastructure |
US8966510B2 (en) * | 2013-02-04 | 2015-02-24 | International Business Machines Corporation | Kernel execution for hybrid systems |
CN104423994B (zh) * | 2013-09-03 | 2018-05-11 | 华为技术有限公司 | 一种代码生成方法、编译器、调度方法、装置及调度系统 |
US9971576B2 (en) * | 2013-11-20 | 2018-05-15 | Nvidia Corporation | Software development environment and method of compiling integrated source code |
US10241761B2 (en) * | 2014-12-29 | 2019-03-26 | Nvidia Corporation | System and method for compiler support for compile time customization of code |
CN107239315B (zh) | 2017-04-11 | 2019-11-15 | 赛灵思公司 | 面向神经网络异构计算平台的编程模型 |
US10657698B2 (en) * | 2017-06-22 | 2020-05-19 | Microsoft Technology Licensing, Llc | Texture value patch used in GPU-executed program sequence cross-compilation |
KR101889942B1 (ko) * | 2017-11-17 | 2018-08-20 | (주)위아데브 | 비디오 처리 유닛을 제어하는 장치 및 방법 |
US11900157B2 (en) * | 2018-09-19 | 2024-02-13 | Intel Corporation | Hybrid virtual GPU co-scheduling |
CN110443876A (zh) * | 2019-07-31 | 2019-11-12 | 新华三大数据技术有限公司 | 3d图像渲染方法及装置 |
WO2021140568A1 (ja) | 2020-01-07 | 2021-07-15 | 富士通株式会社 | 関数生成プログラム、関数生成方法、及び情報処理装置 |
US11755299B2 (en) * | 2021-06-23 | 2023-09-12 | Huawei Technologies Co., Ltd. | Method and apparatus for functional unit balancing at program compile time |
KR102405886B1 (ko) | 2022-03-17 | 2022-06-08 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101231585A (zh) * | 2007-01-26 | 2008-07-30 | 辉达公司 | 用于并行线程计算的虚拟结构和指令集 |
CN101599009A (zh) * | 2009-04-30 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器上并行执行任务的方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5794062A (en) | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US5933642A (en) * | 1995-04-17 | 1999-08-03 | Ricoh Corporation | Compiling system and method for reconfigurable computing |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6980946B2 (en) * | 2001-03-15 | 2005-12-27 | Microsoft Corporation | Method for hybrid processing of software instructions of an emulated computer system |
US20050044301A1 (en) * | 2003-08-20 | 2005-02-24 | Vasilevsky Alexander David | Method and apparatus for providing virtual computing services |
US8429629B2 (en) * | 2005-11-30 | 2013-04-23 | Red Hat, Inc. | In-kernel virtual machine for low overhead startup and low resource usage |
US20080127142A1 (en) | 2006-11-28 | 2008-05-29 | Microsoft Corporation | Compiling executable code into a less-trusted address space |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8122229B2 (en) | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8086822B2 (en) * | 2008-05-30 | 2011-12-27 | Vmware, Inc. | In-place shadow tables for virtualization |
US8436862B2 (en) | 2008-12-11 | 2013-05-07 | Nvidia Corporation | Method and system for enabling managed code-based application program to access graphics processing unit |
-
2010
- 2010-09-27 KR KR1020100093327A patent/KR20120031756A/ko not_active Application Discontinuation
-
2011
- 2011-09-26 CN CN201180046553.5A patent/CN103124956B/zh not_active Expired - Fee Related
- 2011-09-26 US US13/245,255 patent/US9495720B2/en not_active Expired - Fee Related
- 2011-09-26 EP EP11829522.9A patent/EP2622465B1/en not_active Not-in-force
- 2011-09-26 WO PCT/KR2011/007049 patent/WO2012044016A1/en active Application Filing
- 2011-09-26 JP JP2013531479A patent/JP6076908B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101231585A (zh) * | 2007-01-26 | 2008-07-30 | 辉达公司 | 用于并行线程计算的虚拟结构和指令集 |
CN101599009A (zh) * | 2009-04-30 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种异构多处理器上并行执行任务的方法 |
Non-Patent Citations (1)
Title |
---|
Analyzing CUDA Workloads Using a Detailed GPU Simulator;Ali Bakhoda等;《Analyzing CUDA Workloads Using a Detailed GPU Simulator》;20090428;第164页第3段、第166页右栏倒数第1段-第167页左栏第1段以及图1、3 * |
Also Published As
Publication number | Publication date |
---|---|
US20120075316A1 (en) | 2012-03-29 |
KR20120031756A (ko) | 2012-04-04 |
JP6076908B2 (ja) | 2017-02-08 |
US9495720B2 (en) | 2016-11-15 |
EP2622465A1 (en) | 2013-08-07 |
WO2012044016A1 (en) | 2012-04-05 |
EP2622465B1 (en) | 2019-01-09 |
JP2013543616A (ja) | 2013-12-05 |
CN103124956A (zh) | 2013-05-29 |
EP2622465A4 (en) | 2017-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103124956B (zh) | 在异类系统中使用虚拟化编译和执行应用的方法和装置 | |
US9134974B2 (en) | Source code separation and generation for heterogeneous central processing unit (CPU) computational devices | |
US9830176B2 (en) | Methods, systems, and media for binary compatible graphics support in mobile operating systems | |
EP2815313B1 (en) | Rasterization of compute shaders | |
US9817643B2 (en) | Incremental interprocedural dataflow analysis during compilation | |
US20130047155A1 (en) | Data layout transformation for workload distribution | |
KR101962484B1 (ko) | 확장 가능한 데이터 병렬 시맨틱스 | |
Loidl | Granularity in large-scale parallel functional programming | |
WO2007083613A1 (ja) | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム | |
US7757224B2 (en) | Software support for dynamically extensible processors | |
WO2012062081A1 (zh) | 一种基于字节码文件重构的Java类在线更新方法 | |
US20160077850A1 (en) | Methods, systems, and media for binary compatibility | |
US8935686B2 (en) | Error-code and exception-based function dispatch tables | |
TW201237747A (en) | Scalar integer instructions capable of execution with three registers | |
CN111190585B (zh) | 基于字节码增强技术实现java模式匹配特性的方法 | |
JP5178852B2 (ja) | 情報処理装置およびプログラム | |
US10698667B2 (en) | Compiler with type inference and target code generation | |
KR101632027B1 (ko) | 주석기반의 의사코드를 이용한 프로그램 변환 방법 및 그 방법을 구현하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체 | |
US20130254556A1 (en) | Non-transitory computer readable medium, program protection apparatus, and program protection method | |
EP3752914B1 (en) | Techniques for native runtime of hypertext markup language graphics content | |
CN113849397A (zh) | 执行引擎、虚拟机、相关装置和相关方法 | |
US9582256B2 (en) | Automated cooperative concurrency with minimal syntax | |
KR101433644B1 (ko) | Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법 | |
Hudson et al. | Data Parallel Programming for the Emerging Web | |
Parri et al. | Returning Control to the Programmer: Exposing SIMD units within interpreted languages could simplify programs and unleash floods of untapped processor power. |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 Termination date: 20200926 |