没有名为 numbapro 的模块
no module named numbapro
我 运行 我在 CUDA Python 介绍页面上阅读了这段代码:-
import numpy as np
from timeit import default_timer as timer
from numbapro import vectorize
@vectorize(["float32(float32, float32)"], target='gpu')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)
start = timer()
C = VectorAdd(A, B)
vectoradd_timer = timer() - start
print("C[:5] = " + str(C[:5]))
print("C[-5:] = " + str(C[-5:]))
print("VectorAdd took %f seconds" % vectoradd_timer)
if __name__ == '__main__':
main()
我在终端上收到以下错误:-
dtn34@dtn34-ubuntu:~/Python$ python asd.py
Traceback (most recent call last):
File "asd.py", line 3, in <module>
from numbapro import vectorize
ImportError: No module named numbapro
它应该 运行 使用 gpu 的代码,但我收到了那个错误。我已经安装了 anaconda,更新了 conda,使用 conda 安装了 accelerate,安装了 cudatoolkit,使用 conda 安装了 numba。
我尝试使用 python2 和 python3
编译它
我该怎么办?
知道了。正如 WarrenWeckesser 和 Robert Crovella 所指出的,NumbaPro 已被弃用,所有功能都已移至 numba。
所以你应该写 numba
而不是 numbapro
from numba import vectorize
此外,目标需要设置为 'cuda' 而不是 'gpu'
@vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a, b):
return a + b
我在修改后尝试运行它在(CPU和GPU)中,CPU比GPU
快
CPU中的第一个:
import numpy as np
from timeit import default_timer as timer
# from numba import vectorize
# @vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a ,b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.ones(N, dtype=np.float32)
srart = timer()
C = VectorAdd(A,B)
vectoradd_time = timer() - srart
print ("C[:5] = " + str(C[:5]))
print ("C[:-5] = " + str(C[:-5]))
print ('vectoradd_time %f second' % vectoradd_time)
if __name__== '__main__':
main()
时间:
vectoradd_time 0.046457 second
GPU中的第二个:
import numpy as np
from timeit import default_timer as timer
from numba import vectorize
@vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)
start = timer()
C = VectorAdd(A, B)
vectoradd_timer = timer() - start
print("C[:5] = " + str(C[:5]))
print("C[-5:] = " + str(C[-5:]))
print("VectorAdd took %f seconds" % vectoradd_timer)
if __name__ == '__main__':
main()
时间:
VectorAdd took 0.240731 seconds
此结果取决于您 CPU 的规格。
我 运行 我在 CUDA Python 介绍页面上阅读了这段代码:-
import numpy as np
from timeit import default_timer as timer
from numbapro import vectorize
@vectorize(["float32(float32, float32)"], target='gpu')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)
start = timer()
C = VectorAdd(A, B)
vectoradd_timer = timer() - start
print("C[:5] = " + str(C[:5]))
print("C[-5:] = " + str(C[-5:]))
print("VectorAdd took %f seconds" % vectoradd_timer)
if __name__ == '__main__':
main()
我在终端上收到以下错误:-
dtn34@dtn34-ubuntu:~/Python$ python asd.py
Traceback (most recent call last):
File "asd.py", line 3, in <module>
from numbapro import vectorize
ImportError: No module named numbapro
它应该 运行 使用 gpu 的代码,但我收到了那个错误。我已经安装了 anaconda,更新了 conda,使用 conda 安装了 accelerate,安装了 cudatoolkit,使用 conda 安装了 numba。 我尝试使用 python2 和 python3
编译它我该怎么办?
知道了。正如 WarrenWeckesser 和 Robert Crovella 所指出的,NumbaPro 已被弃用,所有功能都已移至 numba。 所以你应该写 numba
而不是 numbaprofrom numba import vectorize
此外,目标需要设置为 'cuda' 而不是 'gpu'
@vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a, b):
return a + b
我在修改后尝试运行它在(CPU和GPU)中,CPU比GPU
快CPU中的第一个:
import numpy as np
from timeit import default_timer as timer
# from numba import vectorize
# @vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a ,b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.ones(N, dtype=np.float32)
srart = timer()
C = VectorAdd(A,B)
vectoradd_time = timer() - srart
print ("C[:5] = " + str(C[:5]))
print ("C[:-5] = " + str(C[:-5]))
print ('vectoradd_time %f second' % vectoradd_time)
if __name__== '__main__':
main()
时间:
vectoradd_time 0.046457 second
GPU中的第二个:
import numpy as np
from timeit import default_timer as timer
from numba import vectorize
@vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)
start = timer()
C = VectorAdd(A, B)
vectoradd_timer = timer() - start
print("C[:5] = " + str(C[:5]))
print("C[-5:] = " + str(C[-5:]))
print("VectorAdd took %f seconds" % vectoradd_timer)
if __name__ == '__main__':
main()
时间:
VectorAdd took 0.240731 seconds
此结果取决于您 CPU 的规格。