最上の日記:計算的な深さと脳
http://homepage3.nifty.com/mogami/articles/depth.html
計算機における深さと脳の深さについての議論が行われている。ここで語られる深さとは、つまりある過程がその前の過程にどの程度の深さで依存しているかをを表している。
筆者は脳というプログラミングはこの深さがかなり浅くできており、この浅さを利用して多大な並列性から一見膨大に見える処理をしているのではないかと考えている。この意見には僕も賛成で、一般にクロックと呼ばれるものは脳はそれほど高くないと考えている。なぜなら、このクロックというものはあげても計算機的効率にはプログラミングを浅くするほど寄与しないことがわかっているからである。
脳に関して言えばこのような浅いアルゴリズムで構成されたプログラムがきわめて並列化され、かなり細かい同期のとれたスレッドによってぶんぶん回されながら、それを確率論的に処理しており、それに逐次的アクセス権限を与えているのが意識というのが俺の認識である。
この構造は、じつは最近のCPUの流れにも一致している。つまり、ある程度クロックをあげてがんばったが、リーク電流や消費電力の関係で、これ以上クロックをあげることができなくなってしまった。なので、これからはコアを増やし、並列性をあげることで対処しようとする。だが、そのためにはアルゴリズムとそれを用いるプログラミングにある程度の浅さを要求している。浅さが確保されていないと、並列化が行えないためである。
さて、昨日の日記に書いた珠玉のプログラミングもその大きな主題として、プログラミングの浅さについての議論が行われている。特に巨大なデータを処理するためには、いかにそれを分割するかが効率を上げる大きなポイントとなる。
このあたりのテクニックについての詳細な見直しが自分には必要な気がする。