1

我的代码在这里:

import numpy as np
from numbapro import cuda

@cuda.autojit
def child_launch(data):
    data[cuda.threadIdx.x] = data[cuda.threadIdx.x] + 100

@cuda.autojit
def parent_launch(data):
    data[cuda.threadIdx.x] = cuda.threadIdx.x
    cuda.syncthreads()

    if cuda.threadIdx.x == 0:
        child_launch[1, 256](data)
        cuda.synchronize()

    cuda.syncthreads()

data = np.zeros(256)
print data
parent_launch[ 1, 256 ](data)
print data

运行结果如下:

Traceback (most recent call last):
......
numba.typeinfer.TypingError: Untyped global name 'child_launch'
File "PythonOpenMPTestMain.py", line 14

我只是不知道为什么我不能启动子内核。请帮我。非常感谢。

4

1 回答 1

1

我只是不知道为什么我不能启动子内核。

因为它不受支持(即使在 2018 年中期)。

引用 Numba 0.39文档

Numba 尚未实现 CUDA 的所有功能。下面列出了一些缺少的功能:

  • 动态并行
  • 纹理记忆
于 2018-07-04T05:20:01.250 回答