Cuda CURAND库-编译错误-未定义对函数的引用

Cuda CURAND库-编译错误-未定义对函数的引用,cuda,gpu,gpgpu,prng,Cuda,Gpu,Gpgpu,Prng,我有下面的代码,我正试图编译使用nvcc 代码: 我最初的猜测是,由于某些原因,CURAND库没有正确安装,或者找不到CURAND.h头文件 请让我知道我应该寻找什么或如何解决我的问题 谢谢 问题不在于头文件,否则会出现编译错误。您有一个链接器错误。您需要告诉链接器在哪里可以找到包含这些函数的对象或库文件。@Wilo Maldonado:只需使用链接器标志-lcurand和 另外-L/path/to/cuda/libs(如果您还没有)我正在使用CentOS操作系统并在终端中运行代码。我如何告诉链

我有下面的代码,我正试图编译使用nvcc

代码:

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

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


谢谢

问题不在于头文件,否则会出现编译错误。您有一个链接器错误。您需要告诉链接器在哪里可以找到包含这些函数的对象或库文件。

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

我正在使用CentOS操作系统并在终端中运行代码。我如何告诉链接器在哪里可以找到库文件?我不太熟悉nvcc工具链,但是如果它是为了模仿gcc而设计的,那么你可以在编译器命令行上添加一个或多个
-l
选项,告诉链接器包含这些库。这与gcc非常相似,我应该告诉链接器包含哪些库?无论哪个库包含要调用的函数的实现。文档应该告诉您需要什么,就像它告诉您需要包含哪些头文件一样。谢谢!这很有效。再次感谢。在过去的几天里,我一直在努力解决这个问题。
#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