大量の計算が必要になった時にEC2のメニーコアインスタンスで爆速で処理しようと画策している今日このごろ。
実際の所やる内容がないかもしれないけど、まぁそれはそれで。
とりあえず、念願のEC2の40コアインスタンスを立ち上げてベンチしてみた。
数十円とはいえ時間課金されるとなんか焦る(汗;
まずはjavaのujmpライブラリでのベンチマーク。
■ujmp 4096×4096の行列同士の掛け算
CF-N10(core i5 2core) 2.3Gflops
m4.x10large(xeon 40core) 40Gflops
コア数が20倍になるに従って性能も約20倍になっている。
順当に性能に上がってていい感じ。
■Intel® Math Kernel Library – LINPACK
CF-N10(core i5 2core)
Size LDA Align. Time(s) GFlops Residual Residual(norm) Check
1000 1000 4 0.028 23.9587 1.029343e-12 3.510325e-02 pass
1000 1000 4 0.024 27.5654 1.029343e-12 3.510325e-02 pass
1000 1000 4 0.025 26.7145 1.029343e-12 3.510325e-02 pass
1000 1000 4 0.029 23.2995 1.029343e-12 3.510325e-02 pass
2000 2000 4 0.228 23.4613 4.298950e-12 3.739560e-02 pass
2000 2000 4 0.184 29.0951 4.298950e-12 3.739560e-02 pass
2000 2000 4 0.199 26.7769 4.298950e-12 3.739560e-02 pass
2000 2000 4 0.192 27.8177 4.298950e-12 3.739560e-02 pass
3000 3000 4 0.645 27.9251 8.755385e-12 3.371489e-02 pass
3000 3000 4 0.674 26.7217 8.755385e-12 3.371489e-02 pass
3000 3000 4 0.844 21.3360 8.755385e-12 3.371489e-02 pass
3000 3000 4 0.671 26.8487 8.755385e-12 3.371489e-02 pass
4000 4000 4 1.604 26.6195 1.896949e-11 4.134580e-02 pass
4000 4000 4 1.810 23.5945 1.896949e-11 4.134580e-02 pass
4000 4000 4 1.732 24.6560 1.896949e-11 4.134580e-02 pass
4000 4000 4 1.812 23.5583 1.896949e-11 4.134580e-02 pass
5000 5000 4 3.842 21.7044 2.581643e-11 3.599893e-02 pass
5000 5000 4 4.064 20.5198 2.581643e-11 3.599893e-02 pass
5000 5000 4 3.915 21.2976 2.581643e-11 3.599893e-02 pass
5000 5000 4 4.061 20.5329 2.581643e-11 3.599893e-02 pass
10000 10000 4 33.961 19.6364 9.603002e-11 3.386116e-02 pass
10000 10000 4 35.732 18.6631 9.603002e-11 3.386116e-02 pass
m4.x10large(xeon 40core)
Size LDA Align. Time(s) GFlops Residual Residual(norm) Check
1000 1000 4 0.014 47.6095 8.866796e-13 3.023805e-02 pass
1000 1000 4 0.007 97.5988 8.866796e-13 3.023805e-02 pass
1000 1000 4 0.007 97.6123 8.866796e-13 3.023805e-02 pass
1000 1000 4 0.006 110.0105 8.866796e-13 3.023805e-02 pass
2000 2000 4 0.024 219.1916 4.667558e-12 4.060204e-02 pass
2000 2000 4 0.022 239.2903 4.667558e-12 4.060204e-02 pass
5000 5008 4 0.258 323.3306 2.258088e-11 3.148722e-02 pass
5000 5008 4 0.254 328.0522 2.455097e-11 3.423435e-02 pass
10000 10000 4 1.327 502.5286 1.004549e-10 3.542142e-02 pass
10000 10000 4 1.310 508.8807 9.048590e-11 3.190624e-02 pass
15000 15000 4 4.136 544.1181 2.212093e-10 3.484083e-02 pass
15000 15000 4 4.068 553.1527 2.370680e-10 3.733861e-02 pass
18000 18008 4 6.550 593.6765 2.972029e-10 3.254737e-02 pass
18000 18008 4 6.588 590.2303 2.972029e-10 3.254737e-02 pass
20000 20016 4 8.897 599.5097 3.369549e-10 2.982789e-02 pass
20000 20016 4 8.917 598.2119 3.369549e-10 2.982789e-02 pass
22000 22008 4 11.857 598.7819 4.105018e-10 3.006764e-02 pass
22000 22008 4 11.871 598.0661 4.105018e-10 3.006764e-02 pass
25000 25000 4 17.141 607.7839 5.664651e-10 3.221284e-02 pass
25000 25000 4 17.061 610.6244 5.664651e-10 3.221284e-02 pass
26000 26000 4 19.064 614.7131 5.956461e-10 3.132086e-02 pass
こちらも29GFlopsが599GFlopsと約20倍に速度アップ。
順当。
さすがに行列計算だからコアに比例して性能が上がる。
たださ・・・
ujmpで40コアフルに回して40Gflopsで、intel MLKなら2コアでも30Gflopでるのよね。
SSEとかAVXとかの拡張命令使っていないJavaと拡張命令使いまくりのMLKで性能差があるのは当然だけど、
こういうのを見ると「手持ちのノーパソで速いライブラリ使えば話済むんじゃね?」と思えてきてしまう。
まぁ、世の中行列計算みたいに超高速ライブラリがある処理ばかりじゃないけど。
あと、このインスタンスにVNCで接続していると、ベンチ走るとき以外CPUが0%に張り付いていてなんか不気味だった。
40コアもあれば1コア100%でも2.5%にしかならないので、当たり前といえば当たり前なんだけど、普段の感覚で見るとものすごい違和感。
今日捨てたものはマウスパッド
体重は55.2kg