CUDA.NET利用メモ

C#で、CUDA.NETを利用してCUDAでプログラムを実行するまでに、一手間かかったので、それまでの手順で引っかかったところを中心にメモ。

利用環境

  • GeForce GTX285
  • WindowsXP Pro. SP3 (32bit)
  • VisualStudio2008 Pro.
  • ForceWare 195.62, tool-kit 2.3, SDK 2.3
  • CUDA.NET 2.3.7

前回との違い

おおまかな流れとしては、去年、GeForce8400GSとVisualStudioEEの組み合わせでやった時と同じ。

前回の導入まとめ
http://d.hatena.ne.jp/kaminarioyaji/20081130/1228027865

前回と異なった点は

CUDA.NET入手先URLが変わってた
CUDA.NET
http://www.hoopoe-cloud.com/Solutions/CUDA.NET/Default.aspx
toolkit関係の環境変数は自動的に追加された

もっとも、前回はSDKを入れてなかったのでそのせいかもしんない。

VisualStudioの設定

色分けに.cu追加

めんどくさかったので、最低限(C++)のハイライトだけはできるように、オプションでC++のファイル拡張子に*.cuを追加して終了。

下記記事の3、4の手順を踏めば、CUDAのハイライト・intellisenceが可能になるっぽい。

CUDA 1 -導入-
http://kgxpx834.blog58.fc2.com/blog-entry-6.html

CUDA.NETを使う上での設定

cl.exeのパスを環境変数に追加

パスを通してないと、ビルド時nvccがエラー-1を返す。

フルスクラッチでプロジェクトを作成する場合、さらに

*.cuファイルは、プロパティで出力先にコピーするよう指定
プロジェクトのプロパティで、ビルド後イベントにnvccのコンパイルコマンド入力
nvcc *.cu --cubin
倍精度を用いる場合は、-arch=sm_13オプション追加
nvcc *.cu --cubin -arch=sm_13

最初、このオプションの存在に気付かず、計算結果がCPUの倍精度で行った場合と合わなくて困った。

参考URL
http://d.hatena.ne.jp/pippo21/20090701/1246430783
おまけ

CUDA.NETでは、cubinを呼び出す都合、CUDAコード部分のデバッグができないので、下記のツールを使って、cubinファイルのディスアセンブルとかやっちゃうと便利かもしんない。

decuda
http://wiki.github.com/laanwj/decuda