如何使用 Numba 在 GPU 上使用三角函数?

How can I use trigonometric functions on GPU with Numba?

我正在用 target='cuda' 测试 numba.vectorize,我 运行 遇到了使用 numpy.sinnumpy.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 数学函数。