Нет функции numpy работает в numba cuda.jit - PullRequest
0 голосов
/ 08 апреля 2020

Я пытался запустить этот код

@cuda.jit
def arr():
    a = np.array([1., 2., 3., 4.], dtype=np.float32)
arr()

Но это приводит к этой ошибке TypingError: Failed in nopython mode pipeline (step: nopython frontend) Use of unsupported NumPy function 'numpy.array' or unsupported use of the function. Я не понимаю, почему это происходит, не должен ли cuda.jit поддерживать большинство, если не все numpy функции? Это также происходит с np.zeros и np.empty и, возможно, со всеми другими функциями (работает с обычным @jit, даже если нет python true)

1 Ответ

2 голосов
/ 08 апреля 2020

Если вы проверите документы , вы обнаружите, что в отличие от двух режимов компиляции numba c @jit и @njit, numba CUDA поддерживает очень мало numpy функций.

А именно, он поддерживает только:

  • доступ к атрибутам ndarray .shape, .strides, .ndim, .size, et c ..
  • скалярные ufuncs, которые имеют эквиваленты в математическом модуле; то есть np.sin (x [0]), где x - это одномерный массив.
  • индексирование и срезы работают.

И все последующие (включая создание массива тоже) не поддерживаются:

  • API создания массива.
  • методы массива.
  • функции, которые возвращают новый массив.
...