2017-10-19 94 views
0

假设我有2个类,A和B,我有jitted,其中B有一个列表A.这可能在numba吗?我可以有一个嵌套的numba对象数组吗?

from numba import jitclass, deferred_type 
from numba.types import string 

spec = [('name', string)] 


@jitclass(spec) 
class A: 
    def __init__(self, name): 
     self.name = name 

a_type = deferred_type() 
a_type.define(A.class_type.instance_type) 
spec2 = [('name', string), ('alist', a_type[:])] 
@jitclass(spec2) 
class B: 
    def __init__(self, name, alist): 
     self.name = name 
     self.alist = alist 

当我运行它,我得到以下错误:

python3: /opt/miniconda/conda-bld/llvmdev_1498055795382/work/llvm-4.0.0.src/lib/IR/DataLayout.cpp:638: unsigned int llvm::DataLayout::getAlignment(llvm::Type*, bool) const: Assertion `Ty->isSized() && "Cannot getTypeInfo() on a type that is unsized!"' failed. 
Aborted (core dumped) 

有没有什么办法可以解决这个错误?

回答

0

有什么你正在尝试做一些限制:

  • Numba不能把字符串转换成一个原生类型,所以据我所知,你不能有实例变量类型string
  • Numba不支持数组或对象列表作为numba-jitted函数或jitclasses的参数。

所以numba可能不是一个很好的适合你的使用情况,除非你可以将字符串转换为一些本土类型(也许整数标签,然后重新映射到的numba通话之外的字符串),并代表A作为一系列同质的numpy数组或列表。

相关问题