将C#方法转换为C++方法

Mor*_*sen 3 c# c++ interop cuda gpgpu

我正在探索将常见的C#代码构造映射到C++ CUDA代码以在GPU上运行的各种选项.系统结构如下(箭头表示方法调用):

C#program - > C#GPU lib - > C++ CUDA实现库

GPU库中的方法可能如下所示:

public static void Map<T>(this ICollection<T> c, Func<T,T> f)
{
   //Call 'f' on each element of 'c'
}
Run Code Online (Sandbox Code Playgroud)

这是ICollection <>类型的扩展方法,它在每个元素上运行一个函数.但是,我希望它能够调用C++库并使其在GPU上运行方法.这将要求函数以某种方式转换为C++代码.这可能吗?

详细说明,如果我的库的用户执行了一个带有一些任意代码的方法(在C#中),我想将这段代码翻译成C++ equivelant,以便我可以在CUDA上运行它.我觉得没有简单的方法可以做到这一点,但我想知道是否有任何方法可以做到这一点或达到一些相同的效果.

我想知道的一件事是捕获要在Expression中转换的函数,并使用它将它映射到C++ equivelant.有人有这方面的经验吗?

Pop*_*lin 7

如果你想要一些参考如何在GPU上运行C#,那就是CUDA.Net.