忍者ブログ
  • 2024.08
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.10
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/09/17 09:27 】 |
サンプルソースコード解説
http://bakadegomen.7narabe.net/Entry/38/
前回の記事の解説を書いておきます。

C言語だと変数宣言を最初にしないといけないから見づらい。
C++でやるべきだったかな・・・
OpenCLのAPIを呼び出すためだけに宣言・定義しているので、
APIを呼び出す寸前に書いた方が説明としては分かりやすいと思う。

疲れたのでOpenCLはここまででいいや。並列処理が必要になったら
また参考書でも読みます。

そんなわけで続きに書きます。
PR
【2013/02/18 23:57 】 | OpenCL習得 | 有り難いご意見(0)
並列処理について
並列処理を行う方法について書きます。
グラフィックカードやマルチコアのCPUなど、並列処理を行える
ハードウェアには複数のプロセッサが搭載されています。
(4コアCPUなら4つのコアがこのプロセッサにあたる)

誤解を生む言い方をすれば、これらのプロセッサには番号が
ふられています。したがってこれらの番号ごとに違う処理を
記述すれば複数のプロセッサが並列処理をします。

例えばこんな感じ

id = get_id();
a[id] = b[id]+c[id];

プロセッサの番号を取得し、番号ごとに違う要素をいじる。
例えば番号として0がふられているプロセッサが実行する処理は

id = 0;
a[id] = b[id]+c[id];

つまりa[0] = b[0]+c[0];を実行します。
同じように1番のプロセッサはa[1] = b[1]+c[1];を、
2番のプロセッサはa[2] = b[2]+c[2];を、
3番のプロセッサはa[3] = b[3]+c[3];を、
それぞれ実行することになります。
これにより同時に実行させる処理が同じでも、
番号の違いにより並列処理を実現することができます。

実際には嘘八百だったりしますが原理は同じです。
とりあえずOpenCLでのサンプルを続きに書きます。
(バグ修正に疲れたので解説は次回)
【2013/02/17 18:39 】 | OpenCL習得 | 有り難いご意見(0)
OpenCL
OpenCLの習得をしようと思います。
CUDAは学校でやったけど家のグラフィックカードがAMDでしたw
そんなわけで参考書コピペメインでいきます。

詳しくは続きに書いておきます。
【2013/02/16 21:37 】 | OpenCL習得 | 有り難いご意見(0)
| ホーム |