【问题标题】:Static linking with cublas与 cublas 的静态链接
【发布时间】:2020-10-20 21:31:45
【问题描述】:

我想将我的程序与cublas 的静态版本链接,但我得到了一些未定义的引用。命令和错误是

$ nvcc test.cu -o test --cudart=static  -ldl -lpthread -lcurand_static -lcublas_static -lculibos
/home/mahmood/cuda_10.1.168/bin/../targets/x86_64-linux/lib/libcublas_static.a(cublas.o): In function `cublasCtxInit(cublasContext**)':
cublas.compute_75.cudafe1.cpp:(.text+0x34b): undefined reference to `cublasLtCtxInit'
cublas.compute_75.cudafe1.cpp:(.text+0x417): undefined reference to `init_gemm_select'
...
...

其实库路径没问题,静态库文件中存在cublasLtCtxInit

$ ls -l /home/mahmood/cuda_10.1.168/lib64/libcublas_static.a
-rw-rw-r-- 1 mahmood mahmood 75127082 Jun 27 16:06 /home/mahmood/cuda_10.1.168/lib64/libcublas_static.a
$ grep cublasLtCtxInit ~/cuda_10.1.168/lib64/libcublas_static.a
Binary file /home/mahmood/cuda_10.1.168/lib64/libcublas_static.a matches
$ echo $LD_LIBRARY_PATH
/home/mahmood/cuda_10.1.168/lib64:

那么,我该如何解决呢?

【问题讨论】:

    标签: cuda nvcc


    【解决方案1】:

    正确的带有cublas的静态链接序列可以在Makefile中找到conjugateGradientCUDA sample code

    nvcc 所需的开关是:

    -lcublas_static -lcublasLt_static -lculibos
    

    示例:

    $ cat t1752.cu
    #include <cublas_v2.h>
    
    int main(){
    
      cublasHandle_t h;
      cublasCreate(&h);
    }
    $ nvcc t1752.cu -o t1752 -lcublas_static -lcublasLt_static -lculibos
    $
    

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2017-01-06
      相关资源
      最近更新 更多