2016-10-19 16 views
1

私はクラスの階層を持っており、Numbaのjitclassを使ってコードを高速化したいと思います。クラス継承なしで@jitclassをいくつかの例でテストしたところ、正しく動作し、コードをスピードアップしました。しかし、クラスの継承がある場合、コンパイル中にエラーが発生しました。以下は、問題を示すサンプルコードです。ご意見やご提案には大変感謝しています。今私のためには、クラス継承はNumbaによってサポートされていないようですが、私はドキュメンテーションでそれに関する情報を見つけませんでした。 コード例:私が得たNumbaのjitclassと継承

import numpy as np 
from numba import jitclass   
from numba import int32, float32 

spec = [ 
    ('n', int32),    
    ('val', float32[:]),   
] 

@jitclass(spec) 
class Parent(object): 
    def __init__(self, n): 
     self.n = n 
     self.val = np.zeros(n, dtype=np.float32) 

spec = [ 
    ('incr', float32),   
] 

@jitclass(spec) 
class Child(Parent): 
    def __init__(self, n): 
     Parent.__init__(self, n) 
     self.incr = 2. 

def func(self): 
    for i in xrange(0, self.n): 
     self.val[i] += self.incr 
    return self.val 

par = Parent(10) 
chl = Child(10) 
print chl.func() 

エラーは次のとおりです。

TypeError: cannot subclass from a jitclass 

答えて

1

現在(0.28.1のような)、Numbaがjitclassから継承/サブクラス化をサポートしていません。ドキュメントには記載されていませんが、エラーメッセージはかなり明白です。私はこの能力がいつか将来追加されるだろうと思っていますが、今はそれが限界です。