いくつかの興味深い質問。Raspberry Pisで構築された「スーパーコンピューター」がどのように機能するか、少し誤解されていると思います。自動負荷分散システムとして機能しません。それらは、並列プログラミングと呼ばれるもののために設計されており、そこでは複雑なタスクが同時に実行できる部分に分割されます。クラスター内のメインPi(ヘッドノード)はタスク全体の整理を担当し、クラスター内の各Pi(クライアントノード)は割り当てられた作業を実行し、ヘッドノードに結果を報告します。そのためには、OpenMPIなどのライブラリが重要です。
さらに、構築されたRaspberry Piクラスターは、効率的なコンピューティングデバイスとして構築されていません。それらは開発プラットフォームとして構築されています。32台のデスクトップPCより32台のRaspberry Piを購入する方が大幅に安価です。並列プログラミングソフトウェアは、その方法ではるかに安価に開発およびテストできます。PiまたはPCがない場合の唯一の選択肢は、実際のスーパーコンピューターでCPU時間を要求することです。問題のコンピューターのサイズに応じて、リソースを使用できるようになるまでに費用がかかるか、待機時間が長くなる可能性があります。したがって、なぜ人々は独自の個人クラスターを構築したのでしょう。実際に動作することがわかっている場合にのみ、実際のコンピューターでアプリケーションを実行するのが理にかなっています。
したがって、これを念頭に置いて、特定の質問に進んでください。
適切なクラスターでは、Pisは単一の仮想コンピューターとして機能しません。Sun Grid Engineのようなタスクまたはリソース割り当てシステムの形式で、各Piを緩やかに制御できます。タスクは必要に応じてノードに割り当てられ、タスクが完了すると、そのノードのリソースは新しいタスクのために解放されます。
クラスターでは、各Piは独自のLinuxのコピーを実行しているため、各PiはGPIOポートのローカル制御を保持します。並列コンピューティング環境でソフトウェアがそれを実際にどのように使用するのかわかりませんが、あなたはそこにいます。
クラスタは単一のコンピュータではないため、実際にPiを高速化することはありません。あなたが得るものは、単により多くを一度に行う能力です。2の倍数に制限されません。ただし、実行するタスクに応じて、クラスター化されたコンピューターには実際に実用的な上限があります。200ステップを必要とする多くのPiで並列計算を実行していると想像してください。ただし、次の各ステップでは、すべてのPiが前のステップで計算した情報が必要です。したがって、各Piは、各反復ごとに他のすべてのPiからデータを受信する必要があります。各反復の計算にかかる時間に応じて、計算よりもデータの送信に多くの時間を費やすことになります。これが、ほとんどのスーパーコンピューターがInfiniBandを使用する理由ですネットワーク。非常に高速なので、より多くの計算を行うことができます。これに対する解決策は、使用するPiの数を減らして、各反復でより多くの作業を行わせることですが、アルゴリズムによっては不可能な場合があります。したがって、実用的な上限。(Pisでは、USBイーサネットが非常に遅いため、これは特に悪いでしょう。)
それでは、実用的なアプリケーションである、分散型Webホスティング!ここで複数のPiを利用できます。通常のクラスターではありません。5個の小便器があるとします。それらをGatewayPi、WebPi1、WebPi2、WebPi3、およびDataPiと呼びます。GatewayPiはインターネットに直面し、Nginixを実行してWeb要求を処理しますが、処理は行いません。代わりに、負荷分散が行われます。プロキシを使用し、着信リクエストをWebPi1、WebPi2、またはWebPi3にランダムに転送します。より多くのリクエストを同時に処理できるようになったため、ウェブインフラストラクチャの能力が3倍になりました。DataPiはどうですか?DataPiはすべてのWebデータを保存するハードドライブを接続し、NFSサーバーを実行しています。WebPiXはそのNFS共有をマウントするため、処理のためにデータにアクセスできます。この方法では、1つの場所でバックアップを実行するだけで、ディスクスペースを節約できます。
私が今説明したのは、本質的にGoogleやFacebookのような大企業が使用しているモデルですが、Raspberry Piのサイズに縮小されたモデルです。唯一の問題は、Pisのコストのため、これを行うことは、Pisのクラスターが並列プログラミングを行うのと同じ開発プラットフォーム(ただし、Webサービング用)を本質的に作成することです。複数のPiを使用すると、計算能力が比較的低いため、大量のデータを処理しようとすると、すぐにパフォーマンスが低下し、エネルギー消費が低下します。しかし、ただ学ぶために?彼らは完璧です。