• ベストアンサー

ネットワーク分散エンコーダを知らないでしょうか?

ネットワーク分散エンコーダを知らないでしょうか? 編集したビデオをネットワーク上の複数のPCに分散してエンコードを行いたいのですが,ご存じの方はいらっしゃらないでしょうか。 コンピュータは複数台あるのですが,そこまで計算能力が高くないためネットワーク上に分散してエンコード処理を行いたいと考えています。編集ノードは出来ればwindowsで,分散相手ノードLinux や BSD,windowsのいずれかで動作するフリーのプログラムを探しています。 検索をしているのですが,なかなか見つからないのでご存じの方がいましたら教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.3

質問者は下記のURLのような事をイメージしているかと思います。 http://www.kameson.com/climateprediction.htm http://www2.117.ne.jp/~mat/dcomp/shoukai.htm いわゆる、分散コンピューティングですがこれでフリーなどで提供しているのは、そこにもありますが大学など研究機関のみです。そのような話をしているのですかね。 これらのソフトは特殊で、それぞれのパートごとに処理を分断する事になり、素材ごとにカスタマイズが必要になるので、ソースごとないと、ほぼ不可能です。オープンソースレベルでシュミレーションソフトを探す事になります。 つまり、あなたが研究者レベルか、プログラムのプロでないと無理ですね。 それ以外でしたら、OSレベルの分散処理があります。クラスタリングですね。ハードレベルでやるか、OSレベルでやるかの選択になります。 http://support.microsoft.com/kb/309395/ja http://www.jp.redhat.com/manual/DocAS21/RH-DOCS/rh-cm-ja-1.0/s1-hardware-connect.html http://www.nec.co.jp/hpc/pccluster/hw.html http://wpedia.goo.ne.jp/wiki/%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0/?from=websearch ハードレベルでやると、かなり高価になり、研究用とかIT企業の基幹システムですね。OSレベルなら、あまりハードを選びません。OSが10万円以上になるので、その分高く付きますが、わりと素人レベルでも可能です。OSを設定するだけですから。 簡単なのがWindows Server系でしょう。もちろん、ソフト側がこのOSのクラスタリングに対応していなと効果がでません。 このやり方は、No2の方の説明にもありますが、プロセスの同時実行ではなく、スレッドレベルでの分散処理になります。現在は1個CPUに6X2=12個でこのスレッドの分散処理ができるようになっています。Xeonがでれば、24個でスレッドの分散ができます。 マルチプロセッサー対応のサーバーを買えば、Intel のMP型や、SunのMP型SPARC64 VI/SPARC64 VIIやCellプロセッサーを使えば1台で、そんなに高額にならずに10個以上のCPUを使用する事が可能です。 つまり、昔1個のCPU=1個のコア(インテル風に言うと)であった時代は、確かにマルチプロセッサーが高額だったが、今現在インテルには1個で6コア12スレッド=12CPUと言うスーパーコンピューター並みの並列が可能になっています。CPUだけで12、3万円ですが、いくつかの安いパソコンで分散するより、実は安上がりになっています。Xeonが出れば1台のPCで24CPUが搭載可能で、2CPU=30万円くらいですか。実売PCサーバーで50万円くらいですか。 この方が、ソフト開発にお金を掛けるよりも、個人レベルではこのサーバーを買ったほうが安上がりになると思いますよ。 分散コンピューティングがもてはやされた時代で、24台のPCが、1台=50万円で手に入るわけですから。その当時なら1台=10万円とするなら240万円ですよね。 これをOSのクラスタリングを使えば、3台で24X3=72CPU(昔なら72台のPCが必要でしたね)でスーパーコンピューターなみの計算が可能ですよ。 上記対応のソフトを探したほうが、コストパフォーマンスがいいと思います。

yusakai0220
質問者

補足

たしかに,OSレベルのクラスタリングを行えば確かに可能ですし,分散化という一点に限れば容易です。 ただ,私の希望が現状のシステムを大きく変更をしたくないと言うことが前提にあるので,OSクラスタの場合カーネル等の変更が必要になる為,1から作る場合は問題ないのですが現状としては困難です。 そのため,回答者さんが理解されて冒頭に述べられているように計算を専門で受け持つプログラムを動作させておき,そのプログラムに対して計算処理を丸投げするようなシステムが理想となります。 MP対応のプログラム等も一応検討したのですが,OSが異なるとバイナリ互換がうまくいかないと動作しない可能性もある為,私の環境での動作というのは非常に困難を極めるのであきらめています。 無いならどうしようもないので現状で頑張るしかないですね^^;

その他の回答 (2)

回答No.2

解りやすくちょっと事実とは異なる説明をします (つまり突っ込み無用) 分散処理とは 本来複数のスレッド(処理)を異なる複数の端末(計算機) に割り振り各スレッドの待機時間の無駄を無くすのとで 処理時間を短縮しようとするものです つまりエンコードと言う一つの処理を 分散して行う事が出来るわけが無く 探しても見つからないってことに成ります。

yusakai0220
質問者

補足

分散処理自体は分るのですが,エンコード自体に詳しくはないのでお聞きしたいのですが, スレッド化を行う場合,分割の仕方に大きく2種類ありますよね。 1.異なる処理を行う場合に,処理毎に依存性が無くデータを並列化できる場合 2.全てのデータに対し同じ処理を行う場合,データを分割して処理を行う場合 1.の場合,1~10の足し算と掛け算を行う場合の並列かとしては, スレッド1では1~10の足し算,スレッド2では1~10の掛け算を行えます。 2.の場合,1~10の足し算を行う場合の並列化としては, スレッド1では1~5までの足し算,スレッド2では6~10の足し算を行い,その結果をどちらかで合計すれば出来ます。 エンコード処理の場合は,2の方法が適用できると考えていたのですが,エンコード自体は全てのデータに対して同じ処理を行っているわけではないのでしょうか?

  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.1

意味無いと思いますが、だって時系列は無視するんですか? 分散後の結合は?

yusakai0220
質問者

補足

確認をさせて頂きたいのですが,時系列は時系列圧縮のことですよね? データを"="で表したとした場合,データ長が"================"とします。 このとき,4つに分散(スレッドとする)をした場合, |====|====|====|====| |Thr1|Thr2|Thr3|Thr4| のように担当することになると思われます。 各スレッドが担当している箇所を終了した後に,結合箇所のフレームの結合を行えば4倍速くならなくても問題はないと思うのですがどうでしょうか?

関連するQ&A