web-dev-qa-db-ja.com

C#:CPUではなくGPUで操作を実行(Piを計算)

私は最近、計算の一部をGPUに移動するソフトウェア(主に科学/数学および暗号化に関連)について多くの記事を読みました。これにより、サポートされる操作の速度が100〜1000(!)倍になります。

C#を介してGPUで何かを実行するためのライブラリ、API、またはその他の方法はありますか?簡単な円周率計算を考えています。それがまったく関連している場合は、GeForce 8800 GTXを使用しています(ただし、カードに依存しないソリューションが望ましいでしょう)。

49
Alex

これは非常に新しいテクノロジーですが、調査するかもしれません [〜#〜] cuda [〜#〜] 。あなたの質問はC#でタグ付けされているので、ここに 。Netラッパー があります。

おまけとして、8800 GTXはCUDAをサポートしているようです。

20
Charlie Salts

C#からのGPU計算で言及されていない別のオプションは Brahma です。

Brahma は、GPU計算にLINQベースの抽象化を提供します-基本的にLINQ to GPUです。追加のライブラリなしでOpenGLおよびDirectXで動作します(ただし、SM3が必要です)。一部のサンプルはかなりすばらしいものです。

16
Reed Copsey

あなたは見たいかもしれません この質問

あなたはおそらく Accelerator を探していますが、一般的にゲーム開発に興味がある場合は、XNAを確認することをお勧めします

8
Tchami

CUDA.NET はまさにあなたが探しているものであり、特定のグラフィックスカードをサポートしているようです。

4

Windows APIコードパック を使用して、.NETから最新のDirect3D APIにアクセスできます。 Direct3D 11には計算シェーダーが付属しています。これらはCUDAにほぼ匹敵しますが、NVIDIA以外のGPUでも動作します。

マネージドDirectXとXNAは、Direct3D 9機能セットに制限されていることに注意してください。これは、GPGPUでの使用がやや難しいです。

3
Malte Clasen

NvidiaのCUDA apiには一連の.Netバインディングがあり、それは CUDA.net と呼ばれます。 リファレンスガイド を参照して、サンプルのC#コードを確認できます。

コプロセッサー(GPU)にアクセスするための推奨される方法は OpenCL を使用することです。これにより、コードはATIカードで移植可能になりますが、追加のコーディングが必要になる可能性があると思います。 OpenCLが.Netプラットフォームに対して多くのサポートを提供しています。

C++を使用する場合は、Visual Studioでコンパイルするサンプルコードを取得する方法について 簡単な概要はこちら です。

2
Darwyn

参考:アクセラレータ( http://research.Microsoft.com/en-us/projects/Accelerator/ )は、いくつかのテストでうまく機能していました。

0
Alex