数値解析日記

数値解析関係のネタ帳。C++,pythonなど

numpyを使って、行列に対するtwosum, twoproductを高速化する

 柏木先生の考案された改良型twosum, twoproductを行列に適用し、それをnumpy流にベクトル化し、高速化した。
コードと結果は以下
github.com
github.com 環境は

  1. Mac Book Pro 2012 mid (ただし、メモリを16GBに増やしている)
  2. anaconda 4.0.8 (以下anaconda内のパッケージ)
     * python 3.5.1  
     * scipy 0.17.0 np110py35_4  
     * numpy 1.10.4 py35_2  
     * mkl 11.3.3  
    

結果は

%timeit twosum(a, b)
10 loops, best of 3: 80.7 ms per loop
%timeit twosum_old(a, b)
1 loop, best of 3: 2 s per loop
%timeit twoproduct(a, b)
10 loops, best of 3: 76.8 ms per loop
%timeit twoproduct_old(a, b)
1 loop, best of 3: 4.22 s per loop

 特に特殊な手法は用いていないが、ベクトル化するだけで大幅に高速化した。