2016-09-06 5 views
-2

私はNumbaとCUDAを初めて使い、いくつかの基本的な例でNumpyとCUDAの機能を比較するための測定を行っています。例えば、予想されるスピードアップNumba/CUDA対Numpy

n=1000000 
array = np.linspace(0, 100, num=n, dtype=np.float32) 
threads per block = 32 
blocks per grid = 31250 

とシングルスレッド

def cpu_computation(array): 
    array = array ** 2.6 
    return array 

に比べ

@cuda.jit("void(float32[:])") 
def gpu_computation(array): 
    pos = cuda.grid(1) 
    if pos < array.size: 
     array[pos] = array[pos] ** 2.6 

私はGPUで約3倍のスピードアップを取得します。これは行列乗算(Numbaドキュメントにある基本バージョンとスマートバージョンの両方)を実行するときに得られるものです。デバイスとの間でコピーすることで最適化することは役に立ちませんでした。

このスピードアップは期待されますか?私はより大きな桁違いを期待していました。私のマシン:GeForce GTX 775M 2048 MBとCUDA 7.5.30のMac OSX。

答えて

2

GTX 775Mの倍精度演算スループットは1/24th of the single precision throughputです。 Pythonには単一精度型がないため、データを単精度として明示的にマークするには、Numba typesを使用する必要があります。

残念ながら、異なるGPU(テスラのラインナップや本来のもの、今は生産外のGTX Titan)を使用する以外に、倍精度計算を高速化する方法はありません。

+0

ありがとうございました。上記のコードスニペットを更新して、私が今測定しているものを表示していますが、これまでのところ違いは見られません。 – jam123

関連する問題