忍者ブログ
  • 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/19 11:47 】 |
OpenCL
OpenCLの習得をしようと思います。
CUDAは学校でやったけど家のグラフィックカードがAMDでしたw
そんなわけで参考書コピペメインでいきます。

詳しくは続きに書いておきます。
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
【2013/02/16 21:37 】 | OpenCL習得 | 有り難いご意見(0)
<<並列処理について | ホーム | オブジェクト指向>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>