2014年5月15日木曜日

GPGPUがやりたい。②

現在OpenCLについて勉強中。

とはいっても、いつも通り本を買う訳ではなく、偉大なるネットの師に教えを乞う。

とりあえず
AMD-APP-SDK-v2.9-Windows-64.exe
をインストール。

私の現在役に立っているサイトは、以下のサイトです。


たぶんOpenCLを管理運営している団体のページ。分からない関数はここで調べる。ただし説明は英語。
http://jp.khronos.org/


環境を整える
http://ameblo.jp/kyororo39/entry-11756524043.html


コードを書く(関数……いやAPI??の説明が丁寧)
http://colorlessfeless.wordpress.com/category/opencl/



たぶん一番情報量の多いブログ。
ただし、詳しい分簡潔ではない。
(自己紹介がすてきな人で、きっとすてきな我が師匠となるはず)

番号は私が勝手に振った。⑥までは上記の2サイトで事足りたので、
⑦の記事からお世話になっている(現在進行形)。
次は⑨の記事を読もうかと思っている。もうすぐ半分。でも先は長い……

①『プログラミング』 OpenCLプログラミング環境の構築
http://www.wisterias.org/?p=3671

②『プログラミング』 AMD OpenCL サンプルを試す
http://www.wisterias.org/?p=3685

③『プログラミング』 OpenCLプログラミングのためのVisual Studioでの設定
http://www.wisterias.org/?p=3688

④『プログラミング』 OpenCLプログラミング clGetPlatformIDs()
http://www.wisterias.org/?p=3692

⑤『プログラミング』 OpenCLプログラミング clGetPlatformInfo()
http://www.wisterias.org/?p=3708

⑥『プログラミング』 Macで先ほどのclGetPlatformInfo()を動かしてみる
http://www.wisterias.org/?p=3721

⑦『プログラミング』 OpenCLプログラミング clGetDeviceIDs()
http://www.wisterias.org/?p=3729

⑧『プログラミング』 OpenCLプログラミング clGetDeviceInfo()
http://www.wisterias.org/?p=3747

⑨『プログラミング』 OpenCLプログラミング Context関連
http://www.wisterias.org/?p=3754

⑩『プログラミング』 OpenCLプログラミング CommandQueue関連
http://www.wisterias.org/?p=3763

⑪『プログラミング』 OpenCLプログラミング OpenCL Cのビルド
http://www.wisterias.org/?p=3768

⑫『プログラミング』 OpenCLプログラミング clCreateKernel()
http://www.wisterias.org/?p=3773

⑬『プログラミング』 OpenCLプログラミング バッファオブジェクト
http://www.wisterias.org/?p=3777

⑭『プログラミング』 OpenCLプログラミング OpenCLプログラムの実行
clEnqueueNDRangeKernel()とかの説明。
http://www.wisterias.org/?p=3783

⑮『プログラミング』 OpenCLプログラミング ベンチマーク
http://www.wisterias.org/?p=3790

⑯『プログラミング』 OpenCL参考書
http://www.wisterias.org/?p=3793

⑰『プログラミング』 OpenCLプログラミング clEnqueueNDRangeKernel()関数の、global_work_size
http://www.wisterias.org/?p=3801

⑱『プログラミング』 OpenCLプログラミング ベンチマーク再び
http://www.wisterias.org/?p=3807




追記:
上記のサイトはさすがに長いので、辞書として使おう。
http://www.02.246.ne.jp/~torutk/cxx/opencl/

あたりで取りあえず動かないかな?

メモ
スコープ解決演算子「::」について
http://msdn.microsoft.com/ja-jp/library/b451xz31.aspx
参照

関数の頭にstaticが付く場合。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1056034115
「関数定義の頭にstaticをつけた場合、実態が定義されているファイル内からのみ使用できる関数になります。
他の*.cファイルにプロトタイプを書いても呼び出されないことが保障された関数となります。」
あとは、名前の重複がなんとかかんとからしい。

const
http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/const.html
「関数の引数に const を指定すると、その関数の中では値を書き換えることができなくなります。これはクラスのメンバ関数であっても同じです。」


OpenCLでコンパイルが失敗する原因のめも。
Windowsでの改行は「\r\n」であるため、
freadで読み込むと、内部で「\r\n」→「\n」と変換されるため、
ファイルサイズに改行分だけ誤差が生じる。
http://d.hatena.ne.jp/dfelix/20071018
辺りを参照。

0 件のコメント:

コメントを投稿