3

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

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

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

这编译好。

但如果我做 var

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

由于 DDReal 在 Base 之前被翻译,导致编译器错误(如 .cu 文件所证明的那样)。

“Base”需要先翻译,然后是“DDReal”。

无论如何我可以强制执行此操作,以便类“Base”的静态方法的 C 定义出现在生成的 CUDAFYSOURCTEMP.cu 文件中结构“DDReal”的定义之前?

4

1 回答 1

0

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

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

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

于 2016-03-08T14:11:48.513 回答