【发布时间】:2013-04-23 06:04:16
【问题描述】:
我想在 CUDA 中使用一个存在的函数,但它包含许多类和其他函数。
在每个函数之前添加__host__ __device__ 是微不足道的。那么,有没有一种自动方法可以做到这一点?或者如何让nvcc编译所有函数为__device__ __host__?
【问题讨论】:
-
总之,没有自动的方法可以做到这一点。但是正如您自己指出的那样,用__device__装饰您需要的功能是微不足道的,那么问题是什么?
-
好的...我想我可以写一个来做这个...
-
如果有很多现有的类和函数,最好修改它们并创建一个 GPU 特定的解决方案,而不是把所有东西都搞定
__device__。 -
我认为这是
nvcc的愚蠢限制。我知道编译为目标代码的函数需要知道它们的目标代码。但是内联函数或按需编译的函数(在实例化时),如成员函数或模板函数应该自动为__device__和/或__host__,如果它们被这样调用并且也可以(类似SFINAE)编译为这样的。我认为目前的情况很疯狂,我不能等到一些 nvcc 包装器或 nvcc 或 clang 自动完成。