JP6076908B2 - Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置 - Google Patents

Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置 Download PDF

Info

Publication number
JP6076908B2
JP6076908B2 JP2013531479A JP2013531479A JP6076908B2 JP 6076908 B2 JP6076908 B2 JP 6076908B2 JP 2013531479 A JP2013531479 A JP 2013531479A JP 2013531479 A JP2013531479 A JP 2013531479A JP 6076908 B2 JP6076908 B2 JP 6076908B2
Authority
JP
Japan
Prior art keywords
gpu
machine language
executing
cpu
compiling
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
Application number
JP2013531479A
Other languages
English (en)
Other versions
JP2013543616A (ja
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2013543616A publication Critical patent/JP2013543616A/ja
Application granted granted Critical
Publication of JP6076908B2 publication Critical patent/JP6076908B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General 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)

Description

本発明は、CPU(Central Processing Unit)とGPU(Graphic Processing Unit)を融合して使用する異種システムにおいて仮想化(Virtualization)を用いたアプリケーションのコンパイル及び実行方法、及び装置に関するものである。より具体的に本発明はアプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたGPU(Graphic Processing Unit)ソースコードをGPU仮想命令語(instruction)にコンパイルし、実行ファイル実行の時、上記コンパイルされたGPU仮想命令語をGPU機械語(GPU Machine Code)に直接変換するアプリケーションのコンパイル及び実行に対する方法、及び装置に関するものである。
最近仮想化(Virtualization)技法を使用して異機種のオペレーティングシステム(Operating system、 OS)を1つのシステムで動作させたり保安ソフトウェアと非保安ソフトウェアを区分してシステムクラッキングに対する保安機能を付加する方法が提案されている。
これに関連してグラフィック処理装置(Graphic Processing Unit、GPU)がコンピューター使用者の日常に変化をもたらしている。GPUはグラフィック演算を遂行する装置として映像コンテンツ利用量が少なかった過去にはコンピューター核心部品である中央処理装置(CPU)の過負荷を防止する補助部品程度に認識された。
しかし、最近には高解像度(HD)映画やゲーム、3D映像物等の需要が高くなりながら GPUの重要性が大きくなっている。また、GPUはグラフィック処理のみならずCPUの代わりを高用量演算を担当する装置としても脚光を浴びている。
このようにGPUが重要な役目を遂行しながらより效率的にGPUを活用する方法に対する論議が必要な実情である。
本発明は、上記のような必要性を満足させるために案出されたものとして、CPUとGPUを融合して使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置を提供することを目的とする。
より具体的に本発明はアプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたGPUソースコードをGPU仮想命令語にコンパイルし、 実行ファイル実行の時、 上記コンパイルされたGPU仮想命令語をGPU機械語に直接変換して CPUとGPUを效率的に使用することができる方法及び装置を提供することを目的とする。
上記のような問題点を解決するための本発明のCPU(Central Processing Unit)とGPU(Graphic Processing Unit)を使用するシステムでアプリケーションのコンパイル及び実行方法は、CPUソースコードとGPUソースコードを含むアプリケーションに対するコンパイル遂行要請を受信する段階、 上記アプリケーションのコンパイルの時、上記GPUソースコードをGPU仮想命令語にコンパイルして実行ファイルを生成する段階及び上記実行ファイルに対する実行要請受信の時、上記GPU仮想命令語をGPU機械語に変換(Translation)して実行する段階を含むことを特徴とする。
また、上記のような問題点を解決するための本発明のアプリケーションのコンパイル及び実行装置はCPU(Central Processing Unit)とGPU(Graphic Processing Unit)を含むハードウェア、CPUソースコードとGPUソースコードを含むアプリケーション、 上記アプリケーションに対するコンパイル遂行要請受信の時、 上記GPUソースコードをGPU仮想命令語にコンパイルして実行ファイルを生成するコンパイラー、及びアプリケーション階層とハードウェア階層の間に位置し、 上記実行ファイルに対する実行要請受信の時、上記GPU仮想命令語をGPU機械語に変換(Translation)して実行するハイブリッド仮想化ブロックを含むことを特徴とする。
また、本発明の他の実施例によるアプリケーションのコンパイル及び実行装置はCPU(Central Processing Unit)とGPU(Graphic Processing Unit)を含むハードウェア、 CPUソースコードとGPUソースコードを含むアプリケーション、上記アプリケーションに対するコンパイル遂行要請受信の時、上記GPUソースコードをGPU仮想命令語にコンパイルして実行ファイルを生成するコンパイラー及び上記実行ファイルに対する実行要請受信の時、上記GPU仮想命令語をGPU機械語に変換(TranSlation)して実行するオペレーティングシステム(Operating SyStem、OS)を含むことを特徴とする。
本発明によれば、 アプリケーションに含まれたソースコードコンパイルの時、上記ソースコードに含まれたGPUソースコードをGPU仮想命令語にコンパイルし、 実行ファイル実行の時、上記コンパイルされたGPU仮想命令語をGPU機械語に直接変換(Translation)する。これによってCPUとGPUを同時に效率的に使用することができ、 GPU使用のためのリアルタイムコンパイル方式の問題点を補ってGPU実行效率を向上させることができる。また、本発明によれば、GPUソースコードが外部で露出されないので保安性が向上された。そして本発明で提案するGPU仮想命令語はハードウェアに中立的な命令語としてGPUハードウェアを製造する製造社にかかわらず独立的に動作することができる。
システムプログラム(OS)でライブラリを提供してGPUを使用する方法に対するシステム構造を示す図面である。 GPUを使用するコードを応用プログラムに含ませてプログラム実行時間(ru ntime)にGPUで実行する方法を使用するシステム構造を示す図面である。 「OpenCL」の応用プログラム実行過程を示すフローチャートである。 「OpenCL」方式を適用したコード例題を示す図面である。 「OpenCL」過程を遂行することができる実行ファイル(Binary Image)構造を示す図面である。 「OpenCL」と本発明によるアプリケーションの実行方法の差異点を比較する図面である。 本発明の実施例によってCPUとGPUを使用する異種コンピュータシステム構造を示す図面である。 本発明の実施例によるハイブリッド実行ファイル(Hybrid Binary Image)の構造を示す図面である。 本発明の実施例による、アプリケーションのコンパイル過程を示すフローチャートである。 本発明の実施例によって、仮想化階層(Virtualization Layer)のハイブリッド仮想化ブロック730がハイブリッド実行ファイルを実行する過程を示すフローチャートである。 GPU機械語が挿入されたハイブリッド実行ファイルの構造を示す図面である。 本発明の実施例によってさらにシステムOSがハイブリッド実行ファイルを実行する過程を示すフローチャートである。 本発明の第1実施例によるシステム構造を示す図面である。 本発明の第2実施例によるシステム構造を示す図面である。 本発明の第2実施例によるシステム構造を示す図面である
以下で述べるアプリケーションとは、コンパイルされる以前の原始コード又はソースコード(Source Code)を含む応用プログラムを意味する。この場合、上記ソースコードはCPU演算を実行させるためのCPUソースコード又はGPU演算を実行させるためのGPUソースコードを含むことができる。
また、本発明の実行ファイルとは、コンパイラー(Compiler)によって上記アプリケーションがコンパイルされ生成されたファイルを意味する。
以下、添付された図面を参照して本発明の好ましい実施例を詳しく説明する。この時、 添付された図面で同一の構成要素はできるだけ同一の番号を付けることに留意すべきである。なお、本発明の要旨を濁すことができる公知機能及び構成に対する詳細な説明は省略であろう。
アプリケーション(又は、応用プログラム)でGPUを使用する方法には2つの方法が存在することができる。まず、第1の方法はOSのようなシステムプログラムでライブラリを提供し、上記ライブラリをアプリケーションが呼出して使用する方法である。そして第2の方法はGPUを使用するためのコードをアプリケーションに含ませてプログラム実行時間(runtime)にGPUで直接実行する方法である。
図1は、システムプログラム(OS)でライブラリを提供してGPUを使用する方法に対するシステム構造を示す図面である。
図1によるシステムは大きく、実際応用プログラムを含むアプリケーション階層(Application Layer)、 CPU又はGPUのような物理的なプロセッシングユニットを含むハードウェア階層(Hardware Layer)、上記アプリケーション階層とハードウェア階層の間に位置するミドルウェア階層(Middleware Layer)、及びオペレーティングシステム(Operating system、 OS)に区分されることができる。このようなシステムによればOSでGPUライブラリを提供し、アプリケーションが上記GPUライブラリを直接呼出して当該の機能を遂行する。
上記図1と同様の方法を遂行する代表的なシステムとして「OpenGL」を例示することができる。「OpenGL」は応用プログラムが3Dグラフィックを使用するためにOpenGL API(Application Programming Interface、関数)を呼出する方式でGPUを使用する。 OpenGL APIは標準に指定されており、応用プログラムはこの標準によって開発される。代表的な例はOpenGLを用いたゲームプログラムを挙げることができる。しかし、このような方式は標準で提供された機能だけ使用することができるという短所がある。
例えば、顔面認識演算のためにGPUを使用しようとすれば顔面認識に対するAPIが標準に指定されており、 これが当該のシステムにライブラリに具現されていなければならない。もし、顔認識演算のためのライブラリが具現されていない場合、プログラム開発者はこのような演算を遂行することができないという問題点がある。
一方、 図2はGPUを使用するコードを応用プログラムに含ませてプログラム実行時間(runtime)にGPUで実行する方法を使用するシステム構造を示す図面である。
同様に図2によるシステムは大きく、実際応用プログラムを含むアプリケーション階層、 CPU又はGPUのような物理的なプロセッシングユニットを含むハードウェア階層、 上記アプリケーション階層とハードウェア階層の間に位置するミドルウェア階層、 システムを運営するオペレーティングシステムに区分されることができる。ただ、 図2のシステムと図1のシステムとの相異点はGPUを動作させるためのGPUコードがアプリケーションに直接挿入されるということである。
上記図2と同様の方法を使用する代表的なシステムとして「OpenGL」を挙げることができる。「OpenGL」に対する具体的な説明は下記の図3を参考して説明する。
図3は「OpenGL」の応用プログラム実行過程を示すフローチャートである。
図3に示すように、応用プログラム、すなわちアプリケーションがS305段階で実行される。ここで実行とはアプリケーションがコンパイル(Compile)されて生成された実行ファイルを実行(run)する意味として使用されることができる。
アプリケーション実行後、S310段階で実行ファイルにあるCPU機械語(CPU Machine Code)が実行される。そして実行ファイルの実行が進行されながら、GPUを使用すべき場合はS315段階のように、明示的にGPUを使用するためのソースコード(Source Code)レベルのコードをコンパイルするようになる。そしてS320段階で、上記コンパイル結果、生成されたGPU機械語(Machine Code)を実行する。そしてGPU機械語の実行が完了されればS325段階で、さらにCPU機械語実行を遂行する。
一方、S315段階に示すようにGPUソースコードは実行時間(runtime)にコンパイルするようになり、具体的な過程は図3の右側に示すフローチャートのようである。
すなわち、S330段階でGPUソースコードコンパイルが開示されれば、S335段階の語彙分析段階(lexical-syntax analysis)、S340段階の先処理段階(PreproceSsing)、S345段階の構文分析段階(Syntax Analysis)、S350段階の分析段階(Analysis)、 S355段階の最適化段階(Optimization)、S360段階のコード生成段階(Code Generation)を経て S365段階でGPU機械語が生成される。
上記方法の長所はGPU種類(製造社等)に構わずに、すべてのGPUに対して当該のGPUソースコードを実行することができるということである。すなわち、この場合には共通的なGPUソースコードを配布して実行時間(runtime)にコンパイルされて特定 GPU機械語で動作するようになる。
以下では「OpenGL」方式を適用したコード例題を通じて「OpenGL」を説明する。
図4は「OpenGL」方式を適用したコード例題を示す図面である。
上記図4に示すアプリケーションはCPUとGPUで動作するためのコードを同時に有するようになる。この場合、「main」で表示されるコードが一般的にCPUで動作するコードであり、「KernelSource」に表示されるコードがGPUで動作するコードである。
図4に示すコードをコンパイルするようになるとCPUコード部分は機械語(Machine Code)に変換される。しかし、GPUコード部分はコンパイルされなくそのまま実行ファイルに文字列に挿入されたり外部ソースファイルに貯蔵される。上記のように、GPUソースコードは当該の応用プログラムが実行される際、コンパイルされ実行される。
このように、「OpenGL」過程を遂行することができる実行ファイル(Binary Image)構造が図5に示す。
図2のシステム、すなわちGPUを使用するコードを応用プログラムに含ませてプログラム実行時間(runtime)にGPUで実行するシステムで使用する実行ファイルはヘッダーのようなメタデータ(図示せず)、CPU機械語及びGPUソースコードを含む。この場合、上記GPUソースコードは実行ファイルのデータ領域に挿入510されたり、又は実行ファイルと独立的な外部スクリプトソースファイル形式で参照520されることができる。
上記では応用プログラムでGPUを使用する2つの方法に対して説明した。
ところが、最近GPU機能が重要な役目を遂行することによって標準化されたAPIだけ使用してGPUを使用する上記の第1方法から脱して自由にGPUを使用する方法に対する重要性が浮き彫りにされている 。これによって、本発明ではアプリケーションがGPUを活用する方法に対して提案しようとする。
より具体的に説明すれば、「OpenGL」のような技術の問題点は実行時間(runtime)にGPUソースコードに対するコンパイルを遂行するから、実行速度が顕著に落ちるということである。コンパイル作業は中間過程が多くて複雑で計算パワー(Computing Power)が相対的に不足なエンベデッドシステム(embedded)には致命的な問題点として作用することができる。
ここで、GPUソースコードに対するコンパイル過程を単純化すれば、 最適化されたGPU機械語を生成し難く、反対にGPU機械語最適化のためにはコンパイル演算量が増加するようになる矛盾した状況が発生する。また、「OpenGL」のような方式はGPUソースコードが図5に示すように、 実行ファイルのデータ領域に挿入されたり又は外部スクリプトファイル形式で存在するようになる。したがって、GPUソースコードが外部にそのまま露出して保安に脆弱であるという問題がある。
本発明は上記のような問題点を解決し、 CPU及びGPUを效率的に使用することができる方法及び装置を提供する。すなわち、 本発明は時間がたくさん所要されて複雑なGPUコンパイル過程を最小化し、保安に問題になったGPUソースコード露出を制御し、特定GPUだけでなくすべての種類のGPUで実行可能なコンパイルされた仮想のGPU機械語を提供することをその目的とする。
これを解決するため、本発明ではGPU動作のためにソースコードレベル(Source Code Level)ではない命令語レベル(Instruction Level)(又は、 機械語レベル、 Machine Code Level)にコンパイルされたコードを使用する。本発明ではGPUソースコードが命令語レベルにコンパイルされたことをGPU仮想命令語(GPU Virtual Instruction)と名付ける事にする。上記GPU仮想命令語は実際GPUハードウェアで動作する機械語ではない仮想の命令語である。上記GPU仮想命令語は実行時間(runtime)にGPU機械語(GPU Machine Code)でリアルタイム変換(Binary TranSlation)されて実行される。また、上記GPU仮想命令語は特定GPUハードウェアでばかり動作するのではなく、すべての種類のGPUハードウェアで動作することができる。
本発明によるGPU仮想命令語はコンパイルの時、仮想の命令語にコンパイルされるから実行時間(runtime)に遂行速度が早く保安にも強いという長所を有する。
図6は 「OpenGL」と本発明によるアプリケーションの実行方法の差異を比較する図面である。
上記のように「OpenGL」によればGPUソースコードはアプリケーションのコンパイルの時、別にコンパイルされない。代わり、実行ファイル(Binary Image)の実行時間(runtime)の間、GPUソースコードが語彙分析段階、先-処理段階、構文分析段階、最適化段階、コード生成段階等を経てコンパイルされ、上記コンパイル結果生成されるGPU機械語が実行された。
しかし、本発明ではアプリケーションのコンパイルの時、GPUソースコードは命令語レベル(instruction level)であるGPU仮想命令語でコンパイルされる。そして実行ファイルの実行時間(runtime)の間、上記GPU仮想命令語がGPU機械語に変換(Translation)され、上記変換されたGPU機械語が実行される。
すなわち、GPUソースコードが実行すべき時点で、従来方法はGPUソースコードからコンパイルする過程を経なければならないが、 本発明の実施例によれば予めコンパイルされたGPU仮想命令語が単純にGPU機械語に変換される過程だけ進行する。
以下では本発明の実施例によるシステム構造及び動作手順を添付された図面を参考して詳細に説明する。
図7は本発明の実施例によってCPUとGPUを使用する異種コンピュータシステム構造を示す図面である。図7に示すように、本発明の異種コンピュータシステムはアプリケーション710、コンパイラー720、ハイブリッド仮想化ブロック730を含むことができる。
アプリケーション710はアプリケーション階層に位置し、 CPUソースコードとGPUソースコードを共に含む応用プログラムである。このような応用プログラムの例題を図 4に示した事がある。
コンパイラー(Compiler)720はアプリケーション710に含まれたCPU ソースコードとGPUソースコードを機械語(Machine Code)にコンパイルする。この場合、コンパイラー720はCPUソースコードの場合、上記CPUソースコードをCPU機械語にすぐコンパイルするが、GPUソースコードの場合には、上記GPUソースコードを本発明で提案するGPU仮想命令語(GPU Virtual Instruction)にコンパイルする。そして上記コンパイラー720は上記CPU機械語及び GPU仮想命令語を含む実行ファイルを生成する。以下では上記のような過程によって生成された実行ファイルをハイブリッド実行ファイル(Hybrid Binary Image)だと名付けることにする。上記ハイブリッド実行ファイルに対する具体的な構造は図8で後述するようにする。
ハイブリッド仮想化(Hybrid Virtualization)ブロック730はアプリケーション階層(Application Layer)とハードウェア階層(Hardware Layer)の間の仮想化階層(Virtualization Layer)に位置して実行時間(runtime)にGPU仮想命令語を感知し、感知の時、上記GPU仮想命令語をGPU機械語に変換(TranSlation)する。だけでなく、 上記ハイブリッド仮想化ブロック730はアプリケーションの実行全般過程を調律する。
オペレーティングシステム740は少なくとも1つ以上の互いに異なる種類のオペレーティングシステムを含むことができ、システムの全般的な動作を制御する。
図8は本発明の実施例によるハイブリッド実行ファイル(Hybrid Binary Image)の構造を示す図面である。ハイブリッド実行ファイルは従来システムとの互換性のために実行イメージ(Binary Image)の形式による。
図8に示すように、ハイブリッド実行ファイルはCPU機械語(CPU Machine Code)と、GPU仮想命令語を含む仮想セクション(Virtual Section)810を含むことができる。ここでGPU仮想セクションはさらに仮想セクションヘッダー820、CPU機械語830、GPU仮想命令語840を含むことができる。
上記仮想セクションヘッダー820は当該のセクションが仮想セクションなのかを識別するウォーターマーク(water-mark)と、CPU又はGPU実行時間などに対する動作情報を含むことができる。
CPU機械語領域830は当該のシステムにGPUがなかったり又はGPUが異なる作業を遂行しておりCPUで動作することが正しいことと判断される際、実行するCPU機械語を含む。
一方、GPU仮想命令語領域840はGPUで動作する命令語を含む。上記GPU仮想命令語領域840は仮想命令語ヘッダー850と仮想命令語コード860を含むことができる。上記仮想命令語ヘッダー850はGPU演算を遂行するためのデータが入力又は出力されるメモリーのアドレス情報、推薦されるプロセッシング要素(Processing Element、PE)の個数情報などを含むことができる。GPU仮想命令語コードはGPUで実行されるコードの仮想化された情報を含む。すなわち、上記GPU仮想命令語コードは実質的に実行時間(runtime)にGPU機械語に変換されるコードである。
図9は本発明の実施例による、アプリケーションのコンパイル過程を示すフローチャートである。
まず、S910段階で、CPUソースコードとGPUソースコードを含むアプリケーションが生成されたことを仮定する。そして上記アプリケーションに対するコンパイルが要請される場合、コンパイラー720はCPUソースコードとGPUソースコードを区分してコンパイルする。
より具体的に、コンパイラーはCPUソースコード検出の時、S920段階でCPUソースコードをコンパイルし、S930段階でCPUで動作することができるCPU機械語(CPU Machine Code)を生成する。一方、コンパイラーはGPUソースコード検出の時、S940段階でGPUソースコードをコンパイルし、S950段階で仮想の GPUで動作することができるGPU仮想命令語(GPU Virtual Instruction)を生成する。上記GPU仮想命令語に対する具体的な構造は図8に示されている
そしてコンパイラーはS960段階で、上記生成されたCPU機械語とGPU仮想命令語をリンクさせ、S970段階でハイブリッド実行ファイル(Hybrid Binary Image)を生成する。
上記のように、ハイブリッド実行ファイルはCPU機械語と仮想セクションを含む。上記ハイブリッド実行ファイルが実行される際、CPU部分とGPU部分が仮想化階層(Virtualization Layer)の調律によってそれぞれ実行されるところ、 これに対しては下記の図10を参考して説明する。
図10は本発明の実施例によって、 仮想化階層(Virtualization Layer)のハイブリッド仮想化ブロック730がハイブリッド実行ファイルを実行する過程を示すフローチャートである。
上記の図10ではシステムの階層的分類の時、本発明の仮想化階層(Virtualization Layer)の上に一般OSが位置する構造を仮定する。後述するが、 本発明の仮想化階層を使用しなくてもハイブリッド実行ファイルを実行させることができるところ、これに対しては図12で詳しく記述する。
図10に示す実施例において、 OSはOS自分だけ実行されると感知しながらシステムを使用する。まず、ハイブリッド実行ファイルの一般的な駆動はOSを通して成るのでS1010段階でOSが実行される。それではOSはS1015段階でGPU仮想命令語が挿入されたハイブリッド実行ファイルを実行する。そうする間、S1020段階で、仮想セクションが実行されればCPUで例外(exception)が発生する。それではシステムに対する制御権がOSで仮想化階層のハイブリッド仮想化ブロック730に移動する。
ハイブリッド仮想化ブロック730はS1030段階で、 仮想セクション内部のウォーターマークを通して仮想セクションなのか否かを判断する。もし、仮想セクションではなければ、ハイブリッド仮想化ブロック730はS1050段階で進行して既存の例外処理を遂行し、S1055段階でさらにシステム制御権をOSに移動させる。もし、仮想セクションであれば、ハイブリッド仮想化ブロック730はS1035段階でGPU仮想命令語(GPU Virtual Instruction)をGPU機械語(GPU Machine Code)に変換する。そしてハイブリッド仮想化ブロック730はS1040段階で、上記変換されたGPU機械語を図11のようにメモリー(又はファイル)実行領域に挿入する。
上記の過程を遂行したハイブリッド仮想化ブロック730はS1045段階で制御権をさらにOSに越す。その後、OSはS1070段階で、当該のGPU機械語をGPUを通じて実行させる。
一方、S1020段階で、例外が発生したのではなければ、S1060段階でGPU機械語実行なのか否かを判断し、GPU機械語実行の場合にはS1070段階でGPU機械語を実行し、GPU機械語ではない場合にはS1065段階でCPU機械語を遂行する。この場合、S1060段階及びS1070段階を通して実行されるGPU機械語はS1035段階で変換されてメモリー(又はファイル)上に存在するGPU機械語として、別途の変換過程無しに直ちに実行されることができる。
図12は本発明のさらにの実施例によってシステムOSがハイブリッド実行ファイルを実行する過程を示すフローチャートである。
上記の図10では仮想化階層(Virtualization Layer)のハイブリッド仮想化ブロック730がハイブリッド実行ファイルを実行(run)する実施例に対して記述した。
一方、図12では別途の仮想化階層を導入せず、OSがハイブリッド実行ファイルを実行する実施例に対して記述する。この場合、 GPU仮想化命令語を生成するコンパイル過程は仮想化階層を導入するか否かに関係なく同一であるのでこれに対する説明を省略することにする。
まず、S1205段階でハイブリッド実行ファイルが実行されれば、S1210段階で CPUで例外(exception)が発生する。それではOSはS1215段階で、仮想セクション内部のウォーターマークを通して仮想セクションなのか否かを判断する。もし、仮想セクションではなければ、OSはS11235段階で進行して既存の例外処理を遂行し、S1204段階でCPU機械語を実行する。
もし、仮想セクションであれば、OSはS1220段階でGPU仮想命令語(GPU Virtual Instruction)をGPU機械語(GPU Machine Code)に変換する。そしてOSはS1225段階で、上記変換されたGPU機械語を図11のようにメモリー(又はファイル)実行領域に挿入する。
上記の過程を遂行したOSはS1230段階で、当該のGPU機械語をGPUを通して実行させる。
一方、S1210段階で、例外が発生したのではなければ、OSはS1245段階でGPU機械語実行なのか否かを判断し、GPU機械語実行の場合にはS1230段階でGPU機械語を実行し、 GPU機械語ではない場合にはS1240段階でCPU機械語を遂行する。この場合、S1245段階及びS1230段階を通して実行されるGPU機械語は S1220段階で変換されてメモリー(又はファイル)上に存在するGPU機械語として、 別途の変換過程無しに直ちに実行されることができる。
以下では上記の本初明の2つの実施例の機能上の差異に対して記述する。
まず、本発明の第1実施例によれば、実行時間(runtime)の間、GPU仮想命令語がGPU機械語に変換される過程は仮想化階層に位置するハイブリッド仮想化ブロック730によって遂行される。上記第1実施例によるシステム構造が図13に具体的に図示される。
図13に示すように、 ハイブリッド仮想化ブロック730はアプリケーション階層とハードウェア階層の間に、そしてOS下位に位置する。上記ハイブリッド仮想化ブロック730でよって、上位に位置したOSは現在実行されるハイブリッド実行ファイルが既存の実行ファイルと同様であると認識する。すなわち、第1実施例によれば上位OSを修正する必要無しにGPU仮想命令語を実行することができる。
一方、本発明の第2実施例によれば、 実行時間(runtime)の間GPU仮想命令語が GPU機械語に変換される過程はOSによって直接遂行される。上記第2実施例によるシステム構造が図14及び図15に示す。
図14及び図15に示すように、 ハイブリッド実行ファイルを実行するためのハイブリッド仮想化ブロックはOS内部に含まれる。ここで図14に示す第1オペレーティングシステムは例えば、マイクロソフト社の「MS」であることを例示することができ、図15で示す第2オペレーティングシステムは例えば、アップル謝意「Apple OS」であることを例示することができる。このような第2 実施例によれば実行時間の間の例外発生の時、GPU仮想命令語をGPU機械語で変換する手続きはOSによって直接処理される。
上記の本発明によれば、CPUとGPUを同時に效率的に使用することができ、GPU使用のためのリアルタイムコンパイル方式の問題点を補ってGPU実行效率を向上させることができる。
本明細書及び図面に開示された本発明の実施例は本発明の記述内容を容易に説明し、発明の理解を助けるために特定例を提示したことに過ぎず、 本発明の範囲を限定しようとすることではない。ここに開示された実施例以外にも本発明の技術的思想に基づいて他の変形例が実施可能であるということは本発明が属する技術分野で通常の知識を有する者に自明なものである。
710 アプリケーション
720 コンパイラー
730 ハイブリッド仮想化ブロック

Claims (14)

  1. CPU(Central Processing Unit)とGPU(Graphic Processing Unit)を使用するシステムで、アプリケーションのコンパイル及び実行方法であって
    CPUソースコードとGPUソースコードを含むアプリケーションに対するコンパイル遂行要請を受信する段階と、
    前記アプリケーションのコンパイルの時、前記CPUソースコードをCPU機械語にコンパイルし、前記GPUソースコードをGPU仮想命令語にコンパイルして、前記CPU機械語と前記GPU仮想命令語を含む実行ファイルを生成する段階と、
    前記実行ファイルに対する実行要請を受信した時は、前記GPU仮想命令語をGPU機械語に変換(Translation)して前記実行ファイルを実行する段階を含み、
    前記実行段階は、前記システムのオペレーティングシステム(OS)が前記実行ファイルを実行する段階と、
    前記オペレーティングシステムが例外(exception)発生を感知したとき、少なくとも一つの仮想セクションを識別する段階と、
    前記仮想セクションを識別する場合、前記GPU仮想命令語を前記GPU機械語に変換し、前記変換されたGPU機械語を前記GPUを介し、実行する段階を含み、
    前記実行ファイルは、前記CPU実行時間及び前記GPU実行時間に関する情報を含む仮想セクションを含む
    ことを特徴とするアプリケーションのコンパイル及び実行方法。
  2. 前記実行ファイルを生成する段階は、
    前記CPU機械語と、前記GPU仮想命令語を含む少なくとも1つの仮想セクションを含む前記実行ファイルを生成する
    ことを特徴とする、請求項1に記載のアプリケーションのコンパイル及び実行方法。
  3. 前記仮想セクションは、
    前記仮想セクションを識別するウォーターマークを含む仮想セクションヘッダーと、前記CPU機械語と、前記GPU仮想命令語を含む
    ことを特徴とする、請求項2に記載のアプリケーションのコンパイル及び実行方法。
  4. 前記実行する段階は、
    前記システムのオペレーティングシステム(OS)が前記実行ファイルを実行する段階と、
    前記オペレーティングシステムが例外(exception)発生感知の時、システム制御権をハイブリッド仮想化ブロックに伝達する段階と、
    前記ハイブリッド仮想化ブロックが前記仮想セクションの識別の時、前記GPU仮想命令語を前記GPU機械語に変換し、前記システム制御権を前記オペレーティングシステムに伝達する段階と、
    前記オペレーティングシステムが前記変換されたGPU機械語を前記GPUを通して実行する段階をさらに含む
    ことを特徴とする、請求項2に記載のアプリケーションのコンパイル及び実行方法。
  5. 前記ハイブリッド仮想化ブロックはアプリケーション階層とハードウェア階層の間に位置する仮想化階層に位置する
    ことを特徴とする、請求項4に記載のアプリケーションのコンパイル及び実行方法。
  6. 前記実行する段階の以後に、
    前記変換されたGPU機械語を前記実行ファイルの内部に位置させる段階と、
    前記GPU仮想命令語の実行の時、前記実行ファイルの内部に位置する変換されたGPU機械語を実行する段階をさらに含む
    ことを特徴とする、請求項1に記載のアプリケーションのコンパイル及び実行方法。
  7. 前記GPU仮想命令語と前記GPU機械語は、共に機械語レベル(Machine Code Level)である
    ことを特徴とする、請求項1に記載のアプリケーションのコンパイル及び実行方法。
  8. CPUソースコードとGPUソースコードを含むアプリケーションのコンパイル及び実行装置において、
    CPUとGPUを含むハードウェアと、
    前記CPUソースコードをCPU機械語にコンパイルし、前記GPUソースコードをGPU仮想命令語にコンパイルして、前記CPU機械語と前記GPU仮想命令語を含む実行ファイルを生成するコンパイラーと、
    前記GPU仮想命令語をGPU機械語に変換(Translation)し、実行するハイブリッド仮想化ブロックと、
    前記実行ファイルを実行し、例外(exception)発生を感知した時、システム制御権を前記ハイブリッド仮想化ブロックに伝達するオペレーティングシステム(Operating System 、OS)を含み、
    前記実行ファイルは、前記CPU実行時間及び前記GPU実行時間に関する情報を含む仮想セクションを含む
    ことを特徴とする、アプリケーションのコンパイル及び実行装置。
  9. 前記ハイブリッド仮想化ブロックはアプリケーション階層とハードウェア階層の間に位置する
    ことを特徴とする、請求項8に記載のアプリケーションのコンパイル及び実行装置。
  10. 前記コンパイラーは、
    前記CPU機械語と、前記GPU仮想命令語を含む少なくとも1つの仮想セクションを含む前記実行ファイルを生成する
    ことを特徴とする、請求項8に記載のアプリケーションのコンパイル及び実行装置。
  11. 前記仮想セクションは、
    前記仮想セクションを識別するウォーターマークを含む仮想セクションヘッダーと、前記CPU機械語と、前記GPU仮想命令語を含む
    ことを特徴とする、請求項10に記載のアプリケーションのコンパイル及び実行装置。
  12. 前記ハイブリッド仮想化ブロックは、
    前記仮想セクションの識別の時、前記GPU仮想命令語を前記GPU機械語に変換し、前記システム制御権を前記オペレーティングシステムに伝達する
    ことを特徴とする、請求項8に記載のアプリケーションのコンパイル及び実行装置。
  13. 前記オペレーティングシステムは、
    前記変換されたGPU機械語を前記実行ファイルの内部に位置させ、前記GPU仮想命令語の実行の時、前記実行ファイルの内部に位置する変換されたGPU機械語を実行する
    ことを特徴とする、請求項8に記載のアプリケーションのコンパイル及び実行装置。
  14. 前記GPU仮想命令語と前記GPU機械語は共に機械語レベル(Machine Code Level)である
    ことを特徴とする、請求項8に記載のアプリケーションのコンパイル及び実行装置。
JP2013531479A 2010-09-27 2011-09-26 Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置 Expired - Fee Related JP6076908B2 (ja)

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
JP2013543616A JP2013543616A (ja) 2013-12-05
JP6076908B2 true JP6076908B2 (ja) 2017-02-08

Family

ID=45870188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013531479A Expired - Fee Related JP6076908B2 (ja) 2010-09-27 2011-09-26 Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置

Country Status (6)

Country Link
US (1) US9495720B2 (ja)
EP (1) EP2622465B1 (ja)
JP (1) JP6076908B2 (ja)
KR (1) KR20120031756A (ja)
CN (1) CN103124956B (ja)
WO (1) WO2012044016A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
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 주식회사 넷아스 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
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
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
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
CN101599009A (zh) 2009-04-30 2009-12-09 浪潮电子信息产业股份有限公司 一种异构多处理器上并行执行任务的方法

Also Published As

Publication number Publication date
CN103124956B (zh) 2017-02-15
US20120075316A1 (en) 2012-03-29
KR20120031756A (ko) 2012-04-04
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
JP6076908B2 (ja) Cpuとgpuを使用する異種システムにおいて仮想化を用いたアプリケーションのコンパイル及び実行方法、及び装置
JP4514105B2 (ja) 拡張ランタイムホスティング
US20060294498A1 (en) Hot-swapping a dynamic code generator
EP2815313B1 (en) Rasterization of compute shaders
WO2007083613A1 (ja) プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
JP2013533533A (ja) コンピューティング・プラットフォーム内のワークロードの分配及び並列化
WO2017074609A1 (en) Graphical representation of data in a program code editor
KR20160054629A (ko) 사용자 인터페이스들 및 입력 컨트롤들을 적응시키는 방법
US20160246622A1 (en) Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
TWI692692B (zh) 用於元組圖形程式之子圖內最佳化之方法
JP5178852B2 (ja) 情報処理装置およびプログラム
CN117075909B (zh) 用于实现并行编程的编译方法、电子设备和介质
TW201913404A (zh) 跨網路執行元組圖形程式之方法
KR20170014613A (ko) 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체
CN111190585B (zh) 基于字节码增强技术实现java模式匹配特性的方法
US20080127034A1 (en) Distributed resource understanding tool management
KR101632027B1 (ko) 주석기반의 의사코드를 이용한 프로그램 변환 방법 및 그 방법을 구현하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
CN111971655A (zh) 用于超文本标记语言图形内容的本机运行时技术
JP6264179B2 (ja) コンパイル方法、コンパイル装置およびコンパイルプログラム
US20110099534A1 (en) Information processing apparatus, execution program operation modification method, and recording medium
KR100727055B1 (ko) 스크립트 언어를 이용한 게임 제작 시스템 및 게임 제작방법
Fan et al. Supporting asynchronization in OpenMP for event-driven programming
EP4206904A1 (en) Code processing method and apparatus, and storage medium
TWI776338B (zh) 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140926

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170111

R150 Certificate of patent or registration of utility model

Ref document number: 6076908

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees