Edited at

Power 8 on SoftLayer触ってみました。

SoftLayer上に新しいランアップが加わりました。今までのインテルCPUに加えPower 8 CPUが選択できるようになりました。元インテルの私としては昔の競合製品なのでなんとなくわくわくしてしまいました。

power2.jpg

今回少しの時間ですが試せたのでブログを書きました。

ログイン画面ほとんどIntel Ubuntuと代りませんがPowerの文字が

power3.jpg

CPUの情報を見てみましょう。/proc/cpuinfo で

cpuinfo3.jpg

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

今度はlscpuでも見てみます。

lscpu3.jpg

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