CUDA编译错误-需要添加;包括「;连接到链接器

CUDA编译错误-需要添加;包括「;连接到链接器,cuda,gpu,gpgpu,prng,Cuda,Gpu,Gpgpu,Prng,我正在尝试使用CUDA编译器编译此代码: #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

我正在尝试使用CUDA编译器编译此代码:

#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_DEFAULT);
    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;
}
这是我收到的输出:

[root@client2 CUDA]$ nvcc -o RNG7 RNG7.cu
/tmp/tmpxft_00001ed1_00000000-13_RNG7.o: In function `main':
tmpxft_00001ed1_00000000-1_RNG7.cudafe1.cpp:(.text+0x6c): undefined reference to `curandCreateGenerator'
tmpxft_00001ed1_00000000-1_RNG7.cudafe1.cpp:(.text+0x7a): undefined reference to `curandSetPseudoRandomGeneratorSeed'
tmpxft_00001ed1_00000000-1_RNG7.cudafe1.cpp:(.text+0xa0): undefined reference to `curandGenerate'
tmpxft_00001ed1_00000000-1_RNG7.cudafe1.cpp:(.text+0x107): undefined reference to `curandDestroyGenerator'
collect2: ld returned 1 exit status
在另一次讨论中,他们指出该问题可能与链接器问题或其他问题有关,我需要在编译器命令中手动链接库,以包含代码中声明的库

我不知道该怎么做,有人能帮我吗


谢谢

使用以下选项

nvcc -o RNG7 RNG7.cu -lcurand -Xlinker=-rpath,/usr/local/cuda/lib

它会很有魅力的

我不知道curand库的名称是什么,但是为了链接它,你的命令行应该看起来像
nvcc-orngrng7.cu-lcurand
。可能重复@Wilo Maldonado:你不是问了这个完全相同的问题吗?这是同一个问题,有相同的链接器错误。@asm对另一个问题的回答是正确的。
nvcc -o RNG7 RNG7.cu -lcurand -Xlinker=-rpath,/usr/local/cuda/lib