開発者は数十、数百、数千コアを視野に入れるべき 159
ストーリー by hylom
小人さんにお願い 部門より
小人さんにお願い 部門より
あるAnonymous Coward 曰く、
現状、デュアルコアやクアッドコアですら視野に入れている開発者は多くないと思うのだが、数十、数百、数千のコアとなると(もともとメニーコアを想定したアルゴリズム以外は)どう実装すればよいのか、まったく見当もつかない。むしろライブラリ側でうまくやってくれ、と言いたいところであるがどうだろうか。米IntelのエンジニアであるAnwar Ghuloum氏が公式ブログ「Research@Intel」で、「開発者はアルゴリズム開発および開発パイプラインにおいて、数十、数百、数千コアを視野に入れるべき」とアドバイスしている(ITpro記事、cnet.com記事、本家記事)。このように多数のコアを想定することにより、従来の言語、ライブラリ、エンジニアリング方法や慣習などを含め、コードベースをリファクタリングする機会となるとのことだ。
現在Intelはquad-coreプロセッサを出荷しており、今年度の第4四半期には8つのコアを搭載したNehalem(開発コード名)の発表が見込まれている。今後もコア数は増えていくことを想定し、現在のdual-coreやquad-coreを超えた視点をもつ必要性を指摘している。
1000プロセッサのシステムで (スコア:5, 興味深い)
200並列したら0.2秒で処理が終わったので
チョーシこいてちょこちょこっと500並列にしたら
Disk I/Oが一杯になってシステムダウンしますた orz
# とおいめ
みんつ
あるコアの1日 (スコア:5, おもしろおかしい)
コアリーダに報告しないと、ドンドン遅れていきそうだ。
昼、15分だけ、第33コアグループ全体で動画処理を受け持つことになった。
夕方、やたらかけ算ばかりさせられた。隣のつれは発熱してて、結構疲れているようだ。
お向かいの彼女は、今日は休みらしい。冷えてて気持ちよかった。
夜、定時のウィルス対策のお触れが回ってきた。体全体をスキャンして貰うのは、いつもくすぐったい。
プログラミングに革新を! (スコア:4, おもしろおかしい)
社長コア、専務コア群、常務コア群、部長コア群、課長コア群、係長コア群、平(涙)コア群
にわけて上位のコアが下をこき使うわけですな。
で、さらに特権を持つ会長コアとか、集まると怖い株主コア群。必要なときだけつかって、
いらなくなったら捨てる契約コア群とかでてきてわけわからなくなる、と。
中間管理コア群はストレスがたまるので、こまめなケアが必要とかいろいろノウハウも出てくるわけです。
学会では「タスクを処理しないのにリソースだけ要求する昼あんどんコアを、選別、遮断するアルゴリズム」
とかの発表が並ぶわけですな。
Re:プログラミングに革新を! (スコア:1)
平コアなのにアイドル時に社長コアと仲良くなって、×コアと言われつつも
遮断されずに済む訳ですな。
-- う~ん、バッドノウハウ?
Re:プログラミングに革新を! (スコア:1)
# それはプログラマーじゃなくてプロデューサー
Re:プログラミングに革新を! (スコア:1)
高並列プログラムを書いたことがある人は結構いる (スコア:3, 参考になる)
100台から数千台の規模のPCクラスタも日本に100じゃきかないぐらいあるので、
並列プログラムを書いた人は数千人はいると思う。
でも、マルチコアは、それとはまた少し状況が違うでしょうね。CUDAみたいな
ものと、これから出てくるマルチコアも様子が違うだろうし。
Erlangとかの論理型プログラミング言語は懐かしいけど、
メモリネックが見えてるのでだめだと思う。局所性の高い並列処理に向いた
データ構造に馴れれば、それなりの性能は出ると思うので、プログラミング言語
自体は、並列処理がスレッドなりで入っていれば、どれでも良いです。GCが
入っている言語は実装が厳しいだろうと思う。
Re:高並列プログラムを書いたことがある人は結構いる (スコア:3, 興味深い)
皮肉じゃなくて、一定時間CPUを独占できるシミュレーション用の計算といつどのコアに割り込みが入ってくるか
分からないPC用途ではプログラミングモデルが同じではうまくいかないでしょう。
nコアあるからn並列にしたら1つだけウイルススキャンに持って行かれて効率が半分に落ちるとかありがち。
SMPだとできるだけ粒度を大きくして通信のオーバーヘッドを減らす工夫がされますが、メニーコアでは粒度を
小さくして空いているCPU資源をその場で見つけて利用する形になるのではないかと。
Re:高並列プログラムを書いたことがある人は結構いる (スコア:1, 興味深い)
# コンピュータアーキテクチャは専門外なので嘘をついてたらごめんなさい.
大きな違いとして,メモリ帯域の不足があります.
今のところプロッセッサ外部へのアクセスはダイの端からしか出来ません.そのため,1ダイ上に数十以上のコアを実装する場合には,全てのコアがメインメモリに直接アクセスすることは不可能になります. この問題を解決するためには,コアやコアグループに局所的なメモリ (≠メインメモリのキャッシュ) の上で処理を行うようにソフトウェアを作らなければなりません. また,同種の作業をコアに割り振るとメインメモリに負荷が集中してしまいますので,処理を段階に分け,コア間でメインメモリを経由せずにデータを受渡すようにパイプライン化する必要があります.
不均一なメモリアクセスという点は既存の NUMA システムと同じですが,メモリにかけられるコストが少ないため,プロセッサ能力に対するメモリ帯域の不足はより深刻になるでしょう.また,局所的なメモリ上での処理という点がクラスタシステムと共通していますが,分割の粒度や局所メモリの量,競合する資源の取り扱いが異なります.
マルチコアを視野に入れたプログラミングの結果 (スコア:3, おもしろおかしい)
# どんなコードだそれは
Erlang (スコア:2, すばらしい洞察)
って,プログラミング言語の問題じゃなくてそもそも並列プログラミングできるだけの想像力のある脳味噌が必要か.
屍体メモ [windy.cx]
Re:Erlang (スコア:1)
現状,それなりに使える(学習しやすく,ある程度の信頼性がある)並列言語は少なくない?
ErlangかConcurrent Clean [cs.ru.nl]かOz [mozart-oz.org]ぐらいしか思い当たらないんだけど.
その中でも仕事に使うならErlangになっちゃうな.
Re:Erlang (スコア:1)
Re:Erlang (スコア:1, すばらしい洞察)
Re:Erlang (スコア:1, すばらしい洞察)
むしろ公の場で幼稚な煽り口調を使って発言することこそが、あなたのおっしゃる「お子ちゃま」に当たるんじゃないかなと。
おそらく、もし元のコメントが
「しかし現在のErlangはマルチコアにうまく対応してないんですよね。」
ぐらいの書き方であれば普通に「興味深い」が付いていたことでしょう。
経験的な対応 (スコア:2, おもしろおかしい)
コアが2つ
コアが沢山
この3通りを視野に入れておけばいいんじゃね?
Re:経験的な対応 (スコア:2, おもしろおかしい)
だから
コア数が1桁
コア数が2桁
コア数が3桁(以上)
じゃないか?
Re:経験的な対応 (スコア:1)
Re:経験的な対応 (スコア:1, おもしろおかしい)
不眠症の人に最適?
Re:経験的な対応 (スコア:3, おもしろおかしい)
メェ~ニコア ?
Re:経験的な対応 (スコア:2, おもしろおかしい)
Re:経験的な対応 (スコア:1)
怖いなあ。
Re:経験的な対応 (スコア:1)
- 二次元
- 二次元以外
でしょう。
そー言えば昔、世の中は三つの要素で出来ている、と言ってた人が居た。
1. 原田知世に関係のあるもの。
2. 原田知世に関係のないもの。
3. 原田知世。
考え(ようとし)ているOS (スコア:2, 参考になる)
DragonflyBSD [dragonflybsd.org]では、一応1024 coreとかいう環境も視野には入れているらしい [srad.jp]。
# 実装できているわけではないのであしからず。
Re:考え(ようとし)ているOS (スコア:2, 参考になる)
開発者は大変だ (スコア:2, おもしろおかしい)
目にいいコアとは言いがたい…。
Re:開発者は大変だ (スコア:1)
Re:開発者は大変だ (スコア:4, おもしろおかしい)
そんなコア生んだ覚えがありません。
何かメニーコアを理解してない人が多い気がする。 (スコア:2, 興味深い)
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:2, 興味深い)
なるでしょ。大昔、富士通が「1シリコンダイ=1CPU」というとんでもないものを作ってきたぐらいだもの。『1つのパッケージの大きさの上限』は、マザーボードの方さえ耐えられれば何ぼでもでかくなるものだよ。
それにだ。1024個のコアを入れるために必要なのは、「4コア」が入る2cm角のチップを4x4で並べて(この段階で2^6)それを16段縦に並べてこれ [cnet.com]で冷却すればよい。動作速度を100MHz程度にまで落とせば、発熱量は全体で10倍以内に収まる。
メモリシステムのデザインしだいだろう、そんなの。
そもそも、メモリとの通信が今のように「パラレル通信」で行われると言う保証はない。メモリの速度をこれ以上あげようとしたらまず持って無理だろう。
例えば64個のメモリと、ばらばらに通信できるシリアル線をプロセッサ側に用意する。16個のコアがL3キャッシュを介して1つのシリアル線に繋がる。他のメモリと通信するときは、他のコアを経由する必要があるので遅くなる、と言うデザインにすれば動くだろ。kernel屋さんは泣きを見るかもしれないが、そのためのマイクロカーネルだ。 従来のx86と市場を衝突させないため、に決まってるじゃないか。 初期顧客がつかなかったから。改善コストが掛けられなかっただけだよ。 128bit VLIW命令セットを公開しなかったからさ。IA32互換能力になんて誰も期待していなかっただけだよ。で、皆が買い控えている間にひっくり返っただけさ。
IA64の二の舞になりたくないからさ。
プロセッサが売れるためには「それだけの仕事」が無くちゃいけない。1スレッドデザインならびにそれを大前提とするアルゴリズムでは、マルチコアは使い切れない。
IA64の場合、可変長VLIWのせいで「一体どこでプログラムが止まったのか、その時実行していた命令はどれか」サッパリ判らなかった。チップデザイン中のバグも多かった。おかげで、バグがハード由来かソフト由来かもよく判らなかった。
ようするに「並列&パイプライン&OoO」を本気でやられた場合に、ソフト的にはハードウェアに何を期待するべきなのか、というコンセンサスが取れなかったし、Intelもまさか…と言うぐらい機能不足だった。
そして、機能不足を補正するだけの予算が無かった。
だから「20年あげるから、研究してちょ」と言ってるんだよ。
.
もう少し、まじめにハードウェアを勉強するべきだと思うぞ。
ちょっと、なめてかかりすぎ。
fjの教祖様
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:2, 興味深い)
作れるかどうかという話じゃないんだがな。
インテルはそんなものを作るだろうかという話だよ。仮に作ったとしても一般に普及させるつもりでなければ、大前提である「メニーコア前提>ソフト屋」が意味を為さなくなる。その話が本当なら、インテルは「ホールウエハだの、16積層だの、発熱10倍だの」が今それをしつこく言う必要があるくらい近い未来に今それをしつこく言う必要があるくらい普及すると考えてるということになるけど、そう思ってるわけね。
# というか、そもそも「とんでもないもの」なんだよね、それ。
発熱10倍とか、積層とか、100MHz動作とかが何を意味するのかわかってないんじゃない?
ところで、「これで冷却」の「これ」って何?
2.1024個動くか
さっきも云ったように、動けばいいっていう話じゃないんだがな、というかさっきから発生する無駄をことごとく無視してるように思えるんだが。もしそんな無駄を放置しておけるならプロセッサ屋ってずいぶん気楽な商売だねー。
3.Atom
つまり、あれは「メニーコア」には繋がっていない。というわけね?
# あれが一番メニーコアに繋がってると思うけどな。何と云うか観測気球的な面も含めて。
4.IA64
初期顧客がつかなかった理由を考えてみて?
5.Transmeta
それもあるだろうね。でもVLIW自体に問題はない?「期待外れ」は何を期待してたと思う?これは4も同じ。
6.メニーコア前提を唱える理由
マルチコアありきではマルチコアな理由にはならんよ。当然それを唱える理由にもならんよな?
--
日記の方で質問したのにそっちには答えずこっちに答えた理由は何だろう。一週間以内に回答があると嬉しいな。いい回答を期待してるよ。
パラダイムシフト (スコア:1, 参考になる)
と1990年代にいわれたように、
「一般のプログラマも並列計算xxを習得すべき」
とでもいいたいのではないかと。
そんなにコアがあると当然壊れるものがでてくるのでビザンチン故障問題とか色々面倒だわね。
1・2・3・たくさん (スコア:1)
2つと3つじゃ、ちょっと違う。
3つとそれ以上じゃ、ほとんど同じ。
そんな気がする。
Re:1・2・3・たくさん (スコア:5, おもしろおかしい)
でも 理想と現実だいぶ違うから 夢から覚めなさい
(中略)
8コア好きは でかけりゃいいってもんじゃないことを
肝に命じておいてください。 プログラマーの敵ですよー。
こうならなきゃいいけど(大オフトピ) (スコア:4, おもしろおかしい)
イ○テル課題曲 : 「千のコアになって」 ... orz
--
♪Larrabeeの売り場の前で 泣かないでください~
Re:こうならなきゃいいけど(大オフトピ) (スコア:4, おもしろおかしい)
働き蟻理論 (スコア:1, 興味深い)
なんてなったらステキ
Re:働き蟻理論 (スコア:1)
そろそろ (スコア:1)
ということですね。わかります。
http://www.nordichardware.com/news,7923.html
再来年ぐらいには出てきそうですし。
個性が出てきそう (スコア:1, 興味深い)
個性が出てきそうな気がしますが対応はどうなるんでしょうか。
地球は巨大なコンピュータで人間も含めた動物は個性があるコアなのかもしれない。
1人でたくさん計算(活動)するコア、他とつながってデータをたくさんやり取りする友達が多いコア、
配線が切れてて1人ぼっちのコア、運が悪く、生まれつき、リソースの回りが悪くてうまく動かない、
動けないコア、黄色い肌のコア、白い肌のコア、黒い肌のコア、etc.
太陽系は(以下略)。
ライブラリ任せじゃ無理 (スコア:1)
つーわけで、逐次処理アルゴリズムが頭に入ってるプログラマが書いたプログラムを、ライブラリレベルで超並列プロセッサに対応させるのは根本的に無理ではないかと。
Re:ライブラリ任せじゃ無理 (スコア:1)
#プログラマに高度な能力を要求するような環境は普及しないと思う。
発想が多分間違っている (スコア:1)
今, 多くのプログラムがマルチ/メニーコアに対応していないのって, 問題をアルゴリズムに落とし込む際にシングルスレッドを前提とした形式にしてしまっていることがかなり多いと思うんですよ.
例えば, 離散したデータの個別処理, パイプライン的なデータ駆動型流れ作業, 結合則が適応可能な集計型の処理. そういった本質的に分散しやすい処理までひっくるめてループで表現しちゃっているところに問題があるのでしょう. スパコンのコンパイラなんかはコードから類推して並列化可能な部分を見つけ出しているわけですが, マルチ(問題)→シングル(アルゴリズム)→マルチ(実処理)の変換をしているわけですから, うまくいかないのもある意味当たり前. 丁度, プログラムの流れ制御をgotoだけで行っていたために流れ制御が破綻しかけ, それがgoto害悪論となったのと同様に, 複数対象への処理をループだけで行っているがために性能が生かせない, いわばループ害悪論ともいえるものが提唱できるのでしょう.
そういう意味では, FORTRAN90等での行列演算などはループを使わない言語機能の例だと思います. ただ, 汎用的な複数対象処理記述としてどんな物が必要になるのかは分かりません. そう考えると, 文法的には単なるリスト処理でadhocに機能を追加できるLISPなんかの方が, マルチ/メニーコア環境では効率的な環境になるのかもしれません.
えろげ (スコア:1)
マルチコアでもCPU100%にしろと言うことか!
コアの数だけループ入れなきゃ…
Re:大半の開発者には関係ないのでは? (スコア:1, 興味深い)
スパコンに付いてくるコンパイラって自動並列化してくれるよね?
何千ものスーパーマルチコア並列化のノウハウは
地球シミュレータでプログラム組んでる人が一番蓄積してそうだが(ただしFortran)。
Re:大半の開発者には関係ないのでは? (スコア:4, 参考になる)
コンパイラの自動並列化はほとんど役に立たない。かえって遅くなることもよくあります。
ちゃんと並列化するには source 中にここはどういう風に並列化するかをコンパイラに適切に指示する必要があります。
もちろんデーター構造も重要です。
私の経験では並列度をあげるためにはコア数が 4, 8, 16 でコードを変える必要がありました。
また、現時点では、メニーコアだとシステムによってコードを変えるのは当たり前のことです。
Re:大半の開発者には関係ないのでは? (スコア:2, 参考になる)
昔のスパコンは金もかかっていて、コンパイラーも豪華だったのですが、最近のマシーンはintel cpuのよせあつめだったりして金がかけられなくなっています。osもred hatだったりして、コンパイラーまで金がまわらないみたいでした。最近の話については少しうといのですが、この手のスパコンだとコンパイラーは自動並列してくれないような話を聞きました(ここら辺はうそかもしれない、、、あるいはちゃんと自動並列化してくれるコンパイラーとかあります?)。mpiとか使えば速くなるみたいですけど、そんな面倒くさいことやってたらサイエンスをする時間がなくなって困ります。
いずれにしろ、mpiみたいなむさくるしいものをパソコンの世界にもってくるのはどうかと思います。できれば使い易いライブラリーがパソコン用に用意されて、それがスパコンでも使われるというのが望ましいと思うのですが、現状どうなんでしょう。
Re:大半の開発者には関係ないのでは? (スコア:1, 参考になる)
#その辺をサポートするのが Intel Threading Block?
Re:気が早いなぁ (スコア:2, 興味深い)
Re:気が早いなぁ (スコア:1, おもしろおかしい)
#むしろ、1000個のコアを並べる幾何学的な形状が気になる。方形の宅地造成よりは、
#円形とか球平面形(ウニ状)にならべた方が涼しそうな感じだが、普通のPCケースに収まるんだろうか。