如何使用 Numba 在 GPU 上使用三角函数?
How can I use trigonometric functions on GPU with Numba?
我正在用 target='cuda'
测试 numba.vectorize
,我 运行 遇到了使用 numpy.sin
和 numpy.exp
等数学函数的问题(这对我想解决的问题至关重要)。
最小示例:
@vectorize(["float32(float32)"], target='cuda')
def f(x):
return np.sin(x)
当我在 jupyter 笔记本中 运行 这段代码时,它给了我一个错误,其要点似乎是
UntypedAttributeError: Failed at nopython (nopython frontend)
Unknown attribute 'sin' of type Module(<module 'numpy' from '/opt/intel/intelpython3/lib/python3.6/site-packages/numpy/__init__.py'>)
File "<ipython-input-23-6310cdef033e>", line 3
[1] During: typing of get attribute at <ipython-input-23-6310cdef033> (3)
我是不是做错了什么,或者这不应该起作用?
如果您阅读 documentation,您会发现您需要在内核中使用 math
库(或 cmath
库,如果您使用复杂类型)中的函数。 Numba CUDA 内核不支持 Numpy 数学函数。
我正在用 target='cuda'
测试 numba.vectorize
,我 运行 遇到了使用 numpy.sin
和 numpy.exp
等数学函数的问题(这对我想解决的问题至关重要)。
最小示例:
@vectorize(["float32(float32)"], target='cuda')
def f(x):
return np.sin(x)
当我在 jupyter 笔记本中 运行 这段代码时,它给了我一个错误,其要点似乎是
UntypedAttributeError: Failed at nopython (nopython frontend)
Unknown attribute 'sin' of type Module(<module 'numpy' from '/opt/intel/intelpython3/lib/python3.6/site-packages/numpy/__init__.py'>)
File "<ipython-input-23-6310cdef033e>", line 3
[1] During: typing of get attribute at <ipython-input-23-6310cdef033> (3)
我是不是做错了什么,或者这不应该起作用?
如果您阅读 documentation,您会发现您需要在内核中使用 math
库(或 cmath
库,如果您使用复杂类型)中的函数。 Numba CUDA 内核不支持 Numpy 数学函数。