CUDA链接错误:未定义引用`cyl_bessel_i0f'

时间:2015-11-25 20:27:49

标签: cuda

为什么我在下面的示例程序中遇到以下链接器错误?

test_cyl_bessel_i0f.o: In function `main':
tmpxft_00007f3f_00000000-4_test_cyl_bessel_i0f.cudafe1.cpp:(.text+0x26): undefined reference to `cyl_bessel_i0f'
collect2: error: ld returned 1 exit status

我正在使用以下命令编译和链接代码:

nvcc -I/usr/local/cuda/include -c test_cyl_bessel_i0f.cu
nvcc -L/usr/local/cuda/lib64 -o test_cyl_bessel_i0f test_cyl_bessel_i0f.o -lcudart

示例程序是

#include <stdio.h>

#include <math_functions.h>

int main(void)
{
    float a;
    a = cyl_bessel_i0f(0.5f);
    printf("%f\n", a);

    return 0;
}

我正在使用CUDA 7.5。

2 个答案:

答案 0 :(得分:1)

正如您现在discovered,这些CUDA数学库函数没有主机实现(即使文档和头文件中存在细微的提示),这也无法解决。

答案 1 :(得分:0)

如上所述,此问题是文档错误。尽管CUDA文档(例如[1])显示了使用__host__指令定义的cyl_bessel_i0f(和朋友),但这些函数的主机版本在CUDA Math库中不可用。 NVIDIA已经承认了这个问题,我已要求他们更新CUDA文档。我正在为其他人发布这个答案,以防他们遇到同样的问题。

[1] http://docs.nvidia.com/cuda/cuda-math-api/group__CUDA__MATH__SINGLE.html#group__CUDA__MATH__SINGLE