パスワードを忘れた? アカウント作成
43618 story

マルチコアCPUで実行されるプログラムのパフォーマンスは実行されるコア毎で違う 36

ストーリー by hylom
原因はなに? 部門より

mhatta 曰く、

本家/.の記事より。マルチコアプロセッサ上で実行されるプログラムのパフォーマンスが、サーバごと、あるいはコアごとにすら違うことを、米ヴァージニア技術工科大の研究者が明らかにした(GCNの記事原論文[PDF])。

どのコアが割り込みをハンドルするか、どのキャッシュが必要なデータを保持するかといった因子は実行のたびに変化するにも関わらず、現状こうしたリソースは自由裁量で割り当てられている。この結果、プログラムの実行回数時間は最大10%も変動しうるそうだ。すでに同じ研究者らは、非効率なふるまいを認識してリソースをより適切なタイミングで再配分するライブラリの開発に取り組んでいると言う。

指摘があった点を訂正(by mhatta, Wed, 24 Dec 2008 19:19:44 +0900)
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 単純に考えると (スコア:5, おもしろおかしい)

    by Anonymous Coward on 2008年12月24日 19時11分 (#1480019)
    >どのコアが割り込みをハンドルするか、どのキャッシュが必要なデータを
    >保持するかといった因子は実行のたびに変化するにも関わらず

    実行の前提条件が変わっているので、実行時間が違うよという至極当たり前な
    話に読めるのですが。

    「コア毎で違う」と表現からは極端に言うと「3番目のコアだけアホになって
    いる」というニュアンスに読めてしまいます。
    • by johndoe (3028) on 2008年12月24日 19時44分 (#1480039) 日記
      病院だと4階がないとこがある。
      コアも3の倍数の番号をとばせばいいってことですな。
      親コメント
      • by Anonymous Coward
        PS3のCellのSPEとやらが一つ減らされてるのも、そのせいでしたか。

        #ん?6番目が居るのは何故だ?
        • by Anonymous Coward
          SPEはマジでコア間の距離が違うから近くのコア通し通信しないと遅くなるぞ。
          本当は多分どんなCPUでもそうなんだろうけど、対称という印象が強いんだろうな。
          • by Anonymous Coward
            ピラミッド型にすると、4つのコアまでは等間隔で使えますね
            5コア以上は思いつきませんがw
          • by Anonymous Coward
            単純にリングバスかクロスバかの違いじゃね?
    • by Anonymous Coward
      > 「コア毎で違う」と表現からは極端に言うと「3番目のコアだけアホになって

      こんなのか
      http://www.candysoft.jp/ohp/01_products/ane/chara/chara_select.html [candysoft.jp]
  • abstractしか読んでませんが、タレコミ文、少し読み違えていませんか。

    > プログラムのパフォーマンスが、サーバごと、あるいはコアごとにすら違う
    これは当然の前提で、この論文でこの事実を明らかにしたわけでは無いでしょう。

    > この結果、プログラムの実行回数は最大10%も変動しうる
    > (中略)
    > 非効率なふるまいを認識してリソースをより適切なタイミングで再配分するライブラリの開発に取り組んでいる
    ではなく、そういうライブラリを開発して(まだExperimentalだけど)、
    性能を10%改善しました、というのがこの論文の主張では。

  • by ef (25263) on 2008年12月25日 8時00分 (#1480246)
    ライブラリレベルで解決するようですが、カーネルのスケジューラやリソース管理、割込ハンドリングがプロセッサに割り当てたリソースの状況を考慮するようになるなら、Core 2 と Atom の混載のような構成に道が開けるかもしれません。レイテンシー重視な応用とスループット重視な応用の両方に強いシステムになることが期待できますが、プロセス(スレッド?)ごとにリソースプロファイルを取るオーバーヘッドが正当化出来るほどかがネックになりそうです。
    • by Anonymous Coward on 2008年12月25日 13時08分 (#1480413)
      ちと違う話ながらCore2 Quadもいわば非対称SMPなのですが、Windowsはカーネルのスケジューラレベルで対処しているらしいという話を連想しました。WikipediaのIntel Core 2 [wikipedia.org]より抜粋:

      しかしダイ間の通信はFSBを介して行うのでダイ間の通信速度は同ダイ上のコア間より遅くなってしまう。また同ダイおよび別ダイでコア同士の関係が同一ではないので、状況により処理能力に違いが発生する場合がある。この問題はWindows 2000までのWindowsで顕著であった。Windows XPにおいてHyper-Threading Technologyのサポートが行われる際に、この不均質な関係を持つCPUのサポートが追加され、BIOSから各CPUの情報を得てタスク割り当ての参考とするようになった。これにより処理内容によっては処理効率が大きく向上した。

      # Linuxだとどうなんだろう

      これは実行時プロファイリングではなくあくまで始動時に静的に非対称性を検出し考慮にいれるだけですね。

      今回の話に戻りますが、たしかに割り込み含めリソース管理はカーネル管轄下なのでライブラリレベルよりスケジューラレベルで考慮にいれたほうが効率的な気がします。
      親コメント
      • by Anonymous Coward on 2008年12月25日 17時04分 (#1480621)
        http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=%A5%B9%A5%B1%A5%B8%A5%E5%A1%BC%A5%E9%A5%A2%A5%AF%A5%C6%A5%A3%A5%D9%A1%BC%A5%B7%A5%E7%A5%F3
        こういう技術は昔からありました。

        で、Windowsのやつは、同一プロセスに属する異なるスレッドは物理的に近いプロセッサにわりあてましょうという話です。
        これは既存のアプリケーションに何の手を入れなくても効果があります。
        アプリケーションにもインターフェーフェースは開放されてますけど。

        タレコミのやつは
        > high-end computing systems. While the vast majority of such multi-core processors contain
        > symmetric hardware components, their interaction with systems software, in particular the communication stack,
        > results in a remarkable amount of asymmetry in the effective capability of the different cores.
        通信スタック等がスマートでないので性能が低下していると。
        マルチコアだとハードは対称的なので、アプリの知識がないOSには手も足も出ない話です。

        > While SyMMer is a generic framework that can fit into any communication
        > library, in this paper our descriptions refer to a version plugged into the MPICH2 implementation [7]
        > of the Message Passing Interface (MPI) [8].
        ユーザーが使いたい通信ライブラリ(MPICH2とか)ごとに、互換の新ライブラリを用意して使う必要があるようです。
        ユーザーコードは修正しなくてよさそう。
        親コメント
      • > 非対称SMP
        流石にこの言い方は気持ちが悪い。
        非対称MP,またはASMPって言うと思うぞ,一般には。
        親コメント
      • > Core2 Quadもいわば非対称SMPなのですが、

        「非対称SMP」って言葉はちょっと意味不明です。(SMP=Symmetric Multiprocessing=対称型マルチプロセッシングなので、非対称SMPと書くと非対称対称型マルチプロセッシングとなってしまう。)

        SMPは、複数のコアが同じメモリ空間の中でプログラムを実行するという、「コアの役割が対称」であることを示す言葉であり、そういう点では、Core2 Quad はきちんと対称的です。

        でもって、SMPにおいては、厳密には「コア間の通信」という機能はなく「コア同士の通信」なんてものは発生しません。同じメモリを共有しているがための「各地にあるキャッシュ間の不整合解消処理」が発生するだけ。
        だからCore2 Quad なんかの問題は「同じメモリをアクセスするスレッド同士は同じダイ内のコアで実行した方が、不整合の発生率が減る」って程度の話ですね。
        (「スレッドAとスレッドBは同じダイ上のコアで実行すべき」といったヒント情報は発生するが、「スレッドAはコアaで実行すべき」といったコア間の非対称性は発生しない)

        たとえば、AMD系では、メモリコントローラをCPUが内蔵しているため、
        複数のCPUを載せているような環境だと、メモリアクセス速度は、
        「アクセス先のメモリが繋がっているチップ上のコアで実行する場合」(直接アクセス可能)
        「アクセス先のメモリが繋がっていないチップ上のコアで実行する場合」(メモリが繋がったチップと通信する必要がある)
        で、速度が変わってきます。

        そこまで考えてスレッドの割り振りを行うのはすごく大変そうというか、突き詰めるとコア毎にメモリ空間を分ける羽目になってしまい、
        そこまで考えてスケジュールする立場になると「不完全対称型マルチプロセッシング」って言えると思います。
        それでもシステム構成的にはあくまで「SMP=対称型マルチプロセッシング」であり、「非対称」ではないです。

        #非対称型マルチプロセッシングというと…6809×2個のFM-8とか、μPD765A×2個のPC-8801mkIIとかかなぁ?
        親コメント
        • by Anonymous Coward
          > SMPは、複数のコアが同じメモリ空間の中でプログラムを実行するという、「コアの役割が対称」であることを示す言葉であり、そういう点では、Core2 Quad はきちんと対称的です。

          SMPははっきり定義された用語ではなく、Uniform Memory Accessハードウェアのことだったり、すべてのコアが対等にOSを実行=割り込みハンドリング等をする構成だったりしますが、いずれにしろ
          > 複数のコアが同じメモリ空間の中でプログラムを実行するという、
          これはSMPの定義には弱いですね。

          > でもって、SMPにおいては、厳密には「コア間の通信」という機能はなく「コア同士の通信」なんてもの
          • SMPははっきり定義された用語ではなく、Uniform Memory Accessハードウェアのことだったり、すべてのコアが対等にOSを実行=割り込みハンドリング等をする構成だったりしますが、

            一般的な定義はともかく、あなたはどういう意味でSMPという言葉を使っていますか?

            私はSMPと言われるとすべてのコアの役割が対称である、と認識しています。メモリ共有の方式についてはUMA/NUMAという言葉があるのでSMPかAMPといった表現はしません。

            #非対称型マルチプロセッシングというと…6809×2個のFM-8とか、μPD765A×2個のPC-8801mkIIとかかなぁ?

            間違いなく違います。わからなければ教えてあげます。

            非対称型マルチプロセッシングはともかくとして、非対称SMPつまり非対称対称型マルチプロセッシングについて、どういう意味で用いているのか教えてください。

            単に一部の割り込みがCPU#0にしか接続されていない、ということを示しているのか、4コアのうち二次キャッシュで通信できるコアとFSB経由で通信せざるを得ないコアが混在していることを意味しているのか。それともまったく別の概念なのですか?

            親コメント
            • by Anonymous Coward
              > 私はSMPと言われるとすべてのコアの役割が対称である、と認識しています。メモリ共有の方式についてはUMA/NUMAという言葉があるのでSMPかAMPといった表現はしません。

              あなたがどういう意味で使おうと自由ですが、SMPは一般的には曖昧さを含む概念ですから、きっちり述べてからにしてほしいものです。

              上にも述べたように、NUMAをSMPに含めないこともあります。ローカルメモリという固有のハードウェアを持つからです。
              (SMPを共有メモリ型マルチプロセッサの意味で使うこともあるので気をつけましょう)
              バス結合のマルチプロセッサのようなものであっても、OSがカーネルの役
              • 私はSMPと言われるとすべてのコアの役割が対称である、と認識しています。メモリ共有の方式についてはUMA/NUMAという言葉があるのでSMPかAMPといった表現はしません。

                あなたがどういう意味で使おうと自由ですが、SMPは一般的には曖昧さを含む概念ですから、きっちり述べてからにしてほしいものです。

                まったく同意します。

                親コメント
    • by Anonymous Coward
      今でも汎用機では後からプロセッサを追加したりアップグレードしたりするので、ホモな構成は前提としてませんね。
  • by Canadian (31348) on 2008年12月24日 13時16分 (#1479700)
    細かい話ですが,Virginia Tech の日本語表記は「バージニア工科大学 [wikipedia.org]」が標準的かと思います。

    以前の記事 [srad.jp]でも「バージニア工科大学」になってます。ご参考まで。
    • by Anonymous Coward on 2008年12月25日 13時50分 (#1480458)
      空目…orz
      親コメント
  • by Anonymous Coward on 2008年12月24日 18時14分 (#1479971)
    本家記事のexecution timesの誤訳かな?
  • by Anonymous Coward on 2008年12月24日 20時03分 (#1480046)
    擬似乱数生成は暗号論的な場面では使えないわけですが、マルチコアで長周期の擬似乱数生成をしてマージ出力すれば改善できるのでは?みたいな。
    暗号論的擬似乱数生成器 [wikipedia.org]って遅いアルゴリズムが多いのですが、マルチコアで実装したらどうなるのか、というかマルチコアで実装する場合はどんな注意が必要なのか、ってことが気になっていたり。
  • by miyuri (33181) on 2008年12月24日 21時11分 (#1480076) 日記
    コア数だけスーパーπを走らせた場合は、計算時間はどれだけ短くなるの?
    関係ないって?
    帰っていいよ。
  • by Anonymous Coward on 2008年12月25日 9時08分 (#1480266)
    ディレイラマみたいな物と理解すればいいのかな?
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...