プロが教える店舗&オフィスのセキュリティ対策術

PCやコンパイラを更新したことでどのぐらい計算が高速化したか考えたいと思います。
PCの更新はcore-i7が第4世代から第6世代に進み、コンパイラは2009年ぐらいに購入したものを今年(2016年)に更新したというようなぐらいです。

そこで、全く同じ計算プログラム(Fortran)を両方で走らせてみました。新しい環境(PC,コンパイラ)と以前の環境(PC,コンパイラ)です。今、横並びで見ているのですが、ひょっとしたら以前の方が早いかもしれないという結果になっているのです。これはおかしなことだと思うのですが、いかがでしょうか。

あと考えられるのは新しい環境ではコンパイラオプションの有無で様子が大幅に異なるとかですが。

ここでいう環境の進化はお金をつぎ込んでものを買ったというだけのことであり、ソースコードの工夫とか並列による高速化は全く考えていません。でも早くなって欲しかったのですが。
第6世代というのは私が想像していたような高速化とは違うところの更新なのでしょうか。

大昔、DECアルファチップによる計算の高速化への驚きが忘れられません。ソースコードを全く手を加えずにコンピュータを変えてコンパイラを変えただけだったのですが。

どのようなものなのでしょうか。

A 回答 (4件)

DEC alphaの時代はパソコンCPUはまだまだ遅くて大型計算機やスパコンの技術をパソコンCPUにダウンサイジングして簡単に性能が上がったのです。


今やスパコンにパソコン向けとほとんど同じCPUを使う時代です。昔、簡単に速度アップできた方法は既に尽くされているので、全く異なるアプローチをしないと性能アップは期待できません。そして今の性能アップの方向性は並列処理です。昔ながらのシングルスレッド処理はほとんど性能アップできなくなっています。

ちなみにCore i7のスペックを確認してみましたが、第4世代から第6世代では同等スペックでクロックが下がっているケースがあるので、処理によっては遅くなっても当然でしょう。
# https://ja.wikipedia.org/wiki/Intel_Core_i7#Core …
# 例えば 4790Kの4.0GHz(Max4.4GHz)と6700Kの4.0GHz(Max4.2GHz)
#     4790の3.6GHz(Max4.0GHz)と6700の3.4GHz(Max4.0GHz)

コンパイラオプションやソースコードの工夫で並列性を上げたり、CPUに依存する最適化をしない場合、数値演算系プログラムの実行性能はほぼクロックに依存します。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
CPUによる高速化は乾いた雑巾を絞るというところに来ているようです。

お礼日時:2016/02/25 20:30

> core-i7が第4世代から第6世代


core i7と言ってもいろいろあります。演算性能はクロックとかキャッシュサイズとかで全然違いますので型式で言ってもらわないと妥当な比較をしているかどうか判断できません。あとメモリの種類と量も。
なお同等スペックというなら4xxxから6xxxだと素の整数演算性能は10%も変わらないんじゃないですか。

コンパイラについても同様です。具体的なコンパイラが分からないと何も言えません。
なおCPUの性能向上は最近はSIMD命令とかGPGPUとかのベクトル演算が中心です。
コンパイラも当然にそういうコードの性能を上げる方向に進化していると考えられます。
何の工夫もないシングルスレッドのコードだと吐くバイナリは一緒かもしれません。
あとコンパイラが最新CPUに対応していないと最適化チューニングが十分でない可能性もあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。細々としたスペック依存ということですね。
DECアルファのときは、その速度の増加はけた違いで、数十万円の投資でしたが、すぐさま回収できたって感じでした。
最適なスペック、最適なチューニングをすれば早くなる、ということだと条件付き高速化ですのでそれに費やす時間の投資が回収できるかどうかわからないという気がしています。有無を言わさぬ高速化ということはもうないのだなという思いです。

お礼日時:2016/02/18 21:04

車で例えるなら、パソコン(core-i7)は普通乗用車。


DECアルファチップは、旧式とはいえどもF1レースカー。
最近は性能が良くなってきたと言っても、走りに特化した
レースカーと使い勝手や乗り心地を重視した普通車とでは
差が出てくるのは当たり前。
#WindowsはGUI環境を実現する為にも、CPUやメモリ等を
#多く使用する為、計算速度の高速化に挑戦するには限度
#が有ります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。当時はPentium2ぐらいで計算していて数十万円でDecアルファを購入してその速さに仰天しました。その後Itanum2も使用しましたが、アルファ越えの感動はありませんでしたね。もうDecアルファはないのでしょうか。高速計算機の会社はXeonとGPUのマシンばかりで。GPUはアレコレ下調べしないと行けないからある意味投資も大きいわけです。
DECの感動を今一度と思っているのですが。

お礼日時:2016/02/18 20:56

ちょっとFortranなどは全然知らないのですが、


プログラムがシングルスレッドであれば多コアにしても全然早くならない
ということはあるんでは無いでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。並列化を一生懸命やれば早くなるのかなとは思います。比較する対象が両方ともシングルスレッドなので、CPUを更新することでシングルスレッドとしての高速化はあるのかもしれないと思ったのですが。CPU比較をしているサイトがありますね。横方向の棒グラフでCPUの能力を比較するような。Spec int , Spec fpとかですかね? あの比率ぐらいでは早くなるだろうと思ったのですが。少なくとも遅くなるということは考えにくいです。(実際遅くなったような気もするのです。体感ですが。)

お礼日時:2016/02/18 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!