CUDA 创建依赖于类的结构

本文关键字:结构 依赖于 创建 CUDA | 更新日期: 2023-09-27 18:36:26

我有一个结构"DDReal"是CUDAfied,它依赖于一个类"Base",该类具有要被CUDAfied的静态方法 - 两者都在同一项目的单独文件中。它们被编译成一个DLL程序集,由发生CUDAfying 的主程序调用。

在主程序中,如果我这样做:

 var km = ...Cudafy(typeof(Base));

这样编译就可以了。

但是如果我做var

  var km = ...Cudafy(typeof(Base), typeof(DDReal));

由于 DDReal 被翻译为 BEFORE Base 而存在编译器错误(如 .cu 文件所示)。

"Base"需要首先翻译,然后是"DDReal"。

无论如何,我可以强制这样做,以便类"Base"静态方法的 C 定义出现在生成的 CUDAFYSOURCETEMP.cu 文件中结构体"DDReal"的定义之前?

CUDA 创建依赖于类的结构

唉,Cudafy

不适合这种情况:Cudafy 将所有结构定义放在输出源代码 .cu 文件中的类方法原型声明之前。

所以我修改了 Cudafy 源代码以解决我的问题。我在属性"Cudafy"的类中添加了一个 2-param 构造函数,以便第二个参数可以指定默认行为或类方法的预结构原型声明。Cudafy 的所有单元测试和示例都检查 OK 以及我自己的单元测试。

如果有人感兴趣,我可以将源代码+ DLL上传到github。