我试图使用cuda math api,如sqrtf(),__ fdividef(),并得到如下错误:
error C3861: '__fdividef':Identifier not found
error C3861: 'rsqrtf':Identifier not found
Run Code Online (Sandbox Code Playgroud)
似乎"NVIDIA CUDA Math API"没有指定当我们想要使用这些api时我们应该包含哪个标头.在helper_math.h中,它看起来像函数eg
inline __host__ __device__ float length(float4 v)
{
return sqrtf(dot(v, v));
}
Run Code Online (Sandbox Code Playgroud)
使用来自c库math.h的sqrtf的实现,是不是没有设备标识符的主机功能?我们可以直接在我们的设备功能中使用它吗?
请指正.谢谢.
我试图在Visual Studio 2010下使用CUDA 4.2编译一些CUDA代码(我使用Parallel Nsight 2.2创建了这个CUDA项目),但我遇到了一个原子问题"错误:标识符"atomicAdd"未定义",我仍然不能检查几个论坛后解决.
所以我试图从CUDA SDK Samples获取一些信息.首先,我在CUDA SDK中运行了simpleAtomicIntrinsics示例,该示例通过了测试.然后,我将此示例中的所有文件复制到visual studio 2010中的新CUDA 4.2项目并编译它们,结果如下.
1> E:\CUDA exercise Codes\CUDA_EXERCISES\CUDA_EXERCISES\CUDA_EXERCISES>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\simpleAtomicIntrinsics.cu.obj" "E:\CUDA exercise Codes\CUDA_EXERCISES\CUDA_EXERCISES\CUDA_EXERCISES\simpleAtomicIntrinsics.cu"
1> simpleAtomicIntrinsics.cu
1> tmpxft_00007220_00000000-3_simpleAtomicIntrinsics.compute_20.cudafe1.gpu
1> tmpxft_00007220_00000000-7_simpleAtomicIntrinsics.compute_20.cudafe2.gpu
1> simpleAtomicIntrinsics.cu
1>e:\cuda exercise codes\cuda_exercises\cuda_exercises\cuda_exercises\simpleAtomicIntrinsics_kernel.cu(33): error : identifier "atomicAdd" is undefined
1>
1>e:\cuda exercise codes\cuda_exercises\cuda_exercises\cuda_exercises\simpleAtomicIntrinsics_kernel.cu(36): …Run Code Online (Sandbox Code Playgroud) 我知道make_float4构造函数在vector_functions.h中,但是在CUDA中实现float4操作的头文件是哪个?
谢谢。