« 節穴だ | Main | メニーコア »

2006.11.19

フイードバックとクラスタリング

これもmixi日記の転載
mixiは外部のブログにリンクする機能があるんだけど、mixi上からはコメントを直につけられないのよね。。。
日記のエントリとタイトルだけはRSSで読み取ってくれるのだけど、、

フォードバックを有するシステム
というのはつまりあれです。出力が入力に返されるシステムですよ
1つの部屋の中にマイク→アンプ→スピーカーが繋がれていて、アンプの出力を上げるとマイクがスピーカーの出力を拾って、それを増幅してさらにスピーカーから出力してってのを繰り返すことで、キーンとか、ピーとかブーンとかいう音が継続して鳴り響くというハウリング。
あれもフィードバックを有するシステムの例です。

で、クラスタリングってのは何か?
あれですよ。
たくさんのプロセッサやコンピュータを接続して同種(とは限りませんが、この場合は話を簡単にするため同種としませう)の計算を並列処理するというシステム構成法です。

で、この二つを同時に実現するのは、実は意外と難しい。

というか、フォードバックをまじめに、やろうとするとまず無理。

まじめにというのは、要するに非常に短い時間間隔で出力を入力に返すことが無理なのです。(スウガク的な意味での「非常に短い時間」ってことだと1つのプロセッサでも無理ですが、、)

ま、とりあえず対象はオーディオ信号処理として、サンプリング周波数は44.1KHz。で、1サンプル時間。つまり44100分の1秒を「非常に短い時間」と定義しませう。

1サンプル時間はCPUにとっては非常に長い時間で、Pentium4とかだったら、1サンプル時間あたり、44100回くらいの演算はやすやすとこなせてしまうでしょう。

しかし、ネットワークが絡むとそうは行かない。。
まずは下位のプロトコルから見ても、フレーム単位に小分けしたり、たまにフレーム同士が衝突して待ち時間が発生したり、フレームの上に乗っかってる情報にノイズがのったせいで、もう1回送りなおしたり。。
OSはOSで、他のプログラムが動いていて、スケジューリングされて中々プロセスの実行順序が回ってこなかったり、たまにメモリスワップのディスクアクセスが走ったりで(1つのプロセスでは外を見なくて良かったので、問題なかったのですがね)

こうした理由で1サンプル時間あたりに必要な計算をみんなでやった後に、その結果を格納しておいて、次のサンプルを処理するまで、待機しておいて、入力サンプルがやってきたら、計算しておいた出力結果を足し込んで、
さあ!またもう1サンプル計算!

みたいなことは、あまり現実的ではないように思います。

なので、たとえば10ミリ秒単位なら、10ミリ秒単位と、ある程度独立して計算できるタイムスロットを設けてやって、その単位で同期をとって、次のタイムスロット(サンプル群)の入力に、前回のタイムスロット(サンプル群)の出力を足しこむ、という処置が必要と思われます。
つまりは最短のディレイラインとして10ミリ秒は必要だよ、という制約を加えることで、一応はフィードバックを有するシステムのクラスタリングはできるのかな?
と思います。

でも、頭の中で考えているだけなので、矛盾や、問題点の見落とし、逆にもっと賢いやり方があるのかも知れません、、、

なんで、今こんなことを考えているのかといえば、実は超重たい信号処理のアルゴリズムを考えていて、クラスタリングとか真剣に考えたほうがいいかな~~~~と真剣に思うわけです。


それにしても世の中にある物理モデルの計算って、その辺のフィードバックをどうやって処理しているんだろう????

惑星なり、電子なり、、、、相互作用(万有引力)あってナンボだと思うんだけどね?

|

« 節穴だ | Main | メニーコア »

Comments

Post a comment



(Not displayed with comment.)




« 節穴だ | Main | メニーコア »