2台のコンピューターの処理能力を組み合わせることは可能ですか?


回答:


11

実行中のプログラムが2番目のマシンを使用してコードを実行できる場所は、CPUが互いに通信したりアクセスしたりすることなく論理的に分離されているため、透過的ではありません。

それは、処理能力を組み合わせることができないという意味ではありません。

  1. 特定のソフトウェアには、タンパク質折り畳み、SETI @ homeなど、他のマシンで実行できるコンポーネントが含まれている場合があります。これらは特殊な傾向があります。つまり、Excelを起動して、計算に別のコンピューターを使用するように指示することはできません。
  2. プロセッサを集中的に使用するタスクを実行している場合は、セカンダリマシンを使用してそれらを実行できます(ビデオストリームのエンコード/再エンコードなど)。

セカンダリコンピューターを何らかの方法で利用したい場合、リモートコンピューターを制御できることが重要です。これを行う2つの方法は、ある種のリモートアクセス(RDP、VNC)を使用する方法、または相乗効果+のような方法を使用する方法です。


1
たとえば、ラップトップに4GBのRAM、PCに4GBのRAMがあるとします。RDPを使用すると、8GBのRAMでプログラムを事実上実行できますか?
-TGamer

5

私の最も使用されている行の1つ-はいといいえ!

はい、可能です-この方法で動作するように設計された特定のアプリケーションの場合。(一般にクラスターとして知られている- 詳細はこちら

いいえ(少なくとも私の知る限り)、市販のコンピューターを2台取り出し、それらを「結び付け」て、結合されたメモリー、処理能力、その他すべてを取得することはできません。


1
@〜クックはい、特定のアプリケーションについてはこう言いました... Windows-7というタグが付けられたので、私は彼が市販のプログラムを備えた毎日のコンピューターを意味していると思いました。...とにかく-Beowulfクラスターは必要ありません特別に記述されたアプリケーション...私は専門家で、決して使用される一つの午前ませんが、私はすぐに読むか?beowulf.org/overview/index.html(特に最後の2つの段落)
ウィリアム・Hilsum

申し訳ありませんが、再読後に以前のコメントを削除し、すでにクラスタリングの概念にリンクしていることに気付きました。beowulfsは既製のコンポーネントを中心に設計されており、複数のシステムを「結び付ける」方法の1つですが、それらのために特別に設計されていないプログラムでは実際には機能しないことは間違いありません。
いんちきのキホーテ

4

とても可能です!しかし、あなたの質問の単純さから判断すると、魔法のようにコンピューターを2倍速くするプログラムを単に実行したいと思いますが、これは不可能です。

プログラムを実行すると、CPUを起動してHDD、RAM、CPUレジスタ間でメモリを移動し、さまざまなコンポーネント(ビデオカードやネットワークカードなど)のアドレスを移動することで状態を維持することを理解する必要があります。他のコンピューターのCPUを使用して問題が発生するのは、同じメモリーにアクセスする必要があるということです。また、コンピューターのメモリのミラーイメージを別のコンピューターに保持すると、オーバーヘッドが非常に大きくなるため、パフォーマンスを上げるために別のコンピューターを追加しようとする目的を簡単に破ってしまいます。

しかし、複数のコンピューター間で分割できるものの種類は、イメージレンダリングまたは独立して動作できるいくつかの数学的な計算です。


3

探しているのが2台のPCの処理能力を1つに結合する方法である場合、「最も簡単な」方法は、VMWare ESXiなどのソフトウェアを使用して、両方を仮想マシンホストとして構成することです(あらかじめご了承くださいデバイスに互換性のあるハードウェアを持たせる)、リソースグループまたはクラスターを作成し、両方のコンピューターのリソースを使用する仮想マシンを作成します。これは完全な2倍の速度を実現するものではなく(仮想化によりリソースが失われます)、互換性要件が考えられるため制限されたソリューションですが、質問に対する最も「正しい」回答です。仮想マシンは、両方のホストの処理能力から仮想化を維持するために必要なオーバーヘッドを差し引いた単一のPCのように動作します。


ホスト間の通信がボトルネックになるのではないかと心配しています。
グロノスタジ

1
はい、ホスト間の通信がボトルネックになる可能性があり、これは関連するオーバーヘッドの一部です。非ギガビットネットワークがこれの主な原因ですが、安価で豊富なギガビットの可用性を考えると、これが特に不利になるとは思わない。ただし、これはすべてのネットワーク分散処理に当てはまり、VMはリモートプロシージャコールや(とにかく)ネットワーク分散コンピューティング専用のカスタム作成アプリケーションよりもはるかに使いやすいシナリオです。
ジョージスパイスランド

2

私は他の答えに同意します:

  • 巨大なマルチシートExcelブックがあり、Excelを2倍の速さで実行できるようにしたい場合(式とシナリオの更新、マクロの実行など)、運が悪いです。
  • 1から1,000,000までのすべての整数の平方根を見つけるなど、簡単にパーティション分割されるカスタムアプリケーションがある場合、問題を細かく分割して配布するのは簡単です。
  • π(pi)の最初の1,000,000桁を計算するようなカスタムアプリケーションがある場合、問題空間を十分に理解していれば、それを実行できる可能性があります。

分散(マルチコンピューター)環境で実行するソフトウェアの開発について話している場合、いくつかの提案があります。

  • リモートプロシージャコール(RPC)を使用します。ホストをファイルサーバーまたはWebサーバーにすることができるように、RPCを使用すると、マシン、基本的にはCPUサーバーを作成できます。概念的には、RPCクライアントとなるマスターマシンが1つあり、サーバー上で透過的に実行されるライブラリ関数を呼び出します。最も単純な形式では、このアーキテクチャではパフォーマンスが向上しません。これは、1つのCPUのみが実行されるためです。ただし、非同期モデルでは、クライアントはサーバー上でリモートプロシージャを開始し、サーバーの実行中に他のことを行うことができます。
  • Unified Parallel C(UPC)などの並列処理用に設計された言語を使用します。これは、分散データと同時実行のための機能を備えたC言語の拡張機能です。参照:
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.