hirax.net::Keywords::「並列計算」のブログ



1999-12-30[n年前へ]

6502と並列計算とムーアの法則 

人間のクロック&スケールアップ


 「物理の散歩道」を読み直していると、とある文章に興味を覚えた。

  • 第五物理の散歩道 ロゲルギスト著 岩波新書
の中の「通信を考える」である。この本は、何度読み返しても新鮮である。

 「通信を考える」の中の興味を惹かれた部分は「信号の伝わる速度と距離と処理速度の関係」を論じている部分だ。例えば、計算機は処理速度を高めるためには回路の大きさを小さくしなければならないとか、人間の頭脳の働きの速さから集団生活の広がりの限界について論じているのだ。例えば、

  • 計算機の演算速度の時間スケール -> ナノ秒 = 10^-9s (クロックで考えると、1GHz)
  • 人間の演算速度の時間スケール -> サブ秒 = 10^-1s (クロックで考えると、10Hz)
ということから、計算機の大きさが0.12=1.2x10^-1m角として、地球の直径が12000km=1.2x10^7とすると、その空間スケールが先の時間スケールと同じ比すなわち10^8であると言及しているのだ。

 つまり、通信の速度が光速度であるとして、演算の単位クロックの間に通信が行われなければならないとするならば、計算機の時間・空間スケールと人間の時間・空間スケールは等しいだろう、という推論だ。
 
そして、さらにロゲルギストの想像は広がり、並列計算についても論じている。

 計算機が東京と大阪に離れて置かれていて、通信をしながら作業をするとしたら、人間の場合にはそれと同じ条件というのはどんなものだろうか、と彼らは考える。それは、光の速度で55時間、ちょうど冥王星の軌道直径の5倍程度の空間スケールになる、と論じている。それ以上、離れた場合には演算の過程を共に行うのは無理ではないかというのである。

 こういう文章を読んでいると、この文章が作られたのが30年以上前であることを忘れてしまいそうである。この人達の思索の自由さに憧れを感じてしまう。この人達は、頭の中にタイムマシンにでも持っているのだろうか、と感じてしまうのだ。

 ところで、私がコンピューターをいじるようになった頃は、Apple][の時代だった。といっても、私はお金があふれていたわけではないので、XXX電子でAplle][のコンパチ基盤を買って組み立てて使っていた。その基盤上の6502は1MHzで動いていた筈だ(あぁ、I/Oの6809派vs6502派の論争が懐かしい!)。

 それから20年程たち、CPUのクロックスピードは1GHzを越えようとしている。20年で1000倍である。そして、その集積度は、ムーア(GordonMoore)の法則の「半導体の性能と集積は、18ヶ月ごとに2倍になる」に従っている。

 それでは、人間はどうだろうか?人間の脳味噌のクロックがどの程度であるか測定されているかどうか、素人の私にはよくわからない。しかし、WEB上のデータとしては、例えば

というようなデータがある。ここでは、1演算/秒である。ロゲルギストの用いたものが10演算/秒である。これらは、かなり近い値と言える。もちろん、Mayoさんの演算速度はロゲルギストよりも一桁下であるわけだが、ロゲルギスト達と比べては可哀想というものだ。それに、おそらくMayoさんは謙遜しているのだと思われる。実はもう少し速いのだろう。それに比べて、私などは、二桁の演算(しかも足し算でも)になると1演算/秒もこなせるかどうか判らないくらいである。

 ロゲルギストの時代、すなわち30年以上前、から現在のMayo's Profileの値がほとんど変わっていないように、人間の演算スピードは変わるようなものではない。それは、そうだろう。ヒトのクロックスピードや集積度といったものは、変えるわけにはいかない。当然である。CPUと違ってプロセスルールを変化させるというような訳にはいかないのだ。

 それでは、演算性能を上げようとしたらどうするだろうか?そうなると、並列計算を行うのが自然だろう。単独のCPUの性能を上げるわけに行かなくても、共同作業を行えば、演算性能を上げることができる。

 現代はほとんどの作業が共同作業で行われる。また、その共同作業も大人数が関わるようになってきている。それは、どんな業種でも同じだ。一人では、なかなかできないことが多くなっている。
 それら共同作業、すなわち並列計算、を行う人達(例えれば並列計算機における各ノード)を増やし、それらの間の情報転送をすばやく行うことが多くの作業(計算)を行うための手順だろう。

 そこで、

で用いた
  • 人口増加( http://www.t3.rim.or.jp/~kabutoya/KABHTML/Yoi/2-1.html )
のデータをもう一度眺めてみることにしよう。

最近500年間の人口の変化

 なるほど、人間界の並列計算機におけるノード数は増加している。そして、各ノード間の通信速度を調べるために、まずは、

などの情報から、適当な通信の歴史を調べてみる。
西暦 内容
-4000 のろし
-2400 伝書鳩
-2300 馬による伝令制度
1837 モールス電信機
1876 ベグラハム=ベル電話機
1909 グリエルモ=マルコーン無線電話機
1973 Ethernet XeroxPARCで生まれる。(ちなみにEther=エーテル)
1979 DIX規格=10Mbps
1992 FastEthernet=100Mbps
 これを全部転送速度に直してみる。といっても、よくわからない部分も多いので、私が適当に決めてみる。それでは、その変化を示してみよう。とりあえず、ここ200年位の間のものを考える。
西暦 内容
1837 モールス電信機 = 2bps
1909 グリエルモ=マルコーン無線電話機=10kbps
1979 DIX規格=10Mbps
1992 FastEthernet=100Mbps
 という感じだ。グラフにすると、
最近200年間の情報伝送速度の変化

こんな感じである。対数グラフにおいて直線的に情報伝送速度が速くなっている。この関係は結構きれいである。
 別に意図してこういう数字にした訳ではないのだが、不思議なことである。
 このようにして、人間(ノード)間の転送レートが高くなることにより、先のような人口増加に伴うトラフィック増加をしのぐことができていると考えることもできるかもしれない。そして、人間達の共同作業、すなわち並列計算、を行うだけのバススピードを確保しているのである。

 最近、会社組織などで分社化とか事業分割とかの話題をよく耳にする。こういった時に、分割における時間と空間のスケールはよく考える必要があるだろう。分割が有効なのは、ほとんど独立なものを分割する場合のみである。並列計算における領域分割などと同じだ。

 共同作業がほとんどなく、結果のみをやりとりすれば良いような場合には分割による効果はあるだろう。その一方で、同じ事業・作業を行っているところが、離れていては作業の効率は上がらない。もし、技術系の会社でそのようなことを行うのであれば、事業や部署を並列化した際の真面目なシミュレーション位は行うべきだろう。いや、別に深い意図はないけど。

 こういったことは「新・闘わないプログラマ No.109 時代錯誤」に書かれていることとも少し似ているような気がする。

 さて、1999/12/30-2000/1/1は野沢温泉で温泉&スキーである。2000年問題で会社に泊まり込む人も多いが、私はスキー場で泊まり込みである。同時期に野沢温泉に行く人がいるならば、ぜひ一緒に「スキー場の特殊相対性理論」について討論したいと思う(スキー場で)。

2000-02-02[n年前へ]

日出ずる処のダイナブック 

東芝ノートの発表日の秘密


東芝の作るノートPCはアラン・ケイが考えた"Dynabook"という名前で呼ばれる(日本では)。その名に恥じないように、東芝もノートPCに関しては力を入れまくりのハズである。

私も歴史は浅いが数台にわたって東芝ノートのユーザーである。ポインティングデバイスなどは、東芝のトラックポイントとボタンでないと耐えられない体になってしまった。いや、本当に。
 しかし、使い始めて年月が経つと性能の低下や不具合が出てくる。特に、ケースが割れまくる機種などを使っていると、なおさらである。

そうなると、どうにも新製品が気にかかってくる。「早くいい新製品が出ないかな」と熱望するようになるのである。

そういう気持ちは誰しも抱くと思われ、NiftyのフォーラムやWEB上の掲示板を眺めてみても、新製品の噂情報は数多く溢れている。

中でも、

  • どんな新製品が ( What )
  • いつ出るのか ( When )
というのは非常に重要である。何しろ、自分がPCを買ったとたんに新製品が発表されたりすると、大ショックを受けてしまう。自分の付き合い始めた彼女が、実は友人とずっと付き合っていた、と聞くようなショックである。いや、少し違うな。

だからといって、掲示板で「私はいつPCを買えば良いのでしょう?」などと尋ねたりすると、

「欲しいときに買えェ。」 (By スタパ斎藤)
「そんなことは自分で決めろ。」
などと言われること必至である。

だから、新製品を買うべきか買わざるべきか、というジレンマに私たちは頭を悩まされることになる。まるで、ハムレットである。

そもそも、このジレンマの理由は新製品の発表が前もって知ることができないという点にある。いつ・どんな新製品が出るかどうか判っていれば、あとは自分の判断で決めれば良いのである。
このジレンマは東芝の青梅工場に忍び込んだりすれば即座に解決できる。しかし、その場合、今度は「囚人のジレンマ」を考えなければならなくなってしまう。このような問題点のために、「東芝青梅工場に忍び込む」方法は採用すべきではない。

そこで、よく考えてみる。先の

  • どんな新製品が ( What )
  • いつ出るのか ( When )
というのをもう一度眺め、マクロな視点から考えてみよう。もしかしたら、これらは実は推定できるのではないだろうか?例えば、「どんな新製品が ( What )いつ出るのか ( When )」というのはの時の「ムーアの法則」で判るわけだ(もちろん大雑把に)。そして、「いつ出るのか( When )」というのは統計をとってみれば、予測できるのではないのだろうか?つまり、これまでの製品の発表日を調べてみると、実は統計的規則が隠れているかもしれない。

今回は、東芝のノートPC製品の発売日を統計的に調べ、そこに隠れている規則性を明らかにしてみたい。というわけで、今回は新製品が欲しい人たちに贈る研究報告である。

 まずは、

から最近の東芝ノートPCの発売日をピックアップしてみる。それが以下である。
  • 機種 発売日
  • Libretto50 1997/1/7
  • Satellite220 1997/5/8
  • Libretto60 1997/6/24
  • Libretto70 1997/10/29
  • Satellite 300/305/310 1998/2/2
  • Libretto100 1998/3/5
  • TECRA780 1998/4/2
  • Satellite 1998/5/11
  • Satellite325/320 1998/7/27
  • Satellite4000 1998/8/3
  • Portege3010/3000 1998/8/12
  • TECRA8000_Satelllite4000X/4010X_PORTEGE7000LibrettoSS1010 1998/10/22
  • Satellite2510 1998/11/5
  • PORTEGE3020 1999/1/7
  • Satellite2520 1999/1/13
  • SS3300_Satellite4000 1999/1/26
  • SS7020X 1999/4/13
  • DynaBook4050X/2540S 1999/5/12
  • SS3330 1999/6/3
  • Satellite4100X 1999/6/15
  • Librettoff1100_DynaBookSS3380 1999/6/28
  • DynaBook2060 1999/8/5
  • Satellite2590X/2100 1999/10/14
  • SS3330V 1999/10/26
  • SS3380V 1999/12/7
  • Satellite4320/4260/2140 2000/1/19
  • Dynabook 2000/1/26
 それでは、これをグラフにしてみる。「東芝ノートPCの発売月日と曜日の散布図」である。横軸を東芝ノートPCの発売月日として、縦軸を東芝ノートPCの発売曜日とした散布図である。
東芝ノートPCの発売月日と曜日の散布図

 ここで、このグラフの曜日軸は、

  • 0 日曜日
  • 1 月曜日
  • 2 火曜日
  • 3 水曜日
  • 4 木曜日
  • 5 金曜日
  • 6 土曜日
となっている。このグラフを眺めてみると、東芝製のノートPCは
  • 火曜日〜金曜日
に多く発表されることがわかる。土日はもちろん、月曜日は一回もない。また、金曜日に発表の場合は、月のはじめが多い。
 何故、月曜日に発表しないのか、このナゾをと某メーリングリストで質問した所、幸いにもその答えを教えて頂いた。それは日付変更線と関係していたのである。

もし、日本で月曜日に新製品を発表すると、日付変更線の向こう側のアメリカではまだ日曜日である。すると、全世界で同時発表ということができない。東芝は全世界を視野におくので、全世界同時発表ができる火曜以降が良い、というわけである。その結果として「火曜日〜金曜日」になるというわけである。
 日出ずる処のダイナブックが故なのである。

また、今回の結果では発表月は1,10月が多かった。

そこで、今回の結論は

  • 「東芝ノートPC発表は1,10月の週の中頃に期待しろ」
  • 「東芝ノートPC発表は月の始めの金曜日に期待しろ」
ということになる。この結論が、新製品買いたい病の患者の助けになれば幸いである。

P.S.メモリー容量の上限をもっと多くして下さると幸いです > 東芝さま

2000-08-13[n年前へ]

WEBの時間、サイトの寿命 

ゆっくり長く続けましょうか?

 以前、

でロゲルギストが
  • 第五物理の散歩道 ロゲルギスト著 岩波新書  「通信を考える」
の中で「信号の伝わる速度と距離と処理速度の関係」を論じていることについて触れた。例えば、計算機は処理速度を高めるためには回路の大きさを小さくしなければならないとか、人間の頭脳の働きの速さから集団生活の広がりの限界があるんじゃないか、という話について論じている部分である。短く言ってしまうと、「通信を考える」の中で、ロゲルギスト達は「ある系」について
  • その系の情報処理の単位時間
  • その系の信号の伝わる速度
  • その系の空間スケール
には
  • 空間スケール < 情報処理の単位時間 × 信号の伝わる速度
という関係が成り立つだろう、と論じていたのである。速いコンピュータを作るためには、コンピュータのサイズを小さくしなければならない(信号の伝わる速度= 光速度は一定で情報処理の単位時間を短くすると、空間スケールは小さくならざるをえない)、なんてのはこの一例である。また、このロゲルギストの推論からは、人と人の間の情報伝達の速度が同じなら、
  • 大人数から構成される企業のスピードは、少人数から構成される企業のそれには遙かに及ばない
などのごく当たり前の事実が導かれるわけだ。
 
 

 ところで、ロゲルギスト達はある系の「単位時間・信号伝達速度・大きさ」の間の関係について、

  • 「単位時間・信号伝達速度」を入力値として、「大きさ」を考える
  • 「大きさ・信号伝達速度」を入力値として、「単位時間」を考える
ということをしていた。ところが、この話の30年以上前に実は似たようなことを考え、この話をさらに展開していた人がいる。それはもちろん寺田寅彦である。この手の話題を考えるときには、どうしても夏目漱石-> 寺田寅彦 -> ロゲルギストという流れを意識せざるをえない、と私は思う。

 さて、寺田寅彦が「単位時間・信号伝達速度・大きさ」について、さらにどのようなことを展開していたかというと、それはある系の「大きさ・寿命」についての関係である。寺田寅彦は

  • 空想日録 三 身長と寿命 (寺田寅彦随筆集 第四巻 岩波文庫 小宮豊隆編)
の中で
  • 人体感覚について振動感覚の限界を調べた実験データ、 - 人は自らの体の固有振動周波数の振動に対してもっとも過敏である- 、というものをきっかけとして、
  • 生物の時間の長さの単位は相対的なものである
  • ある系の「時間の長さの感覚 = 相対的な単位」はその系の固有周期と密接な関係がある(振り子時計なんてわかりやすいだろう)
  • ある系の「寿命」を測る単位は、その系の「時間の相対的な単位」、すなわち、その系の固有周期だと想像してみよう。
  • その場合、ある系の固有周期はその系の大きさに比例するから、大きい動物ほどその系の「時間の相対的な単位」は長いものとなり、見かけ上の「寿命」はその動物の「大きさ」に比例するだろう。
という想像を展開している。

 なるほど、サイズが小さい動物(すなわち固有振動の波長の短い動物)にとっては、ほんの小さな変化も大きな変化である。ということは、その動物の感じる「時間単位」は短くなければ、生き残れないだろう。逆に、サイズの大きな動物は俊敏な動きはできないわけで、その動物の「時間単位」は長くならざるをえないだろう。
 ゾウのような大きい動物は「時間単位」が長く、一見「寿命」が長いように見え、ノミのような小さな動物は「時間単位」が短く、一見「寿命」が短く見えるというわけだ。実は、ゾウもノミもその動物自身の「時間単位」を基準にすると、同じ寿命を生き抜いているということになる。

 本川達雄の中公新書「ゾウの時間 ネズミの時間」では- 体重の4分の1乗に比例して「その動物の時間単位=生理的時間」が長くなる-と述べられているが、昭和八年に既に寺田寅彦は体重は身長の3乗に比例する、逆に言えば体重は身長の3分の1乗に比例するから、「体重の3分の1乗に比例して時間が長くなるだろう」と想像を巡らせているのである。素晴らしい、想像力である。
 

 さて、寺田寅彦はロゲルギストと違って、「単位時間・大きさ」については言及しているが「信号伝達速度」については触れていない(その替わり、さらに「寿命」にまで触れているわけであるが)。もっとも、私があえて書き加えてみるならば、ある系の固有振動にはその系の中での弾性が密接に関係するし、弾性はその中での弾性波の速度も密接に関係する。つまり、ある系の固有振動の周期というものには「その系中での波の伝達速度」が暗に隠されていて、寺田寅彦は単にそれを一定とおいていたわけで、寺田寅彦が述べた内容は実はロゲルギスト達の述べた内容を包括している、と私は思うのである。
 

 このような「単位時間・大きさ・信号伝達速度・寿命」に関する話は動物に限るものではない。

  • ロゲルギストが「信号伝達速度=光速度」として、「処理速度を確保する」ための人類の行動範囲について論じたり、
  • 私(いきなり自分を例に出すのも何だが)が「信号伝達速度の変化」と「大きさ(人口)の変化」から人類の処理速度の変化について論じたり
したように、集合体に対してもその適用が可能であると思う。ここらへんは、ロゲルギスト達が寺田寅彦の想像しえた範囲を越えている部分でもあり、時の流れを感じさせる部分でもある。
 

 さて、前振りが長くなった。前回、

では、単に「信号伝達速度の変化」と「大きさ(人口)の変化」を並べて「処理速度」の変化について考えてみただけだった。今回は寺田寅彦が考えたのと同じく、「信号伝達速度」と「大きさ(人口)」から「寿命」が決まると考えることにより、「人類」の「寿命」の変化について考えてみることにしたいと思う

 まずは、前回使った「人類の大きさ=人口」の変化が次のグラフである。ただし、この人口は全然正確ではないし、むしろかなり不正確なものであることは先に断っておく。ここでは、細かな値を使うのが目的ではないので別に構わないだろう。
 

「人類の大きさ=人口」の変化

 そして、「人類」の中での「情報伝達速度」の変化を示したものが次のグラフである。この速度が「人類」という集合体の中での波の進行速度を決めるのである。
 

「情報伝達速度」の変化

 それでは、「人類」という集合体の固有振動はどうやって扱うかというと、この

  • 「人類の大きさ=人口」
  • 「情報伝達速度」
から求めることができる。「人類の大きさ=人口」をその内部での波の速度「情報伝達速度」で割った
  • 人口 / 情報伝達の速度
というものが、「人類の固有時間」の目安となるのである。この「人類の固有時間」が短くなれば、人類の時間の流れは速くなり、それに応じて見かけの「寿命」は短くなる。これが逆に、「人類の固有時間」が長くなれば、人類の時間の流れは遅くなり、それに応じて見かけの「寿命」は長くなるのである。

 その、人口 / 情報伝達の速度 = 「人類の固有時間」を計算してみたものを次に示してみよう。
 

固有「時間単位」の変化

 こうしてみると、人類というヒトの集合体においては、どんどん時間の流れは速くなり、それに応じて見かけの「寿命」は短くなっている、ということがわかる。人類はまさに生き急いでいるのである。もし、この流れを止めようと思ったら、どうしたら良いだろうか?それには、今回の計算から言えば情報転送速度を遅くするか、人類の大きさを大きくするしかない。情報転送速度を遅くするのはなんとも後ろ向き(byわきめも)だし、人口を減らすというのもなんとも後ろ向きだ。だとしたら、宇宙へでも人類が進出して、人類の空間的なスケールを大きくしていくしかないのだろうか?これもまた難しい話である。
 

 さて、最近、大好きなWEBサイトが閉鎖してしまったり、更新速度が遅くなっていたりしていて少しさみしい。だけど、もしかしたら各WEBサイトにも、「更新速度が速いと、WEBサイトの寿命が短い」なんて法則が実はあるのかもしれない。更新速度が速いということは、そのWEBサイトの固有時間が速く流れているということで、限られた寿命をどんどん使い果たしているのかもしれない。

 だとしたら、更新速度が遅いということはそのWEBサイトの寿命が長くなるということだから、それはそれで良いのかなぁ、などと思ってみたりする。「太くて短い寿命」も「細くて長い寿命」も実は本人からすればどちらも同じ長さなのかもしれないけれど、外から見ている私は「細くても良いから長く続いて欲しいなぁ」なんて思ってもみたりするのである。
 

2004-04-15[n年前へ]

「グリッド・コンピューティング」で肌の状態を診断するサービス 

 携帯電話から送られてきた肌画像を高速に解析するために、グリッド・コンピューティングを利用するという記事。グリッドというよりは並列計算か。

2008-01-10[n年前へ]

「ビジュアル言語」 

 グラフィカルな表現でプログラムを表現しようという「ビジュアル言語」の話を読んだ。この記事を読んで、ふと思い出したことがあった。

 計測・制御などをする場合、National InstrumentsのLabVIEWや、CYBERNETのSimulinkといったツールを使うことが多いように思う。いずれも、(基本的には)アイコンをワイヤー(線)で結ぶ「ビジュアル言語」である。少し前の実験系の理系学生であれば、誰でも98BASICでGP-IBを操作するプログラムを書かざるをえなかったように思うけれど、現在では、そういった場合に使われるツール群がLabVIEWやSimulinkといった辺りに移行しているように感じる。LabVIEWやSimulinkをPC BOX上で動かして計測や制御を行った上で、さらにはFPGAやASICにしてしまう、ということもある。

 こういった「ビジュアル言語」を触り始めたとき、苦手だったことの一つが、「どこから実行されるのかわからない」「どこから眺めて行けば・理解すれば良いのかわからない」ということだった。そして、しばらくそういうツールを使ってから、ようやく気づいたのが「どこからも実行されている」ことを理解していないとダメなんだな、ということだった。「あらゆる箇所で並列計算が行われている」と普通に思えばよいのだな、ということだった。

 VHDLなどのハードウェア記述言語では、基本的に、すべての部分が同時に動作する。行番号順に実行されたりするわけではない。そういうことは回路図という「ビジュアル言語」を見たら当然のように理解できるかもしれないが、そういったことはVHDLを見ただけではわかりにくい。どうしても、上から順番に実行されるような感覚で読んでしまう。最初の頃には、そういう感覚でLabVIEWやSimulinkのダイアグラムを眺めていたので、「どこから実行されるのかわからなくてイヤ」と感じいてたように思う。

 もう一つ、画像処理に「ビジュアル言語」が向くだろうか。私が素人だからかもしれないが、そうは思えない気がする。



■Powered by yagm.net