アカウント名:
パスワード:
# コンピュータアーキテクチャは専門外なので嘘をついてたらごめんなさい.
大きな違いとして,メモリ帯域の不足があります.
今のところプロッセッサ外部へのアクセスはダイの端からしか出来ません.そのため,1ダイ上に数十以上のコアを実装する場合には,全てのコアがメインメモリに直接アクセスすることは不可能になります. この問題を解決するためには,コアやコアグループに局所的なメモリ (≠メインメモリのキャッシュ) の上で処理を行うようにソフトウェアを作らなければなりません. また,同種の作業をコアに割り振るとメインメモリに負荷が集中してしまいますので,処理を段階に分け,コア間でメインメモリを経由せずにデータを受渡すようにパイプライン化する必要があります.
不均一なメモリアクセスという点は既存の NUMA システムと同じですが,メモリにかけられるコストが少ないため,プロセッサ能力に対するメモリ帯域の不足はより深刻になるでしょう.また,局所的なメモリ上での処理という点がクラスタシステムと共通していますが,分割の粒度や局所メモリの量,競合する資源の取り扱いが異なります.
#1379490 の AC です.門外漢の妄言なので,識者の突っ込みを期待しています.
私も,現存するプロセッサではCELLのSPEが一番近いと思います. 一番大きな違いは,SPEがリングバスによる1次元接続であるのに対して,メニーコアでは接続トポロジが2次元メッシュ (積層される場合は3次元?) になることでしょうか.
メニーコアプロセッサ上でマルチプロセスOSを動かす場合,プロセスに対するコアの割当てはOSが行うことになると思われます. この時,プロセスの処理内容によって,コア数だけではなく,割当てる領域の形も考慮する必要があります. プロセスはどのように領域を要求するのか,また,OSはどのように最適な割当てを行うのかという問題を解かなければなりません.
これを詳細に行おうとすると,ほとんどプロセッサ設計 (リコンフィギュラブルプロセッサの使用) になってしまいます. 全てのソフトウェア開発者にこのような作業を課すのは負担が大き過ぎますから,プロセッサやOS,プログラミング言語が上手く抽象化することになるのでしょう.
最先端の研究ではどのような方法が提案されているのでしょうか.興味は尽きません.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
普通のやつらの下を行け -- バッドノウハウ専門家
高並列プログラムを書いたことがある人は結構いる (スコア:3, 参考になる)
100台から数千台の規模のPCクラスタも日本に100じゃきかないぐらいあるので、
並列プログラムを書いた人は数千人はいると思う。
でも、マルチコアは、それとはまた少し状況が違うでしょうね。CUDAみたいな
ものと、これから出てくるマルチコアも様子が違うだろうし。
Erlangとかの論理型プログラミング言語は懐かしいけど、
メモリネックが見えてるのでだめだと思う。局所性の高い並列処理に向いた
データ構造に馴れれば、それなりの性能は出ると思うので、プログラミング言語
自体は、並列処理がスレッドなりで入っていれば、どれでも良いです。GCが
入っている言語は実装が厳しいだろうと思う。
Re: (スコア:0)
#耐障害性などはサーバー用途の SMP 機と比べるとダメダメだと思いますが。
Re:高並列プログラムを書いたことがある人は結構いる (スコア:1, 興味深い)
# コンピュータアーキテクチャは専門外なので嘘をついてたらごめんなさい.
大きな違いとして,メモリ帯域の不足があります.
今のところプロッセッサ外部へのアクセスはダイの端からしか出来ません.そのため,1ダイ上に数十以上のコアを実装する場合には,全てのコアがメインメモリに直接アクセスすることは不可能になります. この問題を解決するためには,コアやコアグループに局所的なメモリ (≠メインメモリのキャッシュ) の上で処理を行うようにソフトウェアを作らなければなりません. また,同種の作業をコアに割り振るとメインメモリに負荷が集中してしまいますので,処理を段階に分け,コア間でメインメモリを経由せずにデータを受渡すようにパイプライン化する必要があります.
不均一なメモリアクセスという点は既存の NUMA システムと同じですが,メモリにかけられるコストが少ないため,プロセッサ能力に対するメモリ帯域の不足はより深刻になるでしょう.また,局所的なメモリ上での処理という点がクラスタシステムと共通していますが,分割の粒度や局所メモリの量,競合する資源の取り扱いが異なります.
Re:高並列プログラムを書いたことがある人は結構いる (スコア:1)
Cell ですでに実装されているものですね。 ただ Cell の場合はこの局所的なメモリにしか直接アクセスできないので、 すこぶる使い勝手が悪いと思います。
メインメモリへのアクセスについて、コンパイラかハードウェアのサポートがあれば Cell プログラミングがかなり楽になると思うんですが、そうすると今度は性能を出すのが難しくなると。
Re: (スコア:0)
数個のコアならOSの助けを借りながらやった方が既存のモデルが使えていいんでしょうけど、
今回のストーリーのような数百、数千個以上を目指そうとすると立場が逆転するかもしれませんね。
Re: (スコア:0)
>コア間でメインメモリを経由せずにデータを受渡すように
それを具体化するとCELLになる、と。
Re:高並列プログラムを書いたことがある人は結構いる (スコア:1, 興味深い)
#1379490 の AC です.門外漢の妄言なので,識者の突っ込みを期待しています.
私も,現存するプロセッサではCELLのSPEが一番近いと思います. 一番大きな違いは,SPEがリングバスによる1次元接続であるのに対して,メニーコアでは接続トポロジが2次元メッシュ (積層される場合は3次元?) になることでしょうか.
メニーコアプロセッサ上でマルチプロセスOSを動かす場合,プロセスに対するコアの割当てはOSが行うことになると思われます. この時,プロセスの処理内容によって,コア数だけではなく,割当てる領域の形も考慮する必要があります. プロセスはどのように領域を要求するのか,また,OSはどのように最適な割当てを行うのかという問題を解かなければなりません.
これを詳細に行おうとすると,ほとんどプロセッサ設計 (リコンフィギュラブルプロセッサの使用) になってしまいます. 全てのソフトウェア開発者にこのような作業を課すのは負担が大き過ぎますから,プロセッサやOS,プログラミング言語が上手く抽象化することになるのでしょう.
最先端の研究ではどのような方法が提案されているのでしょうか.興味は尽きません.
Re:高並列プログラムを書いたことがある人は結構いる (スコア:1, 興味深い)
となるとIntelの試作した80core、1TFlopsのやつなんかかな?
コア間の転送をnetwork packetの様に扱ってて、
CELL以上の変態だったはずです。