パスワードを忘れた? アカウント作成
10769567 journal
日記

saratogaの日記: スパコンで約2時間36分かかったという、5×5の魔方陣の全解列挙を、パソコンで試す(C++) 12

日記 by saratoga

http://blog.unfindable.net/archives/7179
結果からいうと、スパコンのアーキの特徴を活かしたコーディングになっていなかったということですかね。
逆にギンギンにチューニングしたコードでT2K-Tsukubaがどのくらいのスコアを叩きだすのか興味津々。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 利用を許可してもらうための名義貸しで実際はノータッチだったと思われる。
  • by saratoga (23467) on 2014年03月26日 9時14分 (#2569383) 日記

    Xeon Phiで試してみたら5分でした
    http://d.hatena.ne.jp/telmin/20140318/1395139279 [hatena.ne.jp]

    HPCの世界は奥が深い。

  • by Anonymous Coward on 2014年03月16日 14時49分 (#2564100)

    リンク先は読んでませんが、スパコンでバブルソートで処理して、PCではクイックソートで処理。
    その結果PCのほうが速かった…
    みたいなオチなんでしょう?

    • by Anonymous Coward

      時間いくらのスパコンでそんな無駄なことするなんてずいぶんと金が有り余ってるんですね。

    • by Anonymous Coward

      せっかくの擁護を本人に否定された件
      http://blog.livedoor.jp/mswinvks/archives/8293048.html [livedoor.jp]
      > #あー、怖かった。とんでもないアルゴリズムが考案されたのかと思った。
      > #そこまでつよい高速化ではないと思います。

    • by Anonymous Coward

      スパコンとは言え、32ノード4-5TFlops分なので、そこらのワークステーション並み。
      その上今回の計算はDPが必要なく整数のみ、CPU内蔵のAVXとかGPUでも並列度を上げやすいものだから、スパコンの利点はほとんどないでしょうね。

  • by Anonymous Coward on 2014年03月16日 19時43分 (#2564215)

    OpenMPがそこそこ使えるようになってて驚いた
    fftwなんかが良い例だけど、ちょっと前まで自前で普通にスレッド切った方が速かったのに…
    やればできる子やったんや(笑)

    # 正直、実行時間求めるのにclock_tをCLOCKS_PER_SECで割るやり方はどうかと思った
    # CPUによってはそこで死ぬだろ (具体的にいうと初期のAthlon64~Athlon64 X2の出立ての頃の奴でEnable C'n'Cしてると即死)
    # そこは素直にtime等の外部コマンド使うか、ブロック切ってデストラクタにタイマ引っ掛けるC++で一般的に使われてるトリックを使うべきだろ
    # 最近のCPUは普通にTSC取っても大丈夫だけどさ、Athlon64なんかはHPETから取ってこないと散々な目にあうで
    # 一体何人のdjb信者がclockspeedでやられたと思ってるんだ…

  • by Anonymous Coward on 2014年03月16日 22時54分 (#2564295)

    コーディングの仕方だけでここまで高速化できるのか。
    しかし件の高校生が書いた、悔しさいっぱいのBlogコメが微笑ましいな。

  • cout << "num of solution: " << sum << endl;

    出力してるの、解の数だけじゃ?

    元記事に

    『魔方陣の世界』ではこの問題のためのコードも紹介されていますが、並列化されていないこともあって、解の数え上げで約5000秒(確認済み)、解の列挙で約3日(未確認)と、あまりふるいません

    と、解の数え上げ(元記事の『10分で解けた』と主張する「C++のコード」で実際にやっていること)と、高校生がスパコンで解いた2時間36分のコード(解の列挙)では、
    同じコードでは50倍の時間差があることを元記事自体が示している。

    (たぶん、出力をハード(RAMもしくはSDD/HDD)上に書き出すという、アルゴリズムとは無関係なところのボトルネックが原因だろうが)

    • なるほど、そういう違いがそもそもあったのですね。ならばぜひスパコンに掛けた自分のプログラムを数え上げに書き換えて、どのくらいになるかやって欲しいものです。批評をちゃんと受け止めて、さらに前に進む姿勢を身に着けることこそ(マスメディアに取り上げられることなんかよりずっと)大事なことだと思います(と強く思う今日この頃)。
      http://sci.tea-nifty.com/blog/2014/02/t2k-tsukuba5x5-.html [tea-nifty.com]
      ここにも触発された方が。

      親コメント
    • by Anonymous Coward
      ループの一番内側に・・・

      int t = omp_get_thread_num();
      ++counts[t];
      *files[t] << (char)x1 << (char)x2 << (char)x3 << (char)x4 << (char)x5 << (char)x6 << (char)x7 << (char)x8 << (char)x9 << (char)x10 << (char)x11 << (char)x12 << (char)x13 << (char)x14 << (char)x15 << (char)x16 << (char)x17 << (char)x18 << (char)x19 << (char)x20 << (char)x21 << (char)x22 << (char)x23 <

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...