GPU で実行するために、一般的な C# コード構造を C++ CUDA コードにマッピングするためのさまざまなオプションを検討しています。システムの構造は次のとおりです (矢印はメソッド呼び出しを表します)。
C# プログラム -> C# GPU ライブラリ -> C++ CUDA 実装ライブラリ
GPU ライブラリのメソッドは次のようになります。
public static void Map<T>(this ICollection<T> c, Func<T,T> f)
{
//Call 'f' on each element of 'c'
}
これは、各要素に対して関数を実行する ICollection<> 型の拡張メソッドです。ただし、私がやりたいことは、C++ ライブラリを呼び出して、GPU でメソッドを実行させることです。これには、何らかの形で関数を C++ コードに変換する必要があります。これは可能ですか?
詳しく説明すると、私のライブラリのユーザーが任意のコードを含むメソッドを (C# で) 実行した場合、このコードを CUDA で実行できるように C++ の同等のものに変換したいと考えています。これを行う簡単な方法はないと感じていますが、それを行う方法、または同じ効果を達成する方法があるかどうかを知りたい.
私が疑問に思っていたことの 1 つは、式で変換する関数をキャプチャし、これを使用して C++ の同等物にマップすることです。誰でもこれについて経験がありますか?