2017-10-05 14 views
2

CUDAを使ったGPU処理でnumbaを使って線形システムを解こうとしています。numbaとCUDAでPythonを使った線形システムを解く

すべての関連パッケージをインストールしてテストしたので、GPUとCUDAなどが正しく設定されているようです。

私のコードは次のとおりです。

import numpy as np 
import time 

from numba import vectorize, cuda 


@vectorize(['float64(float64, float64)'], target='cuda') 
def solver(A, b): 
    return np.linalg.solve(A, b) 


def main(): 

    A = np.random.rand(100, 100).astype(np.float64) 
    b = np.random.rand(100, 1).astype(np.float64) 

    start = time.time() 
    C = solver(A, b) 
    vector_add_time = time.time() - start 

    print("Took " + str(vector_add_time) + " seconds to solve") 


if __name__ == '__main__': 
    main() 

@vectorize...行をコメントし、コードが細かい実行されます。

raise TypingError(msg) 
numba.errors.TypingError: Failed at nopython (nopython frontend) 
np.linalg.solve() only supported for array types 

私は問題はnumpy.linalg.solveは、データタイプを受け入れないことであると仮定します。私はnumbaとCUDAでそれを実行しようとする場合しかし、私は彼が最も関連性のいずれかがあると思い、エラーの長いリストを取得しますクダが要求する。

これを前提にして正しいですか?動作する他のデータ型はありますか?

例の問題では、同じデータ型が関数に渡されるので、numpy.linalgに問題があると思います。

+0

ありがとうございました。私はちょうど「おもちゃ」の問題を使って、クーダワークフローを学び始めました。私は良い例を選んでいないと思います。 – Mike

答えて

1

これを前提としますか?

動作しますが、他のデータ型はありますか?ここ

ません

問題あなたはnumbaのGPUのバックエンドで実行するために目標とされたコードでnumpy.linalgを使用することができないということです。

+0

ありがとうございます。サブタイトルを削除した人が指摘しているように、私の「おもちゃ」問題は決して意味をなさないが、より一般的には、numba/cudaスイートのオブジェクト/メソッド/関数だけが機能するだろうか?私の質問にリンクされている問題の例から、 'ndarray'で動作することができるように見えるので、numba/cuda-wrapped関数のnumpy関数を使って計算を行うことができますか? – Mike

関連する問題