世の中同じようなことを考える人とはいるものだなぁと実感。 まずは次の一文。
クライアントPCの場合、コンソールの前に座るユーザーが1人であることが、 大きな問題だとは良く言われることだ。 普通、人間は1度に1つのことしか考えられないし、できない。コンピュータの構成要素として CPU はよく人間の「脳」に例えられますが、 これまでの CPU が持つ人間の脳を越える能力は 「爆発的な計算速度」くらいしかなかったわけです。 それが Many Core が進むと、人間の脳にはできない「複数のことを同時に考える」という ことができるようになります。
:(略)
基本的には集中すれば集中するほど(言い換えれば仕事の能率が上がれば上がるほど)、 シングルスレッド化する傾向が強いと思う。 そんな人間に、たくさんのプロセッサコアが与えられても、というわけだ。
:(略)
人間が考えるアルゴリズムそのものに限界が現れるのではないか、という気がしてくる。
単純な話、人間ができないことを考えることができるのか… 例えるのなら翼のない人間に、本当に効率的な翼の使い方など想像がつくのかと言うことです。
難しいでしょうね。
しかし人間が考えていて、100個を超えるプロセッサコアに最適なアルゴリズムなど 作成できるのだろうか。筆者には想像もつかない。私にも想像がつかない (^O^;>
確かにただ一つのタスクに対して、言い換えるなら人間が一つだと定義してしまっているタスクに対して、 Many Core を有効に使うと言うアプローチでは限界があることは間違いありません。
これに対しては「靴屋の小人さん」的アプローチで、できるだけ小さく汎用的なタスクを分割し、 あとはオペレーティングシステム (OS) が、もっと軽量高速なプログラム間通信と、 効率的なコアのリソース管理を行うようになればいいのではないでしょうか? そもそも現状では OS そのものが Many Core を前提に設計されているかが、 怪しいと思っていますから。
また人間が一つと思いこんでしまっているタスクを、どこまで細分化できるかという問題は、 早々簡単に解のでる問題ではない分析的、戦略的要素が多分にあると思いますし、 そう言うマイクロタスク実行の戦略面を考えると、 Many Core 時代のオペレーティングシステムの アーキテクチャはグリッドコンピューティング的な考え方も取り入れる必要もあるでしょう。
しかし、それができれば、100 個くらいのコアなら使い尽くせるのではないかと思ってます。
実際三層構造だなんだと、いくつもの筐体に分かれたサーバを LAN でくっつけて、 実現しているソリューションなんて星の数ほどあるのですから。
オペレーティングシステムの研究から離れて 10 年以上も経つ人間の 戯言かもしれませんが。。。 (^O^)
たとえば、特定の処理を行なう際に得られるコアの数(同時処理可能なスレッドの数)に応じて、 ダイナミックにアルゴリズムを変える、といったことは筆者の想像を超えている。 おそらく、それを可能にするのは計算機自身がアルゴリズムを考えることだろうが、 そうなるともはやプログラムは人間にはデバッグできないものになってしまうだろう。 人間がデバッグできないということは、人間が正当性を検証できない、ということでもある。こういう SF チックなアプローチは、どうかなぁ。。。 不可能ではないとは思いますが、実現は相当難しいのではないでしょうか?
今でも大規模なプロジェクトにおいては、それに近いことが起こっているだろう。
人工知能なんてものも、相当前から考え方はありますが、 これだけコンピューティングパワーが上がっても、まだ実現されていないところを見ると、 人間が想像力のみで生み出したアプローチというのは、 どうも今のコンピュータでは、実現が相当に難しいのではないでしょうか?
しかし、逆説的な言い方ではありますが、 所詮まだまだコンピュータは人間の想像力には遠く及ばないとも言えます。
しかし、事実上不可能なことと、最初から絶対に不可能なことでは、意味合いが違う。 あまり長生きはしたくないもんだ、とも思うが、Intelによると2015年あたりには実現できそうだという。 まだ筆者の目が黒い可能性は高いのである。困ったね。現時点で Intel の研究開発力の パワーを前に反論する気はないですが、得てしてこういう難問に対して 「逆転の発想」を生み出すのは、パワーではなかったりしますからね。
おそらく私も 2015 年あたりでは、まだまだ目は黒いと思いますが、 研究者からもプログラマーからも足を洗ったお気軽なんちゃって SE としては、 困ったねと言うより楽しみの方が大きいですね。 人に迷惑をかけない程度には長生きもしたいですから。
がんばってください > 現役の研究者、プログラマーの方々 (^^)/