MATLABを使った精度保証付き演算を紹介している荻田さんのページにある方法
n=2000; A=randn(n); B=randn(n);
tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
でMacの演算性能を測ってみた.MATLABは持っていないので,MacPortsでインストールしたOctave (octave @2.9.15_0+g95+ptex+test)を用いた.
- Mac mini (PowerPC G4 1.25 GHz): 約 1 Gflops
- MacBook (Core Duo 1.83 GHz): 約 3 Gflops
- iMac G5 (PowePC 1.9 GHz): 約 4 Gflops
- PowerMac G5 (PowerPC G5 Dual 2.7 GHz): 約 10 Gflops
- iMac (Core 2 Duo 2.4 GHz): 約 12.5 Gflops
- Mac Pro (Xeon 3 GHz クアッドコア×2): 約 50 Gflops
- ASUS V3-M2V690G (Athlon 64 X2 5400+, Ubuntu 8.0.4): 約0.7Gflops, 約3.5flops (ATLAS), 約5Gflops (ACML)
g95はOpenMPに対応していないが,アクティビティモニタを見るとCPUは二つとも動いているので,スレッド化されているようだ.おそらく,Mac OS XのAccelerate.frameworkに含まれているBLAS/LAPACKが呼ばれていて,Fortranコンパイラは無関係だと思われる.
PowerPC G5がXeon 3.06 GHzの1コアに遜色ない性能を出したのはちょっとうれしい.
Core 2 DuoのiMacも侮れない… iMac Early 2008 (Core 2 Duo 3.06 GHz) では, 15 Gflops出るだろうか.
Mac Proは, 地球シミュレータ1ノードの理論値64 Gflopsまであと少し.でもIntelの
データからすると、限界まで出せてなさそう。
UbuntuのoctaveはAMD64には最適化されているようだが, ATLASもACMLもなしだと, Mac miniより遅かった. Mac OS XのAccelerate.frameworkはありがたい.