SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2




C#でOpenCL with OpenTK+Cloo




         青子守歌
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

       どんなことができるか




どんなことができるか


                -2-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

        どんなことができるか


.NET Frameworkを
 ふんだんに使った
かっちょいいアプリ
                 -3-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

        どんなことができるか


OpenCL-GL interop
で高速かつきれいな
かっちょいいアプリ
                 -4-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

       どんなことができるか

       こんなの↓




                -5-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

       どんなことができるか



  計算空間への
リアルタイム干渉!
                             (入出力)

                -6-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

        OpenTKとClooとは




Open TKとClooとは


                -7-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

         OpenTKとClooとは


対象環境:
Windowsです!
 MacとLinuxはどうなんだろう?


                 -8-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

                   OpenTKとは

Open Tool Kit:
http://www.opentk.com/

 OpenGLを
 C# (.NET Framework/Mono)から
 使うフレームワーク
                     -9-
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

           OpenTKの使い方




OpenTKのインストール方法


                 - 10 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

       インストールするには




                ダウンロードして
                インストーラ使え?
                - 11 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
  <OpenTK+Cloo>

         インストールした後は

VisualStudioの参照設定に
OpenTKが追加されます



                  - 12 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

          OpenTKの使い方



 OpenGLの使い方は
     割愛!


                - 13 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

      OpenTKをWPFで使うには

※注意
OpenTKのGLControlがForm向け

→WPFで使うにはWindowsFormsHostを
使うのが一番ラク(速度も気にならない)


                   - 14 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

            詳しい使い方とかは



私の学習用レポジトリ@github
    をご覧あれ?
https://github.com/aokomoriuta/StudiesOfOpenTK



                    そのうちドキュメント作ります
                    - 15 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
     <OpenTK+Cloo>

                     Clooとは

Cloo:
http://sourceforge.net/projects/cloo/


  OpenCLを
  C# (.NET Framework/Mono)から
  使うフレームワーク
                     - 16 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

     Clooのインストール方法




Clooのインストール方法


                - 17 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
      <OpenTK+Cloo>

                ソースそのままを

 インストーラみたいなのはないので、
 ソースそのものをダウンロードします
オリジナルzip:
  http://sourceforge.net/projects/cloo/files/latest/
オリジナルgitレポジトリ:
     git://cloo.git.sourceforge.net/gitroot/cloo/cloo
非公式githubレポジトリby青子守歌:
              https://github.com/aokomoriuta/Cloo
                        - 18 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
  <OpenTK+Cloo>

       自分のソリューションへ

VisualStudioのプロジェク
トを追加



                  - 19 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

                Clooの使い方




Clooの使い方!!


                  - 20 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

                そもそもOpenCLとは
異種演算装置が混在する計算環境のためのフレームワーク
                                                               メモリ転送コマンド
                                   ホスト                         カーネル実行コマンド
 CPU    OpenMP, MPIなど
                              コマンド発行                           同期コマンド
                                            コンテキスト

 GPU    CUDA, ATI Streamなど
                              コマンドキュー
                                                       メモリオブジェクトA

                                                       メモリオブジェクトB
 DSP                         プログラムオブジェクト
                                                       カーネルA

 Cell
                                                                       引数

              など                          ビルド
                                                              実行
                                  読み込み


                                                       カーネルB


                             ソースコード
                                                           デバイス
                             (OpenCL C)
                               - 21 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

                処理の順番
1. 初期化する
2. プログラムを作る
3. メモリを確保
4. 入力値を書き込む
5. プログラムを実行する
6. 出力値を読み込む
                 - 22 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
    <OpenTK+Cloo>

                    初期化する1

1. platformとdevice取得




                     - 23 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

                   初期化する2

2. contextとcommand queue作成




                    - 24 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

             プログラムを作る

3. programとkernel作成




                   - 25 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
    <OpenTK+Cloo>

                    メモリを確保

4. buffer作成




                     - 26 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

             入力値を書き込む

5. bufferへ書き込み




                   - 27 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
    <OpenTK+Cloo>

           プログラムを実行する

6. kernel実行




                    - 28 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
   <OpenTK+Cloo>

             出力値を読み込む

7. bufferから読み込み




                   - 29 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
<OpenTK+Cloo>

                以上です!



割と簡単でしょう?


                 - 30 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
     <OpenTK+Cloo>

                     応用例とかは



   私の学習用レポジトr(ry

https://github.com/aokomoriuta/StudiesOfOpenCLWithCloo




                      そのうちドキュメント作りません
                         - 31 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

                 Clooの問題点



・開発が最近放置気味
・命名規則が気に入らない
・C#に最適化されてない
                   (ジェネリックとか)
                   - 32 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2
 <OpenTK+Cloo>

                 個人的には



Clooのバインド(ラッパー)
だけ使う


                  - 33 -
aokomoriuta (2012-10-13): 関西GPGPU勉強会#2




                            return 0;
                      Otherwise noted, all text and images are available
under the Creative Commons Attribution-Share Alike or Attribution-Noncommercial 3.0 Unported.

       一部で特別な指定があるものを除き、全ての文章と画像は
 クリエイティブ・コモンズ 表示-継承または表示-非営利 3.0 非移植で利用可能です。
    CC-BY-SA: http://creativecommons.org/licenses/by-sa/3.0   CC-BY-NC: http://creativecommons.org/licenses/by-nc/3.0

Más contenido relacionado

La actualidad más candente

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 

La actualidad más candente (20)

組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
BERT入門
BERT入門BERT入門
BERT入門
 
WebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボットWebRTCで動かす“テレイグジスタンス”ロボット
WebRTCで動かす“テレイグジスタンス”ロボット
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
Point net
Point netPoint net
Point net
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
 
【DL輪読会】A Path Towards Autonomous Machine Intelligence
【DL輪読会】A Path Towards Autonomous Machine Intelligence【DL輪読会】A Path Towards Autonomous Machine Intelligence
【DL輪読会】A Path Towards Autonomous Machine Intelligence
 
HoloLens/Windows Mixed Reality開発環境構築
HoloLens/Windows Mixed Reality開発環境構築HoloLens/Windows Mixed Reality開発環境構築
HoloLens/Windows Mixed Reality開発環境構築
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 

Similar a C#でOpenCL with OpenTK + Cloo

Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 

Similar a C#でOpenCL with OpenTK + Cloo (20)

OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight Keycloak
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
 
IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
 
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 

Último

Último (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

C#でOpenCL with OpenTK + Cloo