我正在探索将常见 C# 代码构造映射到 C++ CUDA 代码以在 GPU 上运行的各种选项。系统结构如下(箭头代表方法调用):
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# 中),其中包含一些任意代码,我想将此代码转换为 C++ 等效项,以便我可以在 CUDA 上运行它。我觉得没有简单的方法可以做到这一点,但我想知道是否有任何方法可以做到这一点或达到一些相同的效果。
我想知道的一件事是捕获要在表达式中翻译的函数,并使用它来将其映射到 C++ 等价物。有人有这方面的经验吗?