[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
しかしP/InvokeでOpenCLのラッパーを書いて…というのは面倒なので、今回はOpenCLNetという物を使おうと思います。
これならC#から簡単にOpenCLが使えるようです。
と先日書いたのですが、どうやらClooというのもあるようです。
これもOpenCLのラッパーです。
こちらの解説もしてみます。
基本コピペで進みます。
こちらと一緒にご覧ください。
OpenCLでGPUを使ったプログラムを書くには、まずプラットフォームが必要です。
プラットフォームとは、GPUのメーカーが用意したOpenCLに対応した環境です。
NVIDIA CUDAやAMD Accelerated Parallel Processingですね。
(※これらはインストールしておかなければならないようです。
実は私は今使っているノートパソコンにはインストールしていませんでした。
以下のプログラム、実行しようとして失敗しました。
何も表示されなかったのです。
…と思っていたらAMD Accelerated Parallel Processingをインストールしても失敗しました。
どうやらAMD Catalyst Driversもインストールしなければいけないようですね)
さて、インストールが完了し準備が整ったらいよいよC#でプログラミングです。
まずはきちんとプラットフォームがインストールされているかを調べましょう。
using Cloo; class Program { static void Main() { foreach (ComputePlatform platform in ComputePlatform.Platforms) { System.Console.WriteLine(platform.Name); } } }
このプログラムを実行すると、私の環境では次のような結果になりました:
AMD Accelerated Parallel Processing
これは、私の環境にAMD Accelerated Parallel Processingがインストールされていることを意味します。
以前のと比べるとかなり簡単ですね。
ついでなのでプロパティを全部列挙してみましょう。
using Cloo; class Program { static void Main() { foreach (ComputePlatform platform in ComputePlatform.Platforms) { foreach (var property in typeof(ComputePlatform).GetProperties()) { System.Console.WriteLine( "{0} : {1}", property.Name, property.GetValue(platform) ); } } } }
結果は私の環境ではこうなりました:
Handle : Cloo.Bindings.CLPlatformHandle Devices : System.Collections.ObjectModel.ReadOnlyCollection`1[Cloo.ComputeDevice ] Extensions : System.Collections.ObjectModel.ReadOnlyCollection`1[System.String] Name : AMD Accelerated Parallel Processing Platforms : System.Collections.ObjectModel.ReadOnlyCollection`1[Cloo.ComputePlat form] Profile : FULL_PROFILE Vendor : Advanced Micro Devices, Inc. Version : OpenCL 1.2 AMD-APP (1124.2)