我可以有一组嵌套的 numba 对象吗?
Can I have an array of nested numba objects?
假设我有 2 个 类,A 和 B,我已经 jitted,其中 B 有一个 A 的列表。这在 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)
有什么办法可以解决这个错误吗?
您尝试执行的操作有一些限制:
- Numba 无法将字符串转换为本机类型,据我所知,您不能拥有
string
类型的实例变量
- Numba 不支持数组或对象列表作为 numba-jitted 函数或 jitclasses 的参数。
因此 numba 可能不适合您的用例,除非您可以将字符串转换为某种本机类型(可能是整数标签,然后重新映射到 numba 调用之外的字符串),并表示 A
作为一系列同质的 numpy 数组或列表。
假设我有 2 个 类,A 和 B,我已经 jitted,其中 B 有一个 A 的列表。这在 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)
有什么办法可以解决这个错误吗?
您尝试执行的操作有一些限制:
- Numba 无法将字符串转换为本机类型,据我所知,您不能拥有
string
类型的实例变量
- Numba 不支持数组或对象列表作为 numba-jitted 函数或 jitclasses 的参数。
因此 numba 可能不适合您的用例,除非您可以将字符串转换为某种本机类型(可能是整数标签,然后重新映射到 numba 调用之外的字符串),并表示 A
作为一系列同质的 numpy 数组或列表。