上記で使用したプログラムを以下に示した。構文で実装した場合の例を示す。付けてコンパイルする必要がある。場合はその必要はない。構文だけしか挿入していない。構文は、コンパイラが自動的に設定するため、ここではあえて明示していない。programコンパイルをしてみる。コンパイル・コマンドを実行するとアクセラレータ関係のみのメッセージが出力される。以下の中で、赤字のメッセージに着目して欲しい。generated」というメッセージを見ることが出来る。generated」と言うメッセージが出力される。これは、スカラ実行のカーネルコードは生成したが、「遅い」コードであることを意味しているので、アクセラレータ用のコードではないと認識して欲しい。vector(128)」と言った並列マッピングに関するメッセージも必ず確認して欲しい。vector(ベクトル化)が実施されるコードを生成したことを表している。2階層の並列性を利用している。階層以上の並列性を利用したコードの生成が必要である。threadidx%x実行をしてみよう。このプログラムは引数に「ループの繰り返し数」を指定できるようにしている。上での実行時間を比べて見る。時間が逆転することが分かる。向きのコードとなっていくことが分かる。構文を利用した場合のプログラムである。Fortranの場合と同じように、一連の出力例を以下に示す。適用範囲を広げていくことをお勧めする。構文を使って、非常に小さなループ範囲でその適用を試みる。オプションを付加して、コンパイラが適用部分に対して「並列化」が実施されているかを必ず確認する。構文の対象としたループの行番号に対して、以下のような並列化のメッセージが現れていることを確認する。vector(xxx)」等の並列マッピング情報が示されていることである。コードを生成した」と言うことではないため注意が必要である。threadidx%x以下のメッセージは、並列化されていないメッセージであるため、上記と混同しないようにして欲しい。generatedもう一つ、コンパイラメッセージの中で確認しておきたいことがある。構文を設定すると、自動的に当該ループ内で使用される変数、配列のデータ転送処理のコードも生成される。配列のデータ転送に関しては、以下のような形でメッセージ(一例)が出力される。構文で、データ転送の最適化を実施する時に参考となる。上で実施した結果と差異はないかどうかを確認する。構文を追加する度に行う方が良い。後で纏めて行うと、もし誤った結果が出た場合、どこの部分が問題であったかを直ぐ把握できなくなる。一つ、アクセラレータ上でのカーネルの実行性能も把握しておく必要がある。実行時、簡易プロファイルを行っておき、その結果を常に見るように心がける。簡易プロファイルを取得する方法は二つある。一つは、以下の環境変数を予め実行前にセットする。これによって、実行時に常にプロファイル結果が出力される。環境セット)コンパイラが生成した個々のカーネルの実行プロファイルの結果が表示される。言うコマンドでプロファイル情報を得ることもできる。構文を適用し、その範囲を広げていく。同じように検証を繰り返していく。ループへの適用を行って行くスタイルの方が結果的に誤りが少ない作業となる。ここまでのステップは、データ転送に関する最適化を行っていないため、CPU上で実行するよりも時間が掛かる場合がほとんどであろう。してある程度の並列化適用が成功したら、次に、データ転送の管理を行う。構文を使って、出来るだけ使用するデータをアクセラレータ側で常駐化できるようにマネージメントする。データ移動に関するプロファイル情報を見ながら最適化していく。update)実行文を使用して、適宜、一部データの移動をホスト~デバイス間で行う。アクセラレータコンパイラサイトへページの先頭へ本ページに記述された各製品名は、各社の商標または登録商標です。