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