145

グリッドからより多くの処理能力を得ようとしています。

すべての CPU/コアを使用していますが、C# で GPU を利用することは可能ですか。

ライブラリを知っている人やサンプルコードを入手した人はいますか?

4

13 に答える 13

167

[この回答でさえかなり古くなるので、2017年10月を編集してください]

これらの回答のほとんどはかなり古いので、各プロジェクトがどこにあると思うかについての最新の要約を提供したいと思いました。

  • GPU.Net(TidePowerd)-私はこれを6か月ほど前に試しましたが、少し手間がかかりましたが、動作しました。コンパイル時にC#カーネルコードをcudaに変換します。残念ながら、彼らのWebサイトはダウンしており、GitHubは数年間更新されていません。これは、プロジェクトが停止していることを示している可能性があります。

  • Cudafy-オープンソースで非常に使いやすい。実行時にC#カーネルコードをcudaに変換します(シリアル化およびキャッシュ機能付き)。CPU上で同じカーネルコードを簡単に実行できます(主にデバッグ用)。複数のGPUをサポートします。ここで他のものより多くの例が利用可能です。他の回答で参照されている定型コードは最小限であり、私の場合、少なくともコードがどのように機能するかを理解するのに役立ちました。ただし、Cuda/Nvidiaのみ。残念ながら、彼らは2、3年もソリューションを更新しなかったようです(2015年の最新のコミット-cuda 7.0のサポート)。

  • ハイブリダイゼーション装置。C#をCUDAにコンパイルする商用ソリューション。VisualStudioマーケットプレイスの無料コミュニティエディションとgithubのサンプルを提供します。

  • コンシューマーGPU用の無料のコミュニティエディションを備えたAleaGPU商用ソリューション。詳細については、ダニエルのコメントを参照してください。

  • Brahma -OpenCLを介してLINQ式を実行します(AMDもサポートします)。ドキュメント/例はあまりありません。2011年の最終更新。

  • C$ -最後の開発は10年以上前でした...

  • Microsoft Accelerator-同様に、もはや積極的に開発されているようには見えません。

  • 他のいくつか(C ++ AMPOpenTK --dead / Cloo)-これらの多くは単なるバインディングです-つまり、C#からGPUを呼び出すことができますが、カーネルコード(実際にGPUで実行されるコード)はで記述する必要がありますCまたはOpenCL。つまり、別の言語を使用(および学習)する必要があります。

私が言ったように、私は他のすべてよりもCudafyをお勧めします-それがOpenCLとCudaで実行できれば、それは完璧でしょう。

2013年9月の編集 Cudafyでは、CUDAとOpenCLの両方をコンパイルできるようになったため、すべてのGPUで同じC#コードを実行します。私はまだOpenCLコンパイルをテストしていませんが、これは素晴らしいように聞こえます。

于 2012-12-05T00:49:59.487 に答える
49

Microsoft Research Acceleratorは .NET GP GPU ライブラリでした。

于 2008-12-17T16:46:39.390 に答える
27

ブラフマーを見つけました...GPUでメソッドを実行できるGPGPUプロバイダーもあります...質問をありがとう...今日何か新しいことを学びました。:)

于 2008-12-17T18:50:09.250 に答える
10

ここに別のものがあります: CUDAfy。メソッド属性のような単純なもので、メソッド全体を GPU で実行できるという点で、GPU.Net のように聞こえます。ただし、GPU.Net とは異なり、CUDAfy は無料でオープンソースです。

ただし、GPU.Net はボイラープレート コードを必要としないように見えますが(ドキュメントによると、「ビルド ツールによって自動的に挿入されます」)、CUDAfy は必要です。


CUDAfyを使用してアプリケーションを構築する例を次に示します。

于 2012-07-26T23:26:10.470 に答える
10

XNA Game Studio を調査の手段としてお勧めできますか? これは明らかにゲームの作成に適していますが、グラフィックス カードへの管理されたアクセスを提供し、機能の列挙関数やシェーダー開発へのアクセスが、たとえば管理された DirectX で以前に提供されていたものよりもはるかに優れています。WinForms と XNA を組み合わせてハイブリッド アプリケーションにする方法もあります。

http://www.ziggyware.com/news.php?readmore=866

シェーダー プログラミング (XNA は HLSL をサポートしています) の学習にある程度の労力を費やす必要がありますが、これは、nVidia の CUDA などのベンダー固有のソリューションを学習するよりも簡単な方法かもしれません。利点は、100% 管理された環境でプログラミングできることです。HLSL のリンクを次に示します。

http://www.ziggyware.com/weblinks.php?cat_id=9

GPGPU サイトも、汎用の GPU プログラミングに推奨される場所です。

http://gpgpu.org/

頑張ってください!

于 2008-12-17T16:22:31.747 に答える
9

http://www.tidepowerd.com/ GPU.NETはどうですか?

于 2011-08-05T12:14:56.487 に答える
7

ブラフマーに加えて、C $(「Cバックス」と発音)を見てください。彼らのCodePlexサイトから:

[C $]の目的は、最新のGPUとCPUでシームレスな並列プログラミングを行うための統一言語とシステムを作成することです。

これはC#に基づいており、遅延評価され、複数のアクセラレータモデルを対象としています。

現在、対象となるアーキテクチャのリストには、GPU、マルチコアCPU、マルチGPU(SLI、CrossFire)、およびマルチGPU+マルチCPUハイブリッドアーキテクチャが含まれます。

于 2009-11-03T05:48:11.153 に答える
7

町には新しい Microsoft ソリューションがあります - C++ AMP (イントロはこちら)。

C# からの使用は、P/Invoke を介して行われます。これは、デスクトップ アプリについてはここでデモさ、(呼び出し禁止) Metro アプリについてはここでデモされます。

編集: C++ AMP にはオープンな仕様があることに注意してください。これは、必ずしも MS コンパイラーまたは Windows 用であるとは限らないことを意味します。

編集:どうやら、技術は現在「メンテナンスモード」にあり、バグを修正していることを意味しますが、積極的に開発していません.

于 2012-08-31T21:54:20.183 に答える
2

管理された DirectX が何らかの形で動作する可能性があります

于 2008-12-17T15:57:20.533 に答える
2

CenterSpace Software のNMathライブラリには、C# プロジェクトに追加できる GPU を利用した計算があります。業務用商品です。

于 2016-09-04T08:50:43.717 に答える