前回こちらの記事を書いてから、
「Apple SiliconのRはまだまだ最適化されるのでは」の感想を持ちました。
結論から言うと「さらに速くなりました」
Dockerコンテナの r-base が、aarch64ネイティブ対応となって最適化が進んでいるようです。
(gcc11が標準になったりしていました)
前回のベンチマーク vs dockerコンテナ版で、速度を比較してみました:
(コードは前回の記事をご参照下さい)
"brew install R" したバイナリ
2021/4 時点(R4.0.5)
Unit: milliseconds
expr min lq mean median uq max neval
lm 49.051744 50.826265 52.95558 51.80733 52.80433 65.09148 100
pseudoinverse 11.956379 14.711989 17.91940 16.34217 18.85711 34.07059 100
linear system 8.523859 9.505297 11.80922 10.88540 12.43758 60.45782 100
"docker run -ti --rm r-base" したバイナリ"
Unit: milliseconds
expr min lq mean median uq max neval
lm 51.804542 53.859188 57.193025 55.334729 57.685460 84.83871 100
pseudoinverse 8.373584 9.421521 11.997803 9.928709 11.798813 27.51638 100
linear system 5.743792 5.938064 7.182378 6.749313 7.698855 17.39467 100
比較用に、他環境でのスコアです:
# Intel MacBook Pro 16 inch (2019) Core i9 (8-core) @ 2.3GHz
Unit: milliseconds
expr min lq mean median uq max neval
lm 97.25333 106.07812 110.52555 109.50081 113.4430 133.7976 100
pseudoinverse 126.66369 137.49634 143.64142 141.95922 148.4088 173.3653 100
linear system 66.99625 75.51475 80.96854 79.02423 85.9040 123.8282 100
# Linux マシン (GPUホスト)
# model name : Intel(R) Core(TM) i9-7900X CPU (14-core) @ 3.30GHz
# Linux 5.4.0-65-generic #73-Ubuntu SMP
Unit: milliseconds
expr min lq mean median uq max neval
lm 82.07969 84.43838 88.18862 87.02851 89.37451 108.46766 100
pseudoinverse 110.66148 113.61129 116.64092 115.37820 117.84845 139.03118 100
linear system 58.79841 61.27981 64.23350 62.86225 65.15092 83.25834 100
結論として、インテルMBPの「14.3倍」速い
ことがわかりました。
(pseudoinverse - 擬似逆行列 のスコアです)
対 Intel(R) Core(TM) i9-7900X CPU (14-core) 比でも「11.6倍」...
...これホントにノートパソコンのCPUだよね...?
...爆速にも程がある...!!!