RのBLASをAccelerate FrameworkのBLASに差し替え


joker8phoeniさんの記事でRに含まれるBLASライブラリをOSXのAccelerate Frameworkが提供しているものと差し替えるだけで行列計算が高速化できることを紹介しています.元ネタは cran の FAQ 10.5 のようですね.

簡単なので,自分の Mac でもやってみました.

以下は Mac mini (Late 2012), 2.6 GHz Intel Core i7, 16GB 1600 MHz DDR3 での結果です.Rはbrew cask installしたものです.たぶん,普通に R の提供元から入手できるバイナリ版と同じものだと思います.

まずはデフォルトの設定での実行結果

種目 計算時間
Matrix (3000,3000) 49.136
Matrix multiplication 6.27 5.895 5.866 5.898 5.843
Matrix inversion 14.644 14.604 14.628 14.656 14.673
Eigenvalues/vectors 42.685 42.891 43.668 43.442 45.844
Linear regression 4.966 5.181 5.104 5.362 5.351

つぎはBLASライブラリとしてAccelerate frameworkのなかの vecLib framework から提供されているものです.Yosemite になって vecLib framework は Accelerate framework に取り込まれたんですね.

種目 計算時間
Creating Matrix (3000*3000) 1.771
Matrix multiplication 0.202 0.204 0.204 0.204 0.204
Matrix inversion 0.46 0.431 0.434 0.432 0.427
Eigenvalues/vectors 9.093 9.12 9.035 8.994 9.01
Linear regression 3.419 3.382 3.379 3.419 3.374
  • 行列の生成: 27.7倍
  • 行列の乗算: 29.2倍
  • 逆行列: 33.5倍
  • 固有値・固有ベクトル: 4.83倍
  • 線形回帰: 1.53倍

joker8phoeniさんのMacBook Pro (Retina, 15-inch, Late 2013)に比べると高速化率は劣っていますので,機種依存性があるようですね.そうはいっても,この高速化は魅力的です.

Rstudio の FAQ 10.5 によれば,Apple の BLASライブラリの内容に責任は持てないと注意しています.

RのBLASをAccelerate FrameworkのBLASに差し替え」への2件のフィードバック

  1. つぎは職場の iMac (Retina 5K, 27-inch, Late 2014), 4GHz Intel Core i7, 16GB 1600 MHz DDR3 での結果です.

    種目 計算時間
    Creating Matrix (3000*3000) 41.0
    Matrix multiplication 4.747 4.948 4.824 4.958 4.634
    Matrix inversion 12.022 12.25 11.98 11.943 11.95
    Eigenvalues/vectors 36.031 37.897 34.522 35.212 34.159
    Linear regression 3.914 3.795 3.757 3.757 3.744
    種目 計算時間
    Creating Matrix (3000*3000) 1.113
    Matrix multiplication 0.108 0.104 0.104 0.105 0.102
    Matrix inversion 0.278 0.254 0.255 0.264 0.261
    Eigenvalues/vectors 6.944 7.561 7.102 6.991 6.837
    Linear regression 2.714 2.709 2.689 2.657 2.65
    • 行列の生成: 36.8倍
    • 行列の乗算: 46.1倍
    • 逆行列: 45.8倍
    • 固有値・固有ベクトル: 5.02倍
    • 線形回帰: 1.41倍

コメントは受け付けていません。