C#でOpenCL with OpenTK + Cloo
-
Upload
aokomoriuta -
Category
Technology
-
view
2.602 -
download
11
description
Transcript of C#でOpenCL with OpenTK + Cloo
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
青子守歌
C#でOpenCL with OpenTK+Cloo
- 2 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
どんなことができるか
どんなことができるか
<OpenTK+Cloo>
- 3 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
.NET Frameworkをふんだんに使った
かっちょいいアプリ
どんなことができるか<OpenTK+Cloo>
- 4 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
OpenCL-GL interopで高速かつきれいなかっちょいいアプリ
どんなことができるか<OpenTK+Cloo>
- 5 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
こんなの↓どんなことができるか
<OpenTK+Cloo>
- 6 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
計算空間へのリアルタイム干渉!
(入出力)
どんなことができるか<OpenTK+Cloo>
- 7 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
Open TKとClooとは
OpenTKとClooとは<OpenTK+Cloo>
- 8 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
対象環境:Windowsです!
MacとLinuxはどうなんだろう?
<OpenTK+Cloo>
OpenTKとClooとは
- 9 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
OpenTKとは
Open Tool Kit:http://www.opentk.com/
OpenGLをC# (.NET Framework/Mono)から使うフレームワーク
<OpenTK+Cloo>
- 10 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
OpenTKの使い方
OpenTKのインストール方法
<OpenTK+Cloo>
- 11 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
インストールするには
ダウンロードしてインストーラ使え?
<OpenTK+Cloo>
- 12 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
インストールした後は
VisualStudioの参照設定にOpenTKが追加されます
<OpenTK+Cloo>
- 13 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
OpenTKの使い方
OpenGLの使い方は割愛!
<OpenTK+Cloo>
- 14 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
OpenTKをWPFで使うには
※注意OpenTKのGLControlがForm向け
→WPFで使うにはWindowsFormsHostを使うのが一番ラク(速度も気にならない)
<OpenTK+Cloo>
- 15 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
詳しい使い方とかは
私の学習用レポジトリ@githubをご覧あれ?
https://github.com/aokomoriuta/StudiesOfOpenTK
そのうちドキュメント作ります
<OpenTK+Cloo>
- 16 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
Clooとは
Cloo:http://sourceforge.net/projects/cloo/
OpenCLをC# (.NET Framework/Mono)から使うフレームワーク
<OpenTK+Cloo>
- 17 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
Clooのインストール方法
Clooのインストール方法
<OpenTK+Cloo>
- 18 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
ソースそのままを
インストーラみたいなのはないので、ソースそのものをダウンロードします
オリジナルzip:http://sourceforge.net/projects/cloo/files/latest/
オリジナルgitレポジトリ:git://cloo.git.sourceforge.net/gitroot/cloo/cloo
非公式githubレポジトリby青子守歌:https://github.com/aokomoriuta/Cloo
<OpenTK+Cloo>
- 19 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
自分のソリューションへ
VisualStudioのプロジェクトを追加
<OpenTK+Cloo>
- 20 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
Clooの使い方
Clooの使い方!!
<OpenTK+Cloo>
- 21 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
そもそもOpenCLとは異種演算装置が混在する計算環境のためのフレームワーク
ホスト
プログラムオブジェクト
ソースコード(OpenCL C)
コンテキスト
メモリ転送コマンドカーネル実行コマンド同期コマンド
読み込み
ビルド
コマンド発行
実行
引数
コマンドキューメモリオブジェクトB
メモリオブジェクトA
カーネルA
カーネルB
デバイス
CPU
GPU
DSP
Cell
OpenMP, MPIなど
など
CUDA, ATI Streamなど
<OpenTK+Cloo>
- 22 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
処理の順番1. 初期化する2. プログラムを作る3. メモリを確保4. 入力値を書き込む5. プログラムを実行する6. 出力値を読み込む
<OpenTK+Cloo>
- 23 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
初期化する1
1. platformとdevice取得
<OpenTK+Cloo>
- 24 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
初期化する2
2. contextとcommand queue作成
<OpenTK+Cloo>
- 25 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
プログラムを作る
3. programとkernel作成
<OpenTK+Cloo>
- 26 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
メモリを確保
4. buffer作成
<OpenTK+Cloo>
- 27 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
入力値を書き込む
5. bufferへ書き込み
<OpenTK+Cloo>
- 28 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
プログラムを実行する
6. kernel実行
<OpenTK+Cloo>
- 29 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
出力値を読み込む
7. bufferから読み込み
<OpenTK+Cloo>
- 30 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
以上です!
割と簡単でしょう?
<OpenTK+Cloo>
- 31 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
応用例とかは
私の学習用レポジトr(ry
https://github.com/aokomoriuta/StudiesOfOpenCLWithCloo
そのうちドキュメント作りません
<OpenTK+Cloo>
- 32 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
Clooの問題点
・開発が最近放置気味・命名規則が気に入らない・C#に最適化されてない
(ジェネリックとか)
<OpenTK+Cloo>
- 33 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
個人的には
Clooのバインド(ラッパー)だけ使う
<OpenTK+Cloo>
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
一部で特別な指定があるものを除き、全ての文章と画像はクリエイティブ・コモンズ 表示-継承または表示-非営利 3.0 非移植で利用可能です。
Otherwise noted, all text and images are availableunder the Creative Commons Attribution-Share Alike or Attribution-Noncommercial 3.0 Unported.
CC-BY-SA: http://creativecommons.org/licenses/by-sa/3.0 CC-BY-NC: http://creativecommons.org/licenses/by-nc/3.0
return 0;