从@ cuda.jit numba函数中调用其他函数

时间:2019-05-06 15:37:43

标签: python cuda jit numba

我有一个添加了@ cuda.jit装饰器的函数。

@cuda.jit
def foo(x):
   bar(x[0])
   bar(x[1])
   bar(x[2])

def bar(x):
  # Some routine

我不想将bar复制到foo的主体中,因为这会使代码笨拙。

Numba的cuda.jit如何处理此问题? 编译过程中函数是否内联? 酒吧是否需要准时参加?

如果是这样,它将调用其他线程,我发现这对于仅计算3个元素来说是过大的事...

我还认为一个cuda内核也不能调用其他cuda内核。

我是numba / cuda的新手,所以请谅解这里是否有一些根本性的错误。

1 个答案:

答案 0 :(得分:2)

  

Numba的cuda.jit如何处理此问题?

不是。如果您尝试过,则会得到一个错误

  

函数在执行期间是否内联   汇编?

否。

  

酒吧是否需要打扫一下?

是的。它需要用@cuda.jit(device=True)

装饰
  

如果是这样,它将调用其他线程,我发现这对于仅计算3个元素来说是过大的事...

不。设备功能和内核不是同一个人。设备功能的代码被编译并发出为“单线程”。

  

我还认为一个cuda内核也不能调用其他cuda内核。

可以,但是Numba目前不支持它。