如何解决Conda Numba Cuda:找不到libNVVM
我的开发环境是:Ubuntu 18.04.5 LTS,Python3.6,我已经通过conda(numba和cudatoolkit)安装了。 cuda支持的Nvidia GPU GeForce GTX 1050 Ti。
conda和numba的安装似乎可以按预期工作,因为我可以在python3.6脚本中导入numba。
该问题的情况似乎与此处提出的问题相同:Cuda: library nvvm not found 但是所提出的解决方案似乎都不适合我,并且我不确定如何正确突出我的处境(我无法通过其他线程的回答来做到这一点...)。如果提出该问题的副本不适当,请指导我进行适当的行为。
当我尝试运行下面的代码时,出现以下错误: numba.cuda.cudadrv.error.NvvmSupportError:找不到libNVVM。做conda install cudatoolkit
:找不到库nvvm
from numba import cuda,float32
#Controls threads per block and shared memory usage.
#The computation will be done on blocks of TPBxTPB elements.
TPB = 16
@cuda.jit
def fast_matmul(A,B,C):
# Define an array in the shared memory
# The size and type of the arrays must be known at compile time
sA = cuda.shared.array(shape=(TPB,TPB),dtype=float32)
sB = cuda.shared.array(shape=(TPB,dtype=float32)
x,y = cuda.grid(2)
tx = cuda.threadIdx.x
ty = cuda.threadIdx.y
bpg = cuda.gridDim.x # blocks per grid
if x >= C.shape[0] and y >= C.shape[1]:
# Quit if (x,y) is outside of valid C boundary
return
# Each thread computes one element in the result matrix.
# The dot product is chunked into dot products of TPB-long vectors.
tmp = 0.
for i in range(bpg):
# Preload data into shared memory
sA[tx,ty] = A[x,ty + i * TPB]
sB[tx,ty] = B[tx + i * TPB,y]
# Wait until all threads finish preloading
cuda.syncthreads()
# Computes partial product on the shared memory
for j in range(TPB):
tmp += sA[tx,j] * sB[j,ty]
# Wait until all threads finish computing
cuda.syncthreads()
C[x,y] = tmp
import numpy as np
matrix_A = np.array([[0.1,0.2],[0.1,0.2]])
执行建议的操作并运行conda install cudatoolkit
不起作用。我尝试了许多此安装的变体,但都没有在网上找到。
在另一篇文章中,一种似乎对许多人有用的解决方案是在主目录的.bashrc
文件中添加有关环境变量的行。但是,这些建议指向的是/usr
目录中存在的文件,因为我是通过conda安装的,所以在该目录中我没有cuda数据。我对这些出口尝试了许多变体,但均未成功。这也许是解决方案所在的地方,但是如果是这样,那么解决方案将从通用化中受益。
有人对此问题有任何最新的或广义的解决方案吗?
编辑:从终端输出中添加信息(感谢您提示编辑问题的提示)
> conda list numba
# packages in environment at /home/tobka/anaconda3:
#
# Name Version Build Channel
numba 0.51.2 py38h0573a6f_1
> conda list cudatoolkit
# packages in environment at /home/tobka/anaconda3:
#
# Name Version Build Channel
cudatoolkit 11.0.221 h6bb024c_0
还添加来自numba -s
的输出:https://pastebin.com/raw/6u1MUkxg
可能原因的想法(尚未确认):我在numba -s
输出中注意到它指定了Python Version: 3.8.3
,在终端中我已经明确使用python3.6
,因为简单地使用python
通常意味着使用python2.7
。但是,我检查了一下,现在我的系统使用带有python
命令的Python 3.8.3和带有python3.6
的Python 3.6.9。当使用python
运行代码时,我得到了一个语法错误,这是一个好兆头:raise ValueError(missing_launch_config_msg)
。
我将尝试修复语法错误并确认代码可以正常工作,然后在此报告情况。
解决方法
解决方案的确认:在终端中使用python
代替python3.6
解决了该问题。根本原因是用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。