ネットワークでは、ファイル(ディスクドライバー)またはデータベースを共有します。しかし、どうすればネットワーク上でCPUまたはRAMを共有できますか。
ネットワークでは、ファイル(ディスクドライバー)またはデータベースを共有します。しかし、どうすればネットワーク上でCPUまたはRAMを共有できますか。
回答:
これを行うには、CPU / RAMリソースにアクセスするプログラムを、そのリソースにアクセスするように特別に設計する必要があります。この方法でセットアップされたシステムはクラスターと呼ばれ、リソースを共有する一般的な方法は、MPI(メッセージパッシングインターフェイス)と呼ばれるプロトコルを使用することです。これは無料でダウンロードでき、Linuxで使用すると、最小限のコストで強力なクラスター(場合によってはスーパーコンピューターでも)が得られますが、MPIを活用するように特別に設計されたプログラムがない限り、やはり役に立ちません。優れたクラスターチュートリアルがいくつかありますが、まだ興味がある場合はチェックしてください。
編集:
クラスターをセットアップする場合は、こちらのチュートリアルをお勧めします。約1年前にこのチュートリアルに従ってクラスターを作成しましたが、非常にうまく機能しました。チュートリアルは少し古いので、一部のファイルはチュートリアルのとおりではない場合があります(ファイルは異なる/新しいLinuxディストリビューションで移動される場合があります)が、Linuxに慣れていない場合は問題になりません。チュートリアルでは古いバージョンのMPIを使用していますが、最新バージョンを使用したため、簡単に解決できない問題はありませんでした。あなたがしていることに応じて、実際にMPIを利用できるプログラムがそこにあるかもしれません。普遍的なソースからダウンロードできるMPIを利用するビデオエンコードプログラムと数値演算プログラムがあることは知っています。
RAMディスクを使用してRAMを共有できますが、別のコンピューターのRAMにあることを除き、通常のディスクを共有するように見えます。あるコンピューターが別のコンピューターのRAMを自分のRAMであるかのように直接使用する方法はありませんが、他のコンピューターのRAMを使用する方法はいくつかあります。詳細については、次の段落で説明します。
CPU共有については可能ですが、単一の標準はありません。共有して、必要なリソースを別のコンピューターに割り当てることはできません。代わりに、複数のコンピューターで同時に動作できる特別に設計されたアプリケーションが必要です。これは、しばしば分散コンピューティングと呼ばれ、SETI @ Home、Einstein @ Home、Climateprediction.netなどのいくつかの研究プロジェクトで使用されています。
基本的にプログラムは、実行する必要がある作業を分散する1つの中央サーバーがあるような方法で動作します。ネットワーク上のコンピューターは、中央コンピューターからワークユニットをダウンロードして処理します。その中央コンピューターがクライアントから結果を受け取り、それらを1つのまとまった結果にマージした後。このように、コンピューターはネットワーク上でCPUおよびRAMリソースを「共有」します。この欠点は、ネットワーク上で動作するようにプログラムを作成する必要があり、現在、コンピューターの一般的な使用では分散コンピューティングが十分に普及していないため、少数の専用プログラムのみがそれをサポートしていることです。一方、メインフレームコンピューターへのアクセスを取得するよりも、多数のパーソナルコンピューターまたはプレイステーション3を取得する方が安価であるため、一般的に科学目的で使用されます。
ネットワークでアプリケーションを共有するためのソフトウェアはありますか?外部ネットワークを必要とせずに! MJH 11年3月12日1:19に
XY問題に陥った場合、「CPUとRAMのコンピューターを共有するにはどうすればよいか」と尋ねるのではなく、「複数のコンピューターを使用してZZZZZを使用してレンダリングを高速化するにはどうすればよいですか?」
使用しているソフトウェアとレンダリング対象に大きく依存します(ビデオをトランスコードしていますか、それとも3Dモデル/ビデオをレンダリングしていますか?)。
いくつかの例を挙げると、無料の3DソフトウェアBlenderは分散レンダリングをサポートしており、多くのコンピューターを連携させて1つの出力を生成できます。ビデオレンダリングを行っている場合、いくつかのクイックグーグルで、複数のコンピューターを使用してビデオファイルとオーディオファイルをレンダリングできるオープンソースプロジェクトMediaEncodingClusterが見つかりました。
CPU / RAMを共有できるオペレーティングシステムは、plan9のみです。そこで、ほとんど何でもエクスポート/マウントできます。もちろん、これはパフォーマンスが良いことを意味するものではありません。
ネットワークを介してタスクのCPU / RAMを共有するのは便利な機能です。現在、私たちはまだ何かが起こるボックスにプログラムを保持するという古い概念に少し縛られていますが、同じマシン上の複数のCPUが同じスニペットのコードにアクセスできるようにすることができます。このようなことを行う1つのメソッド(少なくとも)があります。Webページ上のjavaは、サーバーとクライアントの両方を使用して機能しますが、サーバーとクライアントの方法でロックされています(サーバーがほとんどのデータを保持します)。複数のCPUを使用する場合とほぼ同じ方法でタスクをマシンに割り当てることができるようにするために必要なもの(作業を行うマシンはプログラムスニップとデータスニペットを割り当てる必要があります。これにより、ネットワークに重い負荷がかかりますタスク自体が単純な性質のものではなく、新しいボトルネックが形成される可能性がある場合。