cuda - CURAND 库 - 编译错误 - 对函数的 undefined reference

标签 cuda gpu gpgpu prng

我有以下代码,我正在尝试使用 nvcc 进行编译。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <cuda.h>
#include <curand.h>

int main(void)
{
    size_t n = 100;
    size_t i;
    int *hostData;
    unsigned int *devData;
    hostData = (int *)calloc(n, sizeof(int));
    curandGenerator_t gen;
    curandCreateGenerator(&gen, CURAND_RNG_PSEUDO_MRG32K3A);
    curandSetPseudoRandomGeneratorSeed(gen, 12345);
    cudaMalloc((void **)&devData, n * sizeof(int));
    curandGenerate(gen, devData, n);
    cudaMemcpy(hostData, devData, n * sizeof(int), cudaMemcpyDeviceToHost);
    for(i = 0; i < n; i++)
    {
        printf("%d ", hostData[i]);
    }
    printf("\n");
    curandDestroyGenerator (gen);
    cudaFree ( devData );
    free ( hostData );
    return 0;
}

这是我收到的输出:
$ nvcc -o RNG7 RNG7.cu
/tmp/tmpxft_00005da4_00000000-13_RNG7.o: In function `main':
tmpxft_00005da4_00000000-1_RNG7.cudafe1.cpp:(.text+0x6c): undefined reference to `curandCreateGenerator'
tmpxft_00005da4_00000000-1_RNG7.cudafe1.cpp:(.text+0x7a): undefined reference to `curandSetPseudoRandomGeneratorSeed'
tmpxft_00005da4_00000000-1_RNG7.cudafe1.cpp:(.text+0xa0): undefined reference to `curandGenerate'
tmpxft_00005da4_00000000-1_RNG7.cudafe1.cpp:(.text+0x107): undefined reference to `curandDestroyGenerator'
collect2: ld returned 1 exit status

我最初的猜测是由于某种原因,CURAND 库没有正确安装或找不到 curand.h 头文件。

请让我知道我应该寻找什么或如何解决我的问题。

谢谢!

最佳答案

@Wilo Maldonado:只需使用链接器标志 -lcurand 和
另外 -L/path/to/cuda/libs 如果你还没有它

关于cuda - CURAND 库 - 编译错误 - 对函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11734578/

相关文章:

cuda - nVIDIA 驱动程序如何将设备索引分配给 GPU?

cuda - CUDA的虚拟和实际架构之间的差异

r - R 中的神经网络利用 GPU

lisp - CUDA 的任何 Lisp 扩展?

linux - nvidia-smi 是否提供瞬时信息或时间间隔的平均值?

cuda - 来自 CUDA 代码的 100% GPU 使用率导致屏幕延迟

matrix - CUDA中共享内存的非方矩阵转置

opencv - OpenCV GPU 代码的可移植性如何?

cuda - 设备内存刷新cuda

cuda - 计算 2D 数组 CUDA 的平均值