CPUまたはRAMを共有する方法は?


21

ネットワークでは、ファイル(ディスクドライバー)またはデータベースを共有します。しかし、どうすればネットワーク上でCPUまたはRAMを共有できますか。


3
これを行う際の問題は、CPUとRAM間のナノ秒スケールのレイテンシと比較して、ネットワークが非常に遅いことです!
-Phoshi

@Phoshi:ネットワークによって遅延が追加されたとしても、そのようなセットアップディスクベースのスワップよりも高速です。
Piskvor

@Piskvor:しかし、誰もが言うことができるように、ディスクベースのスワップは非常に大きなパフォーマンスの打撃です!
Phoshi

@Phoshi:同意します-実際にそうであり、最適な解決策は「物理メモリを追加する」ことです。私が言っているのは、高速ネットワークを介した高速デバイス(ramdiskなど)へのページアウトは、物理ディスクへのページアウトよりも高速である可能性があるということだけです。言い換えれば、これは物理RAMよりも桁違いに遅くても、物理メディア上のスワップよりも高速なスワップデバイスになる可能性があります。
Piskvor

1
@Piskvor:完全に妥当であり、たとえあなたが間違っていても、それは確かに同じ桁であるので、最悪の場合にはそれほど悪化しないでしょう。ローカルの物理ストレージを増やすと、おそらくもっと安くなると思います!
Phoshi

回答:


21

これを行うには、CPU / RAMリソースにアクセスするプログラムを、そのリソースにアクセスするように特別に設計する必要があります。この方法でセットアップされたシステムはクラスターと呼ばれ、リソースを共有する一般的な方法は、MPI(メッセージパッシングインターフェイス)と呼ばれるプロトコルを使用することです。これは無料でダウンロードでき、Linuxで使用すると、最小限のコストで強力なクラスター(場合によってはスーパーコンピューターでも)が得られますが、MPIを活用するように特別に設計されたプログラムがない限り、やはり役に立ちません。優れたクラスターチュートリアルがいくつかありますが、まだ興味がある場合はチェックしてください。

編集:

クラスターをセットアップする場合は、こちらのチュートリアルをお勧めします。約1年前にこのチュートリアルに従ってクラスターを作成しましたが、非常にうまく機能しました。チュートリアルは少し古いので、一部のファイルはチュートリアルのとおりではない場合があります(ファイルは異なる/新しいLinuxディストリビューションで移動される場合があります)が、Linuxに慣れていない場合は問題になりません。チュートリアルでは古いバージョンのMPIを使用ていますが、最新バージョンを使用しため簡単に解決できない問題はありませんでした。あなたがしていることに応じて、実際にMPIを利用できるプログラムがそこにあるかもしれません。普遍的なソースからダウンロードできるMPIを利用するビデオエンコードプログラムと数値演算プログラムがあることは知っています。


参考文献をいくつか教えてください。
MJH

1
@MJHは編集した回答を参照してください。
ユビキバコン

thanks。しかし、このチュートリアルはLinux上で動作し、これによりWindows.alsoも使用します。アプリケーションはMPIとその制約の下で記述する必要があります。
MJH

3
@MJH Windowsで作業する場合、Windowsで動作するMPIライブラリが必要なだけですが、概念は同じです。 MPICHはWindowsで動作します。コインを落とす場合は、Windows HPC(MPI伝導率で構築されています)でWindowsクラスターを構築できます。これによりWindowsを使用できますが、MPI用に作成されたプログラムを使用する必要がありますが、現時点ではそれを回避する方法はありません。
ユビキバコン

2
この回答をありがとう-参照されたチュートリアルは、アドレスをuiowa.edu/mihpclab/hpcSystsemTechnicalReport/に変更したようです... ...乾杯!
sdaau

9

RAMディスクを使用してRAMを共有できますが、別のコンピューターのRAMにあることを除き、通常のディスクを共有するように見えます。あるコンピューターが別のコンピューターのRAMを自分のRAMであるかのように直接使用する方法はありませんが、他のコンピューターのRAMを使用する方法はいくつかあります。詳細については、次の段落で説明します。

CPU共有については可能ですが、単一の標準はありません。共有して、必要なリソースを別のコンピューターに割り当てることはできません。代わりに、複数のコンピューターで同時に動作できる特別に設計されたアプリケーションが必要です。これは、しばしば分散コンピューティングと呼ばれ、SETI @ Home、Einstein @ Home、Climateprediction.netなどのいくつかの研究プロジェクトで使用されています。

基本的にプログラムは、実行する必要がある作業を分散する1つの中央サーバーがあるような方法で動作します。ネットワーク上のコンピューターは、中央コンピューターからワークユニットをダウンロードして処理します。その中央コンピューターがクライアントから結果を受け取り、それらを1つのまとまった結果にマージした後。このように、コンピューターはネットワーク上でCPUおよびRAMリソースを「共有」します。この欠点は、ネットワーク上で動作するようにプログラムを作成する必要があり、現在、コンピューターの一般的な使用では分散コンピューティングが十分に普及していないため、少数の専用プログラムのみがそれをサポートしていることです。一方、メインフレームコンピューターへのアクセスを取得するよりも、多数のパーソナルコンピューターまたはプレイステーション3を取得する方が安価であるため、一般的に科学目的で使用されます。


?!。共有のためのソフトウェアは、私のネットワークの私のアプリケーションがある外部ネットワークへの必要性なし(元のために私は私のPCは7日でこれをレンダリングすること、ファイルをレンダリングしたい、しかし、私は自分のネットワークにこれを共有し、1日に削減をレンダリング?
MJH

@MJH残念ながら、レンダリング用のプログラムを聞いたことはありません。
-AndrejaKo

1
ラムディスクを共有するのは無意味ではありませんか?ネットワークに接続されたストレージが遅いため、RAMのボラティリティが得られます
Journeyman Geek

1
@AndrejaKoまっすぐなビデオトランスコーディングについては、私も聞いたことはありません(ただし、グーグルで行っているものの中には、アルファ/ベータで1つまたは2つのプロジェクトが見つかりました)。しかし、3Dレンダリングのために、私がしているではないしない90年代から3D描画プログラムを見てサポートする ネットワーク レンダリングを
スコットチェンバレン

5

ネットワークでアプリケーションを共有するためのソフトウェアはありますか?外部ネットワークを必要とせずに! MJH 11年3月12日1:19に

XY問題に陥った場合、「CPUとRAMのコンピューターを共有するにはどうすればよいか」と尋ねるのではなく、「複数のコンピューターを使用してZZZZZを使用してレンダリングを高速化するにはどうすればよいですか?」

使用しているソフトウェアとレンダリング対象に大きく依存します(ビデオをトランスコードしていますか、それとも3Dモデル/ビデオをレンダリングしていますか?)。

いくつかの例を挙げると、無料の3DソフトウェアBlender分散レンダリングをサポートしており、多くのコンピューターを連携させて1つの出力を生成できます。ビデオレンダリングを行っている場合、いくつかのクイックグーグルで、複数のコンピューターを使用してビデオファイルとオーディオファイルをレンダリングできるオープンソースプロジェクトMediaEncodingClusterが見つかりました。


5

CPU / RAMを共有できるオペレーティングシステムは、plan9のみです。そこで、ほとんど何でもエクスポート/マウントできます。もちろん、これはパフォーマンスが良いことを意味するものではありません。


0

ネットワークを介してタスクのCPU / RAMを共有するのは便利な機能です。現在、私たちはまだ何かが起こるボックスにプログラムを保持するという古い概念に少し縛られていますが、同じマシン上の複数のCPUが同じスニペットのコードにアクセスできるようにすることができます。このようなことを行う1つのメソッド(少なくとも)があります。Webページ上のjavaは、サーバーとクライアントの両方を使用して機能しますが、サーバーとクライアントの方法でロックされています(サーバーがほとんどのデータを保持します)。複数のCPUを使用する場合とほぼ同じ方法でタスクをマシンに割り当てることができるようにするために必要なもの(作業を行うマシンはプログラムスニップとデータスニペットを割り当てる必要があります。これにより、ネットワークに重い負荷がかかりますタスク自体が単純な性質のものではなく、新しいボトルネックが形成される可能性がある場合。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.