我正在使用numba.vectorize
对target='cuda'
进行测试,我遇到了使用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)
我做错了什么,或者这不应该有效?
答案 0 :(得分:3)
如果您阅读documentation,您会发现在内核中需要使用math
库(或cmath
库中的函数,如果您使用的是复杂类型)。 Numba CUDA内核支持Numpy数学函数 。