« ドラマ「氷点」の中で | トップページ | 凹んだときにはインデアンカレーのカレー »

2006年12月23日 (土)

πの計算・Core2Duoの威力

先日、使用していたノートパソコンの液晶表示が壊れてしまいました。1年半ほど前に10万円以上出してマザーボードと液晶を交換したばかりなのに、もう壊れてしまいました。

いくらなんでももう修理に出すことはできません。新しいのを買った方が得です。

新しく買ったマシンも当然ThinkPadです。やはり、ThinkPadの使いやすさは最高です。

買ったマシンのCPUは最新のCore2 Duo T7200(2GHz)です。快適ですよ。

そこで、CPUの性能を比較するために円周率(π)を100万桁計算してみました。結果は図の通りです。

Core2 Duo T7200の計算時間はわずか27秒、4年ほど前のPentiumIII 1GHzに比べて5倍以上速くなっています。

Conv0376
π計算プログラム 「スーパーπ Ver 1.1」(東京大学金田研究室)による計算時間


人気blogランキングへ。いつも応援ありがとうございます。

« ドラマ「氷点」の中で | トップページ | 凹んだときにはインデアンカレーのカレー »

パソコン・インターネット」カテゴリの記事

コメント

1995 年のソフトで Core2Duo の方が Pentium 4 より速いのは不思議ですね。このあたりの Windows ソフトのコンパイラだと Pentium 4 ましてや Core2Duo 等の CPU の特性なんて知らないからクロックやメモリ, ディスク・アクセス速度比程度しか現れなくてもおかしくないはず。Pentium 4 では分岐予測外れキャッシュのヒットミス等のペナルティが大きいのかな。アルゴリズム自体は元々 vector-parallel あたりが意識されていたら並列度は高いかもしれません。Pentium 4 以降なら SIMD 系の命令で並列度が上げられるし、Core2Duo なら本当に 2 つ CPU があるので実際に並列度を上げるようにコンパイラが最適化できるはず。速くはなっているようですが、10 年も前にコンパイルされたソフトじゃまだまだ実力出し切ってませんよ、ラナさん。

心理歴史学者さん、コメントありがとうございました。

CPUやプログラムの設計など詳しい話は知らないので、

何ともいえないですが、Pentimu4よりCore2Duoの方が

パフォーマンスが高いのではないのでしょうか?

そうでないと、最新のCPUを出す意味がないような気

がします。

そうそう、どちらもメモリは1GBで、Pentium4のマシン

はデスクトップです。

今から、15年ほど前だったでしょうか、ある円周率

計算プログラム(Fortaran)を自分でメモリ限界まで

計算できるように改良したプログラムをIntel80286

12MHz+コプロ80287を使って、丸一日かけて数万桁

の計算をしたのを思い出しました。

> 何ともいえないですが、Pentimu4よりCore2Duoの方が

> パフォーマンスが高いのではないのでしょうか?

>

> そうでないと、最新のCPUを出す意味がないような気

> がします。

>

そうとも言えないのです。Pentium 4 が出たばかりの頃、まだクロックが 1.5 GHz あたりだった頃だと処理によっては Pentium III の 1 GHz よりもパフォーマンスが悪かったりしていたわけです。CPU コアが違うので処理によって向き・不向きが存在します。Core2Duo は Banias 系のコアが 2 つ、ようは Pentium M が 2 つ同時実行できると思えば良いので、パフォーマンスが生かされるのは並列性の高い処理をさせた場合になります。ようするに、互いに独立な処理を複数同時実行させた場合に向いているのであって、一般に Pentium 4 より高パフォーマンスになるわけでもないのです。逆に並列性のない処理をやらせれば同クロックの Pentium M とさほど変わらないと思いますよ。

πの計算の場合、級数展開した各項を独立に計算できるのでレジスタ数や CPU の数などチューニングしてやれば Core2Duo は Pentium 4 より圧倒的に速くはできるでしょう。しかし、1995 年のコンパイラは Pentium4 やCore2Duo の情報を持っておらず、せいぜいシングル・コアの P5 レベルの最適化しかできていないはずですから 2 ~ 3 世代先の CPU が高パフォーマンスになるようにコンパイルできているとは考えにくかったので不思議だと思ったわけです。

CPU が違いますが、数年前だったと思いますが (もっと前かな) Apple が当時使用していた PowerPC 系の CPU の方が Intel の Pentium II だったか III よりも圧倒的に速いとベンチ・マークの結果を発表したのですが、それが PowerPC の方は専用にチューニングされたコンパイラ、Intel の方は世代がずっと古い 486 用のコンパイラを使った結果を比べていて、Intel の方も専用のコンパイラに変更して比べたら結果が逆転してしまったということがありました。クロック比が高いですから逆転するほどまでは行かないにせよ、CPU コアの特性も世代も違いますから、それと似たようなことが起きても不思議ではないのです。

心理歴史学者さん、分かり易い解説ありがとうございました。

>ようするに、互いに独立な処理を複数同時実行させた

>場合に向いているのであって、一般に Pentium 4

>より高パフォーマンスになるわけでもないのです。

>逆に並列性のない処理をやらせれば同クロックの

>Pentium M とさほど変わらないと思いますよ。

>

PentiumM 1.3GHzとCore2Duo 2GHzの単純な

クロック比は約1.5である一方、計算時間の比は

約2.5なので、クロック比以上の結果が出ています。

ということは、並列処理の成果も出ているという

ことですね。

タスクマネージャのCPU使用率の履歴を見ていると、

それぞれのCPU使用率比は1:3程度で使用率は

50%程度でした。

Core2Duo用に最適化されたπ計算プログラムって、

どこかに転がってないかなぁ?

そしたら、もっと計算時間が早くなるかも知れない

ですね。

理屈ばかり言っていないで自分のマシンでやってみました。Pentium 4 2.4GHz (Northwood, HT 無し) で 1 分 19 秒でした。しかも、メモリ 1GB もあるのにディスクがうなっている。まさかスワップしているのかと思ってタスク・マネージャを見てもスワップはしていない。ということでもっと詳しく観察したところ、ディスク等への書き出し 330MB 程度、ディスク等からの読み込みがその 2 倍ぐらい、実際のメモリ使用量は 14 MB 程度で最終結果書き出しが 1 MB 強。こんなに計算中に I/O があったら、CPU の演算能力以前に周辺機器との I/O の速度が効いていそうです。

ちなみに Athlon 64 3000+ (New Castle, 本当は 2 GHz) では 46 秒でした。

> ということは、並列処理の成果も出ているという

> ことですね。

>

> タスクマネージャのCPU使用率の履歴を見ていると、

> それぞれのCPU使用率比は1:3程度で使用率は

> 50%程度でした。

>

いえいえ、ライブラリを見てもマルチスレッドのライブラリがリンクされている様子が見えないし、時代も考えればシングルスレッドでしょう。ですから並列性はマルチスレッド・ライブラリのリンクを私が見落としていない限りありません。CPU 使用率が 50% 程度というのも良く見るとそれぞれの CPU 同士で反位相の関係になっていませんか (そこまでは見えないか。)。OS 側でスレッドを交互に実行しているだけ (同時に実行しているわけではない) だと思います。本当に 2 つとも使ったら両方 100 % で張り付くと思いますよ。デュアル・コアなので 1 つの CPU あたりの OS 実行のオーバーヘッドが少ない分シングル・コアより若干パフォーマンスは良いでしょうが、ラナさんの得られた結果は CPU の演算能力だけではなくデータ転送速度の改善なども含めた Core2Duo を採用したシステムの総合力で以前のシステムよりもパフォーマンスが上がったと見るのが妥当だと思います。CPU 単体で使うわけじゃないからコンピュータのパフォーマンス改善という意味では正しい手法でしょう。

どうも Super πは Pentium 4 には不向きなアルゴリズムを採用しているので Pentium 4 では遅いのではないかと思います。投機や分岐予測失敗等のペナルティが多発してそうな感じがします。

心理歴史学者さん、新年明けましておめでとうございます。本年もよろしくお願いいたします。

Core2Duoのパソコンのスペックは次の通りです。現在発売されているノートパソコンの中ではかなりハイスペックの方だと思っています。

○機種名:ThinkPad X60 1709GDJ

○プロセッサー:インテルR Core? 2 Duo プロセッサー T7200

○プロセッサー動作周波数:2GHz

○一次キャッシュ:32KBインストラクションキャッシュ + 32KBデータキャッシュ(メインプロセッサーに内蔵)

○二次キャッシュ:4MBアドバンスドトランスファーキャッシュ(メインプロセッサーに内蔵)

○フロントサイド・バス:667MHz

○チップセット:モバイル インテルR 945GM Express チップセット

○主記憶(RAM)容量:1GB(PC2-5300 DDR2 SDRAM)

○HDD:120GB(5,400rpm/シリアルATA/9.5mm/2.5”)

ちなみに、Super πの最大計算桁数である3555万桁のCore2 Duoによる計算時間は29分08秒でした。

古いやつへのコメントですが、Core 2 Quad 2.4 GHz のマシンを入手したので Vista の WOW64 上ですが 104 万桁計算させてみました。結果は 23 秒でした。並列性が効いていれば 4 CPU なのでラナさんの結果の倍近く速いはずですが クロック比程度しか差がありませんし、タスク・マネージャの CPU 使用率も基本的に動くのは 1 個のみ、完全にシングル・スレッド・アプリケーションですね。

> Core2Duo用に最適化されたπ計算プログラムって、

> どこかに転がってないかなぁ?

> そしたら、もっと計算時間が早くなるかも知れない

ですね。

>

Core2Duo と言うかマルチ・スレッド化されているわけではないですが、PiFast というプログラムを検索エンジンで探して、オン・メモリのみのモードで実行させてみるといいですよ。Super π が如何に遅いかがわかります。前にコメントで挙げた Pentium 4 2.4 GHz マシンで 1 分 19 秒の 104 万桁 Super π の計算が 5 秒前後、上の Core 2 Quad 2.4 GHz マシンだと 2 秒かかりません。

心理歴史学者さん、コメントありがとうございました。

早速、PiFastを実行してみました。確かに早いですね。

104万桁の計算時間は、Core2Duoのマシンで2.45秒でした。

「Core2Duo を採用したシステムの総合力で以前のシステムよりもパフォーマンスが上がった」

疑問の解決のヒントになりました。ありがとうございます。

コメントを頂きながら、その公開と返事が大変遅くなり申し訳ございませんでした。

今回、このブログが疑問の解決のヒントとなったこと、光栄に思っています。ありがとうございました。

この記事へのコメントは終了しました。

« ドラマ「氷点」の中で | トップページ | 凹んだときにはインデアンカレーのカレー »