JP2014149765A - コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 - Google Patents
コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2014149765A JP2014149765A JP2013019259A JP2013019259A JP2014149765A JP 2014149765 A JP2014149765 A JP 2014149765A JP 2013019259 A JP2013019259 A JP 2013019259A JP 2013019259 A JP2013019259 A JP 2013019259A JP 2014149765 A JP2014149765 A JP 2014149765A
- Authority
- JP
- Japan
- Prior art keywords
- compiler
- data
- processors
- object code
- source program
- 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.)
- Pending
Links
Images
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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
Abstract
【課題】より効率のよいアクセラレーション計算プログラムを簡潔に実装することができる技術を提供する。
【解決手段】複数のプロセッサからなる並列計算機に適用されるコンパイラであって、ソースプログラムを入力して前記プロセッサそれぞれのローカルコードを生成するコンパイラにおいて、入力した前記ソースプログラムを解析して、このソースプログラムに記述された手続きの中から前記プロセッサ間のデータ転送ポイントを抽出し、データコピーの呼び出し処理を生成する生成手段と、前記呼び出し処理を含むオブジェクトコードを生成する生成手段とを具備してなるコンパイラ。
【選択図】 図2
【解決手段】複数のプロセッサからなる並列計算機に適用されるコンパイラであって、ソースプログラムを入力して前記プロセッサそれぞれのローカルコードを生成するコンパイラにおいて、入力した前記ソースプログラムを解析して、このソースプログラムに記述された手続きの中から前記プロセッサ間のデータ転送ポイントを抽出し、データコピーの呼び出し処理を生成する生成手段と、前記呼び出し処理を含むオブジェクトコードを生成する生成手段とを具備してなるコンパイラ。
【選択図】 図2
Description
本発明の実施形態は、コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法に関する。
従来、マルチコア向けのプログラム実行モデルとしてマルチスレッド処理が存在している。かかるマルチスレッド処理では、実行単位となる複数のスレッドが並列に動作し、メインメモリ上のデータを遣り取りすることによって並列処理を遂行している。
上記並列処理の実行形態の一例としては、複数の実行単位を各実行ユニット(CPUコア)に割り当てるスケジューラを含むランタイム処理と、各実行ユニット上で動作するスレッドとの2つの要素で構成される。また、並列処理ではスレッド間の同期が重要であり、同期処理が適切でないとデッドロックやデータの整合性が崩れる等の問題が発生する。そこで、従来、スレッドの実行順序をスケジューリングし、このスケジュールに基づいて並列処理を行うことでスレッド間の同期を保持することが行われている。
更にヘテロジニアスマルチコアの枠組みで、GPGPU(General-purpose computing on graphics processing units; GPUによる汎目的計算、GPUの演算資源を画像処理以外の目的に応用する技術)をはじめとするアクセラレータなどの各デバイスのメモリ間やホストCPUのシステムメモリ間のデータコピーを暗黙的に行うランタイム環境が求められている。
例えば、アクセラレーション計算環境におけるバッファ同期と並列ランタイムを重視しCPUとGPUカードなどのアクセラレータとで協調して大規模計算を実行する場合、CPUとGPUの間でデータをやりとりするためにバッファを定義し、計算する側のメモリへデータを転送して並列計算を実行する。
このとき、どういうタイミングでどちらの向きにデータを転送するのかを、プログラムコード状で表現するのは、煩雑でありコーディングでバグを混入する原因となる。とくに計算をCPU,GPU1,GPU2,…等のどこで実行するかを、プログラムチューニング過程で変更する場合はデータ転送のタイミングや向きに注意が必要となる。
そこで、バッファを抽象化したViewを定義し、Viewのデータ構造にどこのメモリに最新データが存在するかという状態を保持することで、オンデマンドで必要に応じてデータのコピーを行う方法が提供されている。この方法を使うと、プログラムコード上でデータ転送を明示的に記述する必要がなく、必要に応じて正しくデータが転送されるため、簡潔なコードで信頼性の高いプログラムを書くことが可能である。
しかし、オンデマンドでデータをコピーする方法では、並列計算処理(以降カーネルと呼ぶ)を呼び出すタイミングまで、データコピーの必要性が判明しないため、データコピーの遅延を甘受しなければならなかった。
より効率のよいアクセラレーション計算プログラムを簡潔に実装することができる技術が、求められている。
本発明の実施の形態は、より効率のよいアクセラレーション計算プログラムを簡潔に実装することができる技術を提供することを目的とする。
上記課題を解決するために、実施形態によればコンパイラは、複数のプロセッサからなる並列計算機に適用されるコンパイラであって、ソースプログラムを入力して前記プロセッサそれぞれのローカルコードを生成するコンパイラにおいて、入力した前記ソースプログラムを解析して、このソースプログラムに記述された手続きの中から前記プロセッサ間のデータ転送ポイントを抽出し、データコピーの呼び出し処理を生成する生成手段と、前記呼び出し処理を含むオブジェクトコードを生成する生成手段とを具備する。
以下、本発明の一実施形態を説明する。
(第1の実施形態)
本実施形態は情報処理装置として或いは情報処理方法として用いることができ、ソースプログラムを入力して並列計算機を構成するプロセッサそれぞれのローカルコードを生成するコンパイラに適用して好適なオブジェクトコード生成方法に係わり、特にプロセッサ構造に依存しないローカルコードを生成することを可能とするオブジェクトコード生成方法に関する。
(第1の実施形態)
本実施形態は情報処理装置として或いは情報処理方法として用いることができ、ソースプログラムを入力して並列計算機を構成するプロセッサそれぞれのローカルコードを生成するコンパイラに適用して好適なオブジェクトコード生成方法に係わり、特にプロセッサ構造に依存しないローカルコードを生成することを可能とするオブジェクトコード生成方法に関する。
第1の実施形態を図1乃至図8を参照して説明する。
図1に実施形態のシステム全体の構成の一例を示す。例えば、GPU等である計算デバイス10(以下、GPU)はホストCPU12により制御される。計算デバイス10はマルチコアプロセッサからなり、多数のコアブロックに分割されている。図1の例では、計算デバイス10は8つのコアブロック34に分割される。計算デバイス10はコアブロック34単位に別のコンテキストを管理できる。コアブロックは16個のコアからなる。コアブロックあるいはコアを並列に動作させることにより、高速なタスク並列処理が可能となる。
コアブロック34はブロックIDにより識別され、図1の例では、ブロックIDは0〜7である。ブロック内の16個のコアはローカルIDにより識別され、ローカルIDは0〜15である。ローカルIDが0のコアはブロックの代表コア32と称される。
ホストCPU12もマルチコアプロセッサであってもよい。図1の例では、デュアルコアプロセッサとする。ホストCPU12は3段階のキャッシュメモリ階層を持つ。メインメモリ16と接続されるL1キャッシュ22はホストCPU12内に設けられ、L2キャッシュ26a、26bと接続される。L2キャッシュ26a、26bはそれぞれCPUコア24a、24bに接続される。L1キャッシュ22とL2キャッシュ26a、26bはハードウェアによる同期機構を持ち、同一アドレスへのアクセスの際に必要な同期処理が行われる。L2キャッシュ26a、26bはL1キャッシュ22で参照されるアドレスのデータを保持し、キャッシュミスが生じた場合などにはハードウェアによる同期機構により、メインメモリ16との間で必要な同期処理が行われる。
計算デバイス10によりアクセスできるデバイスメモリ14が計算デバイス10に接続され、ホストCPU12にメインメモリ16が接続される。メインメモリ16とデバイスメモリ14の2つのメモリが接続されているので、計算デバイス10で処理を実行する前後で、デバイスメモリ14とメインメモリ16とでデータのコピー(同期化)を行う。このため、メインメモリ16とデバイスメモリ14とが互いに接続されている。しかし、複数の処理を連続して実行する場合、1つの処理毎にコピーを実行する必要はない。
図2にシステム機能構成例を示す。計算デバイス10はPCIe(PCI Express)を経由してホストCPU12と接続され、計算デバイス10は専用のデバイスメモリ(DRAM)14を持つ。計算に利用するデータを格納するバッファの実体はホストのシステムメモリ16とデバイスメモリ14にそれぞれ割り当てられ、BufferViewというデータ構造によって状態を管理される。
このデータ構造は、図2に示すように4つの要素を含んでいる。ホストCPU12とGPU10で共有となる対象データをデータAとすると、まずSizeはこのデータAのサイズ(バイト数)である。次に述べるState(状態)の他にはCpu_memとGpu_memとがある。
Cpu_memはシステムメモリ16内のデータAの位置を表すポインタであり、Gpu_memはデバイスメモリ14内のデータAの位置を表すポインタである。
さてBufferViewの状態は、CPUのみ、GPUのみ、共有、未定義の4つの状態(計算デバイスが増えると状態は増える)で管理される。図3(a)の「ホスト(CPU)でカーネル関数を呼び出す順序」がプログラムコードに記載されたカーネル呼び出しであり、図の例ではKE,KF,KI,KJ がホストCPU12で、KG,KH がGPUで実行される。
さてBufferViewの状態は、CPUのみ、GPUのみ、共有、未定義の4つの状態(計算デバイスが増えると状態は増える)で管理される。図3(a)の「ホスト(CPU)でカーネル関数を呼び出す順序」がプログラムコードに記載されたカーネル呼び出しであり、図の例ではKE,KF,KI,KJ がホストCPU12で、KG,KH がGPUで実行される。
従来の技術では、オンデマンドでデータコピーを行う仕組みになっており、図3に示すようにホストCPU12上でカーネルKEを実行するとBufferView Eの状態は「CPUのみ」となりカーネルKFについても同様である。ここでGPUで実行するカーネルKH が呼び出されると、BufferView E,Fの状態をチェックし、状態が「CPUのみ」であるために、データコピーを起動する。コピーが完了すると状態を「共有」に変更する。同様にBufferView G,Hは、カーネルKG,KH終了時は、「GPUのみ」の状態であり、カーネルKI を呼び出したときに初めてBufferView Gのコピーが開始されるため、カーネルKI の実行開始が遅れてしまう。
これを解決するためにBufferView Gのコピー開始をKernel Gの終了直後に開始すればよいが、これではプログラミングが煩雑となり、BufferViewによる抽象化の利便性を損なってしまう。
本実施形態に係わるオブジェクトコード生成方式を適用してなる一般的なコンパイラの概略構成は、コンパイラ、最適化変換部及びコード生成部を有してなる。コンパイラは、ソースプログラムを読み込み、構文解析して中間コードに変換してメモリの中に格納する。一般的には、ソースプログラムを構文解析し中間コードを生成し、その後最適化、コード生成、オブジェクトコードの出力となる。この最適化の中では、制御フロー解析、データ依存解析、様々な最適化(中間コード変換)という流れである。後述のDef-Useチェインの解析はデータ依存解析であり、データ転送コードの挿入はさまざまな最適化とコード生成部で実現される機能である。
ここで、図4を参照して一般的な並列コンパイラの動作手順の概略を示す。
まず、コンパイルの最初にターゲットプロセッサの構成21を指定する(コンパイラ指示子等と呼ばれるものを援用することにより指定してもよい)。そして、コンパイラは、ステップS22においてソースプログラム25を読み込み、構文解析してソースプログラム25を内部表現である中間形式26に変換する。
まず、コンパイルの最初にターゲットプロセッサの構成21を指定する(コンパイラ指示子等と呼ばれるものを援用することにより指定してもよい)。そして、コンパイラは、ステップS22においてソースプログラム25を読み込み、構文解析してソースプログラム25を内部表現である中間形式26に変換する。
次に、コンパイラは、ステップS23において内部表現26に対して様々な最適化変換を行い、変換された中間形式27を生成する。
次に、コンパイラは、ステップS24にて変換された中間形式27をスキャンして、PEそれぞれのオブジェクトコード28を生成する。例としてはC言語系列のプログラムから、機械語コードを生成している。
次に、コンパイラは、ステップS24にて変換された中間形式27をスキャンして、PEそれぞれのオブジェクトコード28を生成する。例としてはC言語系列のプログラムから、機械語コードを生成している。
本実施形態では、図5に示すように、プログラムコンパイル時にデータフローを解析し、必要な場合のみデータコピー開始のためのコードを挿入する。具体的には、BufferViewのDef-Useチェインを解析し、DefするカーネルとUseするカーネルの実行デバイスが異なる場合のみ、Defするカーネルの直後でデータコピーをキックするコードを挿入する。これにより、プログラムを簡潔に保ったままデータの先読みすることによって図3(b)に示すタイムチャートの通り、カーネルKIの実行を早期に開始することが可能となり(図3(b)のKGからKI,KHからKJへの破線を参照、従来ではKHが終了してから KIへ移行する)、全体の実行時間を短縮できる。なお、図3(c)は、図3(a)のデータフローで出たデータとカーネルの属性を列挙したものである。
Def-Useチェインは、du −連鎖(definition - use chain)と呼ばれてきたものである。生きている変数の解析と本質的に同じ計算になるのが、定義−使用連鎖(du −連鎖)の作成である。例えば文s において、変数が右辺値を要求することがあれば、その変数はs で使用されるという。たとえば、文a : = b + c とa [ b ]:= c があれば、b とcはそれぞれの文で使用される(a は使用されない)。 du −連鎖の問題は、ある点p について、変数x を使用する文s の集合を求めることである。具体的なステップは次のようになる。
ステップS71: プログラムを基本ブロックに分割する。
ステップS72: 制御フローをグラフを作成する。
ステップS73: BufferViewに対してデータフローを解析しDef-Useチェインを作成する。
ステップS74: すべてのBufferViewのDef-Useチェインに対して以下の処理を実行する。
ステップS74A: すべてのBufferViewのDef-Useチェインの処理が実行されたか判定し、実行されたと判定されればステップS74Cまでの処理ループから抜け全体の処理を終了する。
ステップS72: 制御フローをグラフを作成する。
ステップS73: BufferViewに対してデータフローを解析しDef-Useチェインを作成する。
ステップS74: すべてのBufferViewのDef-Useチェインに対して以下の処理を実行する。
ステップS74A: すべてのBufferViewのDef-Useチェインの処理が実行されたか判定し、実行されたと判定されればステップS74Cまでの処理ループから抜け全体の処理を終了する。
ステップS74B: BufferViewをDefするカーネルの実行デバイスとBufferViewをUseするカーネルの実行デバイスとが異なるか判定し、この判定がYesならば次のステップS74Cに進み他方NoならばステップS74Aに戻る。
ステップS74C: Defするカーネルの実行直後にデータコピーを起動するコードを挿入する。このデータコピーの呼び出し処理を生成するためのコードは、例えば関数により実現される。
ここで基本ブロックとは連続した文の列からなり、制御は先頭の文に与えられ、そのあと、途中で停止したり、途中から分岐したりしないで、最後の文から制御が離れるものをいう。例えば所謂三番地文の列は基本ブロックを形成する。
尚さらに、図6(c)のBufferView示すようにデータの分割方法(BlockSize)をあらかじめ定義しておくことにより、これをバッファGとIに適用し、カーネルKI が並列度の低いCPUで実行されるということを基準にカーネルKG,KI を分割実行することによって(図6(a)のKGとKIを参照)全体の実行時間を短くすることが可能である(図6(b)のKGからKIへの3本の破線を参照)。BlockSize(3000バイト)はSize(9000バイト)を3分割した値となっている。
(第2の実施形態)
本発明による第2の実施形態を図3乃至図8を参照して説明する。実施形態1と共通する部分は説明を省略する。
図7はシステム構成の他の例を示す図である。ここでは、デバイスメモリ14を単独で設けずに、計算デバイス10とホストCPU12がメインメモリ16を共有し、メインメモリ16内に図1のデバイスメモリ14と等価なデバイスメモリ領域14Bが設けられる。この場合は、デバイスメモリとメインメモリとでデータのコピーを行う必要がない。
本発明による第2の実施形態を図3乃至図8を参照して説明する。実施形態1と共通する部分は説明を省略する。
図7はシステム構成の他の例を示す図である。ここでは、デバイスメモリ14を単独で設けずに、計算デバイス10とホストCPU12がメインメモリ16を共有し、メインメモリ16内に図1のデバイスメモリ14と等価なデバイスメモリ領域14Bが設けられる。この場合は、デバイスメモリとメインメモリとでデータのコピーを行う必要がない。
図8の機能ブロックに示すように本実施形態は、共有キャッシュ16Bを介在として、メモリ領域14Bが設けられている。
結果としてCPU,GPUを統合し共有メモリをもつSoC(System on Chip)に対しては、実施形態1におけるデータのコピーは、キャッシュへのプリフェッチへと置き換えることで、CPU/GPU/その他アクセラレータがメモリを共有する場合においても、簡潔なプログラム記述における性能向上のための有効な手段となる。なおmemは、共有キャッシュ16B内のデータAの位置を表すポインタである。
結果としてCPU,GPUを統合し共有メモリをもつSoC(System on Chip)に対しては、実施形態1におけるデータのコピーは、キャッシュへのプリフェッチへと置き換えることで、CPU/GPU/その他アクセラレータがメモリを共有する場合においても、簡潔なプログラム記述における性能向上のための有効な手段となる。なおmemは、共有キャッシュ16B内のデータAの位置を表すポインタである。
以上に説明したように複雑で手間のかかるGPUプログラミングを簡潔にした環境においても、データ転送の遅延を自動的に隠ぺいすることにより高効率なプログラムを作成することが可能である。
(実施形態のまとめ)
計算対象のデータバッファを抽象化することにより、GPGPUをはじめとするアクセラレータなどの各デバイスのメモリ間やホストCPUのシステムメモリ間のデータコピーを暗黙的に行うランタイム環境において、以下のことを実施する。
計算対象のデータバッファを抽象化することにより、GPGPUをはじめとするアクセラレータなどの各デバイスのメモリ間やホストCPUのシステムメモリ間のデータコピーを暗黙的に行うランタイム環境において、以下のことを実施する。
(1).オンデマンドでデータコピーを発行するのではなく、できるだけ早い時点でデータコピーを発行することにより、データ移動の遅延を少なくし性能を向上させる。
(2).早い時点でデータをコピーするために、プログラムコンパイル時にデータ転送ポイントを求めてデータコピーの呼び出し処理を生成する。
(3).また、マルチコアCPUなどの比較的並列度が低いデバイスで計算する場合は、入力データバッファを細分化してストリーム的にデータを流してマルチコアCPUでの計算開始タイミングを早くすることにより、システム性能を向上させる。
(3).また、マルチコアCPUなどの比較的並列度が低いデバイスで計算する場合は、入力データバッファを細分化してストリーム的にデータを流してマルチコアCPUでの計算開始タイミングを早くすることにより、システム性能を向上させる。
本実施形態によれば、プログラマはデータの転送処理を記述することなく、適切なタイミングでデータのコピーを起動するプログラムを作成できるため、効率のよいアクセラレーション計算プログラムを簡潔に実装することが可能となる。
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
10…計算デバイス、12…ホストCPU。
Claims (6)
- 複数のプロセッサからなる並列計算機に適用されるコンパイラであって、ソースプログラムを入力して前記プロセッサそれぞれのローカルコードを生成するコンパイラにおいて、
入力した前記ソースプログラムを解析して、このソースプログラムに記述された手続きの中から前記プロセッサ間のデータ転送ポイントを抽出し、データコピーの呼び出し処理を生成する生成手段と、
前記呼び出し処理を含むオブジェクトコードを生成する生成手段とを
具備してなるコンパイラ。 - 更に前記データ転送ポイントを前記プロセッサ単位で細分化する請求項1に記載のコンパイラ。
- 前記データコピーの呼び出し処理は前記プロセッサ間の共有キャッシュへのプリフェッチに置き換えて生成される請求項1に記載のコンパイラ。
- 複数のプロセッサからなる並列計算機に適用されるコンパイラであり、ソースプログラムを入力して前記プロセッサそれぞれのローカルコードを生成するコンパイラにおけるオブジェクトコード生成方法であって、
入力した前記ソースプログラムを解析して、このソースプログラムに記述された手続きの中から前記プロセッサ間のデータ転送ポイントを抽出し、データコピーの呼び出し処理を生成する生成工程と、
前記呼び出し処理を含むオブジェクトコードを生成する生成工程とを
含むオブジェクトコード生成方法。 - 前記プロセッサとして、請求項1に記載のコンパイラにより生成されたオブジェクトコードを実行するCPU及びアクセラレータを備えた情報処理装置。
- 請求項4に記載のオブジェクトコード生成方法により生成されたオブジェクトコードを実行する情報処理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013019259A JP2014149765A (ja) | 2013-02-04 | 2013-02-04 | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 |
PCT/JP2013/058157 WO2014119003A1 (ja) | 2013-02-04 | 2013-03-21 | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 |
US14/015,670 US20140223419A1 (en) | 2013-02-04 | 2013-08-30 | Compiler, object code generation method, information processing apparatus, and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013019259A JP2014149765A (ja) | 2013-02-04 | 2013-02-04 | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014149765A true JP2014149765A (ja) | 2014-08-21 |
Family
ID=51261743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013019259A Pending JP2014149765A (ja) | 2013-02-04 | 2013-02-04 | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2014149765A (ja) |
WO (1) | WO2014119003A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012533124A (ja) * | 2009-07-10 | 2012-12-20 | アップル インコーポレイテッド | ブロックベースの非透過的キャッシュ |
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
-
2013
- 2013-02-04 JP JP2013019259A patent/JP2014149765A/ja active Pending
- 2013-03-21 WO PCT/JP2013/058157 patent/WO2014119003A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012533124A (ja) * | 2009-07-10 | 2012-12-20 | アップル インコーポレイテッド | ブロックベースの非透過的キャッシュ |
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
Non-Patent Citations (8)
Title |
---|
CSNG201100549015; 道浦 悌、大野和彦、佐々木敬泰、近藤利夫: 'GPGPUにおけるデータ転送自動化コンパイラの設計' 情報処理学会研究報告 2011(平成23)年度▲2▼[CD-ROM] Vol.2011-HPC-130,No.17, 20110815, pp.1〜9, 一般社団法人情報処理学会 * |
CSNG201200568008; 内山寛章、津邑公暁、松尾啓志: 'CUDA向けフレームワークOpenMPCに対する適切なメモリの自動選択による改良' 電子情報通信学会技術研究報告 Vol.112,No.173, 20120726, pp.49〜54, 一般社団法人電子情報通信学会 * |
CSNG201200618003; 丸山直也、星野哲也: '特集 GPUとその応用 3.OpenACCプログラミング' 映像情報メディア学会誌 Vol.66,No.10, 20121001, pp.817〜822, 一般社団法人映像情報メディア学会 * |
CSNG201200679022; 薦田登志矢、三輪 忍、中村 宏: 'CPU/GPU間データ通信向け先読み機構の検討' 情報処理学会研究報告 2012(平成24)年度▲3▼[CD-ROM] Vol.2012-ARC-201,No.25, 20121015, pp.1〜8, 一般社団法人情報処理学会 * |
JPN6013017679; 道浦 悌、大野和彦、佐々木敬泰、近藤利夫: 'GPGPUにおけるデータ転送自動化コンパイラの設計' 情報処理学会研究報告 2011(平成23)年度▲2▼[CD-ROM] Vol.2011-HPC-130,No.17, 20110815, pp.1〜9, 一般社団法人情報処理学会 * |
JPN6013017680; 薦田登志矢、三輪 忍、中村 宏: 'CPU/GPU間データ通信向け先読み機構の検討' 情報処理学会研究報告 2012(平成24)年度▲3▼[CD-ROM] Vol.2012-ARC-201,No.25, 20121015, pp.1〜8, 一般社団法人情報処理学会 * |
JPN6013017682; 内山寛章、津邑公暁、松尾啓志: 'CUDA向けフレームワークOpenMPCに対する適切なメモリの自動選択による改良' 電子情報通信学会技術研究報告 Vol.112,No.173, 20120726, pp.49〜54, 一般社団法人電子情報通信学会 * |
JPN6013017683; 丸山直也、星野哲也: '特集 GPUとその応用 3.OpenACCプログラミング' 映像情報メディア学会誌 Vol.66,No.10, 20121001, pp.817〜822, 一般社団法人映像情報メディア学会 * |
Also Published As
Publication number | Publication date |
---|---|
WO2014119003A1 (ja) | 2014-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6903187B2 (ja) | タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト | |
CN107347253B (zh) | 用于专用处理器的硬件指令生成单元 | |
JP6525286B2 (ja) | プロセッサコア及びプロセッサシステム | |
US8250549B2 (en) | Variable coherency support when mapping a computer program to a data processing apparatus | |
US9996394B2 (en) | Scheduling accelerator tasks on accelerators using graphs | |
US11900113B2 (en) | Data flow processing method and related device | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
US10599404B1 (en) | M/A for compiling parallel program having barrier synchronization for programmable hardware | |
US9645802B2 (en) | Technique for grouping instructions into independent strands | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
Lisper | Towards parallel programming models for predictability | |
US10198544B2 (en) | Method for improving OpenCL hardware execution efficiency | |
Owaida et al. | Massively parallel programming models used as hardware description languages: The OpenCL case | |
US20150089149A1 (en) | Arithmetic processing device and control method for arithmetic processing device | |
US11436045B2 (en) | Reduction of a number of stages of a graph streaming processor | |
US20140223419A1 (en) | Compiler, object code generation method, information processing apparatus, and information processing method | |
JP2014149765A (ja) | コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法 | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
CN114443139B (zh) | 将顺序代码转换为并行代码的方法、系统、设备和介质 | |
WO2023123453A1 (zh) | 运算加速的处理方法、运算加速器的使用方法及运算加速器 | |
Rutgers | Programming models for many-core architectures: a co-design approach | |
Mäkelä et al. | Towards programming on the moving threads architecture | |
Leupers et al. | Programming MPSoC platforms: Road works ahead! | |
Kaushik | Accelerating Mixed-Abstraction SystemC Models on Multi-Core CPUs and GPUs | |
Gorius et al. | Master research Internship |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140624 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140729 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20141216 |