4

私はC#でいくつかのリアルタイム画像処理プロジェクトに取り組んでおり、GPUを可能な限り活用したいと考えています。

具体的には、生のビットマップデータを含むものがいくつかあり、30 fpsにできるだけ近いbyte[]もの(画像)に対して、ハイ/ローパスフィルター、エッジ検出、マスキング、拡張、穴埋め、メディアンフィルターなどを実行する必要があります。byte[]かなり小さく、640x480より大きくはありません)

他にもGPGPUライブラリ(CudafyGPU.netAcceleratorなど)があることは知っていますが、それらのEULAは、ライブラリの「営利目的」での使用を禁止しているか、ライセンスを購入する必要があります。

現時点ではライセンスの資金がないので、何も費用をかけずに商業生産を可能にするオプションを模索しています。XNAは、両方の基準に適合する唯一のオプションであるように思われました。

ゲーム以外の設定でXNAを利用してGPUにアクセスする方法について利用できるリソースはありますか?C#経由でGPUにアクセスするために利用できる他のオプションはありますか?

4

2 に答える 2

4

このライブラリの作成者として、CodePlex上のオープンソースで無料の商用ライブラリ (Eclipse パブリック ライセンスに基づく) であり、LINQ を OpenCL として自動的に変換/実行するBrahmaを提案できますか?

もちろん、RAW OpenCL を使用したい場合は、ここCodeplex とNuget パッケージとして、OpenCL の .NET フレンドリーだが raw API バージョンも用意しています。

Brahma コードの例については、こちらを参照してください(これは FFT 用です)。

于 2012-04-30T19:09:19.233 に答える
1

Cloo経由でOpenCLを見てみたいと思います。これはオープンソースであり、MITライセンスの下でリリースされています。つまり、プロプライエタリパッケージに喜んで含めることができます。

OpenCLは、カーネルが利用可能なシステム上のGPU、CPU、および(理論的には)セルプロセッサで実行できるという点で、CUDAよりも少し柔軟性があります。Mono+ Linux + PS3を実行すると思いますが、その組み合わせは試していません。

(GPU.NETは、C#でカーネルを記述できるという点で優れていますが、現時点ではNVidia GPUでのみ実行されます。私の開発用ラップトップにはAMDチップセットが搭載されているため、これは私にとって大きな問題でした。)

OpenCLカーネルは、基本的にCであるOpenCL言語で記述されています。また、Intel、AMD、およびNVidiaによって積極的にサポートされています。

FDTD(光学/波動物理シミュレーション)プロジェクトにCloo / OpenCL + XNAを使用していますが、非常にうまく機能します。OpenCLコードは、GPU上の3Dアレイで動作します。XNAコードで視覚化するために、定期的にバッファをホストにコピーして戻します。

CPUに行ったり来たりせずにそのデータを共有する方法があるかもしれませんが、私はそれを見つけていません。視覚化の目的で、少なくとも私のアプリケーションでは、影響は最小限です。

于 2012-04-30T15:03:41.257 に答える