C# プロジェクトを構築しています。このプロジェクトでは、CUDA を通じて NVidia の Tesla を使用します。CUDA C のネイティブ実装は C# に直接公開されておらず、私の意見では、利用可能な C# ラッパー (Brahma、CUDAfy、Linq から GPU など) は、本番用に十分に成熟していません。
私は先に進み、公式にサポートされている方法である CUDA にアクセスする C++ コンポーネントで数学ロジックを構築することにしました。CLR 拡張機能をサポートしていないインテル C++ コンパイラーをパフォーマンスのために使用しているため、C++/CLI はオプションではありません。
私の最も重要な基準はパフォーマンスであるため、C++ (ビジネス ロジックが存在する場所) と .NET (残りのアプリケーション) の間で配列のマーシャリングとコピーを最小限に抑えようとします。
この質問が以前に尋ねられたことは承知していますが、ほとんどの場合、C++ ライブラリは既に存在し、C++/CLI がオプションである場合もありますが、ここでは両方の状況が当てはまりません。
C++ ライブラリをゼロから C++ で作成することを考えると、C# に公開するための最良の方法を決定する立場にいます。C++ と .NET の統合を最も簡単かつ最高のパフォーマンスで実現するために従うべき推奨事項やベスト プラクティスはありますか? 私が交換するものはほとんどが大きな配列であることに注意してください
編集: GPU へのアクセスを容易にするインフラストラクチャ ライブラリではなく、ビジネス ロジック (数学) を C++ で構築していることを明確にします。