首页 > 解决方案 > Numba 内核不允许字典或字符串函数

问题描述

我正在尝试将字典传递给 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:无法确定 <class 'dict'> 的 Numba 类型

对于string.split(),我也收到一个错误:

没有降低的定义(unicode_type,unicode_type,省略(默认=-1))->列表(unicode_type)

文件“testKernel2.py”,第 6 行:

鸡蛋.split('e')

标签: pythonstringdictionarycudanumba

解决方案


我正在尝试将字典传递给 Numba CUDA 内核,并在内核中执行各种字符串操作(例如 string.split())。这些都不起作用。

由于 Numba GPU 内核既不支持字符串也不支持字典,因此无法正常工作(请参见此处


推荐阅读