我有一个结构' DDReal'被CUDAfied依赖于一个班级' Base'有静态方法是CUDAfied - 都在同一个项目的单独文件中。它们被编译成一个DLL程序集,由发生CUDAfying的主程序调用。
在主程序中,如果我这样做:
var km = ...Cudafy(typeof(Base));
这个编译好了。
但如果我做var
var km = ...Cudafy(typeof(Base), typeof(DDReal));
由于DDReal在基础之前被翻译(由.cu文件证明),因此存在编译器错误。
'基地'需要首先翻译,然后是“DDReal”。
无论如何我可以强制这样做,以便类' Base的静态方法的C定义出现在struct' DDReal'的定义之前。在生成的CUDAFYSOURCETEMP.cu文件中?
答案 0 :(得分:0)
Cudafy,唉,不适合这种情况:Cudafy将所有结构定义放在输出源代码.cu文件中的类方法原型声明之前。
所以我修改了Cudafy源代码以解决我的问题。我已经在属性类中添加了一个2-param构造函数' Cudafy'这样第二个参数可以指定类方法的默认行为或预结构原型声明。所有Cudafy的单元测试和示例都可以查看OK以及我自己的单元测试。
如果有兴趣我可以将源+ DLL上传到github。