SoftLayer上に新しいランアップが加わりました。今までのインテルCPUに加えPower 8 CPUが選択できるようになりました。元インテルの私としては昔の競合製品なのでなんとなくわくわくしてしまいました。
今回少しの時間ですが試せたのでブログを書きました。
ログイン画面ほとんどIntel Ubuntuと代りませんがPowerの文字が
CPUの情報を見てみましょう。/proc/cpuinfo で
CPUの情報がずらっと出てきます。0~63で64個出てきました。今回使っているのは1ソケットのシステム、コア数は8です。SMT(Simultaneous Multithreading)は8なので全部で64個CPUがあるように見えるのですね。
https://ja.wikipedia.org/wiki/%E5%90%8C%E6%99%82%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0
Power 8 CPUは3次キャッシュまであるんですね。L1キャッシュは命令とデータが分かれている。ハーバードアーキテクチャーというのでしょうか?
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%90%E3%83%BC%E3%83%89%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3
ちなみにマザーボードの情報も見れますね。これのようです。(Habanero)
http://www.tyan.com/solutions/tyan_openpower_system.html
さて早くも時間がなくなってしまったので何か計算を。手元にパイの計算をするCのプログラムがあったのでやってみました。
int main(int argc, char* argv[])
{
int i;
double start_time, stop_time;
double x, pi, sum=0.0;
step = 1./(double)num_steps;
start_time = clock();
for (i=0; i<num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0/(1.+ x*x);
}
pi = sum*step;
stop_time = clock();
printf("The value of PI is %10.7f\n",pi);
printf("The time to calculate PI was %lf seconds\n",((double)(stop_time - start_time)/CLOCKS_PER_SEC));
return 0;
}
10億桁のパイの値を求める計算です。約10秒かかりました。
これだけではいいのかどうかわからないのでインテルCPUでもやってみました。ちょうど同じぐらいのシステムがすぐに使えるのがなかったので48 CPU (12コアx2 (HT) x 2(ソケット)と少し小さめでした。(メモリー容量は同じ)結果は約18秒。しかしCPUの数の比から見るとPower 8 CPUの性能の高さがわかりますね。ちなみに周波数はどちらも2GHz