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

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

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


这样编译就可以了。

但是如果我做var

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


由于DDReal在Base之前被转换(由于.cu文件证明),因此存在编译器错误。

首先需要翻译“基础”,然后是“ DDReal”。

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

最佳答案

可惜的是,Cudafy不能满足这种情况:Cudafy在输出源代码.cu文件中的类方法原型声明之前放入所有结构定义。

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

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

10-08 06:22