× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
http://bakadegomen.7narabe.net/Entry/38/
前回の記事の解説を書いておきます。 C言語だと変数宣言を最初にしないといけないから見づらい。 C++でやるべきだったかな・・・ OpenCLのAPIを呼び出すためだけに宣言・定義しているので、 APIを呼び出す寸前に書いた方が説明としては分かりやすいと思う。 疲れたのでOpenCLはここまででいいや。並列処理が必要になったら また参考書でも読みます。 そんなわけで続きに書きます。 PR |
並列処理を行う方法について書きます。
グラフィックカードやマルチコアの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でのサンプルを続きに書きます。 (バグ修正に疲れたので解説は次回) |
OpenCLの習得をしようと思います。
CUDAは学校でやったけど家のグラフィックカードがAMDでしたw そんなわけで参考書コピペメインでいきます。 詳しくは続きに書いておきます。 |
| ホーム |
|