@cuda.jit 和@jit(target='gpu') 的区别

Difference between @cuda.jit and @jit(target='gpu')

我对使用来自 Continuum 的 Accelerate 和 numba 包的 Python CUDA 库有疑问。将装饰器 @jittarget = gpu 一起使用与 @cuda.jit 相同吗?

不,它们不一样,尽管最终将 PTX 编译成汇编程序的路径是。 @jit 装饰器是通用编译器路径,可以选择将其引导到 CUDA 设备上。 @cuda.jit 装饰器实际上是 Continuum Analytics 开发的低级 Python CUDA 内核方言。因此,您可以获得对 CUDA 内置变量的支持,例如 threadIdx 和内存 space 说明符,例如 @cuda.jit.

中的 __shared__

如果你想在 Python 中编写一个 CUDA 内核并编译并 运行 它,请使用 @cuda.jit。否则,如果您想加速 Python 的现有部分,请将 @jit 与 CUDA 目标一起使用。