OpenCL C 言語
C言語と似たような書き方で並列処理を記述するためのプログラミング言語
CUDAもC言語みたいなものだし、この分野はやたらC言語に
こだわっているのかな?まあ、ごく一部の人しか扱えないような
プログラミング言語に似せるよりは扱える人が多い言語に似せるよね
カーネルコード
並列処理を記述するソースコード
__kernel void hello(__global char* string) ←こういうのカーネル関数って呼ぶ
こんなのとこんなのの中身がカーネルコード?
ホストコード
C言語で書かれた普通のソースコードのことみたいな
ホストコードからカーネルコードを呼び出すことで並列処理を実現
開始から終了までの手順(色分けしたけど見やすくならないw)
1.プラットフォームの特定
(
動作環境)
2.デバイスの特定
(
nコアCPUを使うとかGPUを使うとか)
3.コンテキストの作成
(
GPUをいくつ使うとか実行環境)
4.コマンドキューの作成
(
コンテキストとかをぶっこんでホストとデバイスのやりとりを準備)
5.メモリオブジェクトの作成
(
デバイス上で使用するメモリを確保)
6.カーネルファイルの読み込み
(
カーネルコードをホストコードに読み込ませる)
7.プログラムオブジェクトの作成
(
読み込んだカーネルコードなどをプログラムオブジェクトとしておく)
8.ビルド
(
プログラムオブジェクトをコンパイル・リンクする)
9.カーネルオブジェクトの作成
(
プログラムオブジェクトに含まれている1つ1つのカーネル関数が、1つ1つのカーネルオブジェクトになっているので抽出)
10.カーネル引数の設定
(
カーネルオブジェクトは元カーネル関数なので引数を指定)
11.カーネルの実行
(
コマンドキューにカーネルオブジェクトをぶっこむ)
12.メモリオブジェクトからの読み込み
(
実行結果をデバイス上のメモリから入手)
13.オブジェクト解放
(
確保したメモリなどを解放)
何だこの参考書、専門用語の定義が明記されてない・・・
「CPUの創りかた」を読んだ後だとこういう本に拒否反応がw
PR