【问题标题】:Can I have an array of nested numba objects?我可以拥有一组嵌套的 numba 对象吗?
【发布时间】:2017-10-19 17:54:32
【问题描述】:

假设我有 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)

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

【问题讨论】:

    标签: python llvm numba


    【解决方案1】:

    您尝试做的事情有一些限制:

    • Numba 无法将字符串转换为本机类型,因此据我所知,您不能拥有 string 类型的实例变量
    • Numba 不支持将数组或对象列表作为 numba-jitted 函数或 jitclasses 的参数。

    所以 numba 可能不适合您的用例,除非您可以将字符串转换为某种本机类型(可能是整数标签,然后重新映射到 numba 调用之外的字符串),并将 A 表示为一系列的同质 numpy 数组或列表。

    【讨论】:

    • 最新版本的 Numba (=0.48.0) 是否可以实现这一点..?
    猜你喜欢
    • 2019-07-10
    • 2015-11-22
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多