Ядро Numba не допускает словари или строковые функции - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь передать словарь в ядро ​​Numba CUDA, а также выполнить различные строковые манипуляции в ядре (например, string.split()). Ни один из них не работает.

Я использую numba версию 0.44.1. В соответствии с примечаниями к выпуску (https://numba.pydata.org/numba-doc/dev/release-notes.html), оба словаря и string.split () поддерживаются Numba, поэтому я не уверен, почему ни то, ни другое не работает.

Код для словаря:

from numba import cuda


aDict = {'potato':7,'Achashveirosh':127,'GzeiraShava':613,'KimLeiBidiRabbaMinei':4}

@cuda.jit
def kernel_thing(chashuvDict):
   print(chashuvDict['GzeiraShava'])

kernel_thing[128,30](aDict)

Код для string.split ():

from numba import cuda

@cuda.jit
def kernel2():
    eggs = "hello"
    eggs.split('e')

kernel2[128,30]()

Для словаря я получаю следующую ошибку:

строка 34, в typeof повысить ValueError (msg)

ValueError: невозможно определить тип Numba для

Для string.split() я также получаю сообщение об ошибке:

Нет определения для понижения (unicode_type, unicode_type, пропущено (по умолчанию = -1)) -> list (unicode_type)

Файл "testKernel2.py", строка 6:

eggs.split ( 'е')

1 Ответ

2 голосов
/ 03 июля 2019

Я пытаюсь передать словарь в ядро ​​Numba CUDA, а также выполнить различные строковые манипуляции в ядре (например, string.split ()).Ни один из них не работает.

Они не работают, потому что ни строки, ни словари не поддерживаются в ядрах графического процессора Numba (см. здесь )

...