パスワードを忘れた? アカウント作成
29631 story
プログラミング

開発者は数十、数百、数千コアを視野に入れるべき 159

ストーリー by hylom
小人さんにお願い 部門より

あるAnonymous Coward 曰く、

米IntelのエンジニアであるAnwar Ghuloum氏が公式ブログ「Research@Intel」で、「開発者はアルゴリズム開発および開発パイプラインにおいて、数十、数百、数千コアを視野に入れるべき」とアドバイスしている(ITpro記事cnet.com記事本家記事)。このように多数のコアを想定することにより、従来の言語、ライブラリ、エンジニアリング方法や慣習などを含め、コードベースをリファクタリングする機会となるとのことだ。

現在Intelはquad-coreプロセッサを出荷しており、今年度の第4四半期には8つのコアを搭載したNehalem(開発コード名)の発表が見込まれている。今後もコア数は増えていくことを想定し、現在のdual-coreやquad-coreを超えた視点をもつ必要性を指摘している。

現状、デュアルコアやクアッドコアですら視野に入れている開発者は多くないと思うのだが、数十、数百、数千のコアとなると(もともとメニーコアを想定したアルゴリズム以外は)どう実装すればよいのか、まったく見当もつかない。むしろライブラリ側でうまくやってくれ、と言いたいところであるがどうだろうか。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 某全件検索アルゴリズム

    200並列したら0.2秒で処理が終わったので
    チョーシこいてちょこちょこっと500並列にしたら

    Disk I/Oが一杯になってシステムダウンしますた orz

    # とおいめ
    --
    みんつ
  • あるコアの1日 (スコア:5, おもしろおかしい)

    by fin. (24028) on 2008年07月08日 18時28分 (#1379375)
    朝、電源を入れてもらった時に、どうも寝違えてしまったようだ。足し算がつらい。
    コアリーダに報告しないと、ドンドン遅れていきそうだ。

    昼、15分だけ、第33コアグループ全体で動画処理を受け持つことになった。

    夕方、やたらかけ算ばかりさせられた。隣のつれは発熱してて、結構疲れているようだ。
    お向かいの彼女は、今日は休みらしい。冷えてて気持ちよかった。

    夜、定時のウィルス対策のお触れが回ってきた。体全体をスキャンして貰うのは、いつもくすぐったい。

  • by Anonymous Coward on 2008年07月08日 15時16分 (#1379234)
    数百、数千になったら、すべてを並列的に扱うなんて無理ですよ。階層化です階層化。

    社長コア、専務コア群、常務コア群、部長コア群、課長コア群、係長コア群、平(涙)コア群
    にわけて上位のコアが下をこき使うわけですな。

    で、さらに特権を持つ会長コアとか、集まると怖い株主コア群。必要なときだけつかって、
    いらなくなったら捨てる契約コア群とかでてきてわけわからなくなる、と。

    中間管理コア群はストレスがたまるので、こまめなケアが必要とかいろいろノウハウも出てくるわけです。
    学会では「タスクを処理しないのにリソースだけ要求する昼あんどんコアを、選別、遮断するアルゴリズム」
    とかの発表が並ぶわけですな。
  • 80年代の第五世代プロジェクトで数百台規模のをやらされた人が今は40代ぐらい?
    100台から数千台の規模のPCクラスタも日本に100じゃきかないぐらいあるので、
    並列プログラムを書いた人は数千人はいると思う。

    でも、マルチコアは、それとはまた少し状況が違うでしょうね。CUDAみたいな
    ものと、これから出てくるマルチコアも様子が違うだろうし。

    Erlangとかの論理型プログラミング言語は懐かしいけど、
    メモリネックが見えてるのでだめだと思う。局所性の高い並列処理に向いた
    データ構造に馴れれば、それなりの性能は出ると思うので、プログラミング言語
    自体は、並列処理がスレッドなりで入っていれば、どれでも良いです。GCが
    入っている言語は実装が厳しいだろうと思う。
  • by Anonymous Coward on 2008年07月08日 16時35分 (#1379291)
    3の倍数と3がつく数字のコアを使用しているときだけバグが出るコードになりました。

    # どんなコードだそれは
  • Erlang (スコア:2, すばらしい洞察)

    by Livingdead (18685) on 2008年07月07日 18時34分 (#1378629) ホームページ 日記
    Erlangでも使おうか.
    って,プログラミング言語の問題じゃなくてそもそも並列プログラミングできるだけの想像力のある脳味噌が必要か.
    --
    屍体メモ [windy.cx]
  • 経験的な対応 (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2008年07月08日 14時47分 (#1379214)
    コアが1つ
    コアが2つ
    コアが沢山

    この3通りを視野に入れておけばいいんじゃね?
  • by Anonymous Coward on 2008年07月08日 15時31分 (#1379244)

    DragonflyBSD [dragonflybsd.org]では、一応1024 coreとかいう環境も視野には入れているらしい [srad.jp]。

    # 実装できているわけではないのであしからず。

  • 開発者は大変だ (スコア:2, おもしろおかしい)

    by ots556556 (34248) on 2008年07月08日 16時31分 (#1379288)
    数十、数百、数千コアを、視野に入れるはまあいいが、それぞれきちんと見てろといわれちゃ
    目にいいコアとは言いがたい…。
  • 1024コアてったって、coreクラスのプロセッサがまるまる1024個載るようなデバイスなんて今から考慮しなければならないような近い未来にできるわけないじゃん。ウエハ一枚まるまる使ったって入らないんじゃない? メニーコアの目的はパイプライン全埋めであって並列じゃないし、「コア」ってのはソフトにはプロセッサに見えるだけのハリボテなんだぜ?
  • by Anonymous Coward on 2008年07月08日 15時05分 (#1379226)
    「一般のプログラマもオブジェクト指向xxを習得すべき」
    と1990年代にいわれたように、
    「一般のプログラマも並列計算xxを習得すべき」
    とでもいいたいのではないかと。

    そんなにコアがあると当然壊れるものがでてくるのでビザンチン故障問題とか色々面倒だわね。
  • コアが1つと2つじゃ、大きく違う。
    2つと3つじゃ、ちょっと違う。
    3つとそれ以上じゃ、ほとんど同じ。
    そんな気がする。
  • 働き蟻理論 (スコア:1, 興味深い)

    by Anonymous Coward on 2008年07月08日 15時59分 (#1379259)
    どうしても、全体の20%のcoreしか、高稼働状態にならない!
    なんてなったらステキ
  • by satomi (9415) on 2008年07月08日 16時12分 (#1379270)
    Larrabeeが具体化してきたから用意しとけよオマイラ、
    ということですね。わかります。

    http://www.nordichardware.com/news,7923.html
    再来年ぐらいには出てきそうですし。

  • by Anonymous Coward on 2008年07月08日 18時01分 (#1379351)
    コアが数千、数万とかになるとコアの位置(配線、距離、熱、磁気、その他)で
    個性が出てきそうな気がしますが対応はどうなるんでしょうか。

    地球は巨大なコンピュータで人間も含めた動物は個性があるコアなのかもしれない。
    1人でたくさん計算(活動)するコア、他とつながってデータをたくさんやり取りする友達が多いコア、
    配線が切れてて1人ぼっちのコア、運が悪く、生まれつき、リソースの回りが悪くてうまく動かない、
    動けないコア、黄色い肌のコア、白い肌のコア、黒い肌のコア、etc.

    太陽系は(以下略)。
  • by saitoh (10803) on 2008年07月08日 18時23分 (#1379372)
    n個のデータをnプロセッサでソートするとO(logn)でソートできる、なんてのがありますが。 逐次処理のソートとは根本的に違う発想のアルゴリズムでした。
    つーわけで、逐次処理アルゴリズムが頭に入ってるプログラマが書いたプログラムを、ライブラリレベルで超並列プロセッサに対応させるのは根本的に無理ではないかと。
    • 昔は個々のプログラマが書いてたソート処理が、今はライブラリ任せになってるのと同様に、並列化してスループットが上がることが見込まれる部分は並列性を活かしたライブラリ(フレームワーク)任せになるんじゃなかろうか。
      #プログラマに高度な能力を要求するような環境は普及しないと思う。
      親コメント
  • 今, 多くのプログラムがマルチ/メニーコアに対応していないのって, 問題をアルゴリズムに落とし込む際にシングルスレッドを前提とした形式にしてしまっていることがかなり多いと思うんですよ.

    例えば, 離散したデータの個別処理, パイプライン的なデータ駆動型流れ作業, 結合則が適応可能な集計型の処理. そういった本質的に分散しやすい処理までひっくるめてループで表現しちゃっているところに問題があるのでしょう. スパコンのコンパイラなんかはコードから類推して並列化可能な部分を見つけ出しているわけですが, マルチ(問題)→シングル(アルゴリズム)→マルチ(実処理)の変換をしているわけですから, うまくいかないのもある意味当たり前. 丁度, プログラムの流れ制御をgotoだけで行っていたために流れ制御が破綻しかけ, それがgoto害悪論となったのと同様に, 複数対象への処理をループだけで行っているがために性能が生かせない, いわばループ害悪論ともいえるものが提唱できるのでしょう.

    そういう意味では, FORTRAN90等での行列演算などはループを使わない言語機能の例だと思います. ただ, 汎用的な複数対象処理記述としてどんな物が必要になるのかは分かりません. そう考えると, 文法的には単なるリスト処理でadhocに機能を追加できるLISPなんかの方が, マルチ/メニーコア環境では効率的な環境になるのかもしれません.

  • by tiamo (31312) on 2008年07月08日 21時12分 (#1379450)
    せっかくマルチコアでCPU100%の悪名から解放されたのに…
    マルチコアでもCPU100%にしろと言うことか!

    コアの数だけループ入れなきゃ…
typodupeerror

人生unstable -- あるハッカー

読み込み中...