【发布时间】:2013-09-19 08:06:03
【问题描述】:
//Header file A.h
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
class A
{
__host__ __device__ void move();
}
//cu file A.cu
#include "A.h"
{
__host__ __device__ void A::move()
{
...
}
}
当从另一个.cu 文件调用A.cu 文件中定义的方法时,我收到以下错误:
External calls are not supported (found non-inlined call to ...),
我正在使用sm_10 编译选项。
【问题讨论】:
-
这篇帖子CUDA External calls not supported是否已经为您提供了有用的信息?
-
在设置 -rdc=true 和 srm_20 后得到:未定义的对 '_ZNmoveEv' 的引用
-
当您拥有具有计算能力
1.0的卡时,您不能将编译用于计算能力2.0和可重定位代码... -
我检查了我的卡信息,你是对的,我的卡不支持计算能力 2.0,谢谢
-
我认为 A.cpp 实际上是 A.cu。宿主 C++ 编译器无法编译 __device__ 和 __host__ 装饰器,只有 nvcc 知道如何解析它们。