Ccall: could not find function ** in library /usr/local/cuda-7.0/lib64/libcusolver.so.7.0.28


#1

Hi everyone, I am trying to use QR factorization to solve linear systems using CuArrays package. I am following this CUDA documentation (written in C) and I am trying to do it in Julia.

I am using julia 0.6.0. Here is versioninfo:

Julia Version 0.6.0
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT NO_AFFINITY NEHALEM)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, sandybridge)

This is what my function looks like:

# function to solve linear equations using Cholesky factorization
function solveleq( A::CuArray{Float64,2}, B::CuArray{Float64,2} )
    b = copy(B)
    a = copy(A)
    (a, tau) = CuArrays.CUSOLVER.geqrf!(a)
    CuArrays.CUSOLVER.ormqr!('L', 'T', a, tau, b)
    alpha = Float64(0.0) 
    CuArrays.CUSOLVER.trsm!('L', 'U', 'N', 'N', alpha, a, b)
    return b
end

When I call the function, I am having an error ERROR: LoadError: ccall: could not find function cusolverDnDormqr_bufferSize in library /usr/local/cuda-7.0/lib64/libcusolver.so.7.0.28.
Can anyone help me out with this error? Thank you!


#2

Looks like I have an old version of CUDA. I was using CUDA 7.0. I tried the same code on another machine that has CUDA 9.1 and the error is solved.