我有一个添加了@ 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的新手,所以请谅解这里是否有一些根本性的错误。
答案 0 :(得分:2)
Numba的cuda.jit如何处理此问题?
不是。如果您尝试过,则会得到一个错误
函数在执行期间是否内联 汇编?
否。
酒吧是否需要打扫一下?
是的。它需要用@cuda.jit(device=True)
如果是这样,它将调用其他线程,我发现这对于仅计算3个元素来说是过大的事...
不。设备功能和内核不是同一个人。设备功能的代码被编译并发出为“单线程”。
我还认为一个cuda内核也不能调用其他cuda内核。
可以,但是Numba目前不支持它。