Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Beowulfを使用して一般的なPCをクラスタに変換する

Beowulfを使用して一般的なPCをクラスタに変換する

  

Beowulfを使用して一般的なPCをクラスタに変換する

さて、Linuxは、無料、効率、および信頼性という利点を除いて、IT業界で非常に重要な影響を及ぼします。これは、コンピュータ科学者や多くのコンピューティングを行う必要がある科学者にとって非常に強力なツールです。 Donald BeckerがBeowulfクラスタコンピューティングを開始して以来、NASAのGoddard Space Flight Centerで働いているThomas Sterlingは、Linuxによる高性能並列コンピューティングの利用を拡大してきました。

今、LinuxはIT業界に非常に重要な影響を与えていますが、無料、効率的、そして信頼性が高いという利点に加えて、計算機科学者や多くの計算を必要とする科学者にとっても非常に重要です。強力なツールDonald BeckerがBeowulfクラスタコンピューティングを開始して以来、NASAのGoddard Space Flight Centerで働いているThomas Sterlingは、Linuxによる高性能並列コンピューティングの利用を拡大してきました。今日では、実験室、産業技術センター、大学、さらにはあらゆるレベルの小規模な大学でさえ、多数の一般的なPCベースのクラスタが出現しています。科学的コンピューティングについての質問をルーズなコンピューティングリソースで解決できるかどうかを尋ねられたら答えはもちろんです。私たちはBeowulfクラスタを使うことができます。それは私たちがクラスタを作るために多くの普通のPCを使うことによって直面する問題を解決することができます、そしてこのクラスタの価格優位性は伝統的な並列コンピュータによって並ぶものがありません。

Beowulfクラスタを作成する方法

実際、既存のPCまたは未使用のPCを使用している人はだれでも、並列プログラミングまたは並列操作を実行するための並列システムを構築できます。コンピュータラボでは、2つの目的でPCをデュアルブートシステムにすることができます(必要に応じてWindowsまたはLinuxを入力できます)。さらに、使われなくなったマシンのために、Stone SouperComputerのような並列計算システムを作ることができます。

2つのBeowulfクラスターが同一ではありません。実際、そのようなシステムのハードウェアおよびソフトウェア構成は非常に柔軟であるため、さまざまな組み合わせに簡単にカスタマイズできます。 Beowulfの各クラスタシステムは異なり、その構成はアプリケーションのニーズに基づいていますが、基本的な要件は同じです。クラスタを作成する際に考慮すべきいくつかの基本的な問題を見てみましょう。

クラスターの最小要件の作成

クラスターを作成するには、各ノードに少なくとも1つのIntel 486 CPUとマザーボードが含まれている必要があります。 Intel 386は正常に動作しますが、そのパフォーマンスは努力に見合うだけの価値はありません。メモリ要件はターゲットアプリケーションのニーズによって異なりますが、各ノードには少なくとも16MBのメモリが必要です。ほとんどのアプリケーションでは、各ノードに32MB以上のメモリが必要です。集中ディスクスペースを使用することで、ノードはフロッピーディスク、小容量のハードディスク、またはネットワークファイルシステムから起動できます。起動後、ノードはネットワークを介してファイルシステム内の自身のルートパーティションにアクセスすることができ、この種のアクセスは一般にNFS(Network File System)によって実装されています。高帯域幅で高性能のサーバーがある環境では、この構成は非常にうまく機能します。パフォーマンスを向上させるには、オペレーティングシステム、スワップパーティションをローカルディスクにインストールし、各ノードでデータを取得するようにします。各ノードには、オペレーティングシステムコンポーネントとスワップスペース用に少なくとも200MBのディスクスペースを確保し、プログラム実行用に400MB以上のスペースを確保する必要があります。各ノードには、少なくとも1枚のネットワークカード(できれば高速ネットワークカード)を含める必要があります。最後に、各ノードにはグラフィックカード、ハードドライブ、電源が必要です。キーボードとモニタはシステムのインストールと設定にのみ必要です。


Linuxには、使用するすべてのハードウェアにドライバまたは対応するモジュールが必要です。一般的に言って、ハードウェアが非常に古いものでない限り、問題ありません。クラスタ全体を管理する必要があるプライマリノードには、便宜上Xサーバーをインストールするのが最善です。インストールプロセス中に、特定のコンポーネントに問題があるかドライバがない場合は、フォーラムにアクセスして助けを借りることができます。

ネットワーク接続

可能であれば、各ノードは別々のLAN上にあり、独自のハブを持っていることが望ましいので、円滑なネットワーク通信が保証されます。クラスタ内の最初のノードまたはプライマリノードには、2つのネットワークカードがあります。1つは内部ネットワークに接続され、もう1つはパブリックネットワークに接続されています。これは、ユーザーログインとファイル転送に特に役立ちます。内部ネットワークでは、インターネットで使用されていないIPアドレスを使用する必要があります。一般に、最も簡単な方法はClass A 10.0.0.0アドレスです。これらのアドレスはルートを持たないネットワーク用に予約されているからです。この例では、各ノードの/etc /hostsファイルは次のようになります。

10.0.0.1 node110.0.0.2 node210.0.0.3 node310.0.0.4 node4

各ノードの/etc/hosts.equivファイルは次のようになります。

node1node2node3node4。

ノード番号は2、Red Hat Linuxを使用したifcfg-eth0設定ファイルは次のとおりです。 :

DEVICE = eth0IPADDR = 10.0.0.2NETMASK = 255.0.0.0NETWORK = 10.0.0.0BROADCAST = 10.255.255.255ONBOOT = yes

さらに、これらのノードにはDNSが必要な場合があります。これは、名前とアドレスが頻繁に変わる内部ネットワークに特に当てはまります。 DNSは、内部ネットワーク上のノードに名前/アドレス解決を提供するために、最初のノードで実行できます。

ローカルストレージ

オペレーティングシステムをロードする際に、Beowulfクラスタを作成するには、事前にいくつかのストレージ構成を決定する必要があります。インストールが完了したら、すべてのノードを再インストールする必要があるため、慎重に検討することが重要です。ほとんどのLinuxベースのBeowulfクラスタはRed Hat Linuxディストリビューションを実行していますが、実際、基本的にすべてのLinuxディストリビューションは基本的なクラスタリングをサポートしています。 Red Hatのインストールは非常に簡単です。インストールするにはCDを使うかクラスタの最初のノードを通して(ノード上にディストリビューションのコピーが既にある場合)インストールすることができます。実際の使用プロセスでは、NFSを介してルートパーティションをマウントするよりも、FTPを介してマスターノードから各ノードにオペレーティングシステムをロードすることをお勧めします。このアプローチは、不要なネットワーク通信を回避し、アプリケーションの実行中に情報を転送するための帯域幅を予約します。

Red Hat Linuxランタイム環境では、1ノードあたり約100MBのディスク容量しか必要としませんが、実際には各ノードにコンパイルやその他のツールを含める必要があります。したがって、この構成では、各オペレーティングシステムに約175MBのディスク容量が必要です。一部のクラスタでは通常のファイルシステム上にスワップパーティションが構成されていますが、ローカルディスク上で専用のスワップパーティションを使用することをお勧めします。一般に、ノードのスワップスペースはメモリのサイズの2倍でなければなりません。また、メモリが64MBより大きい場合、スワップスペースはメモリのサイズと同じになります。実際には、メモリが64MBから128MBの場合、通常スワップパーティションを128MBに設定するので、ノードに32MBのメモリがあり、ハードディスクが2つある場合は、Linuxシステムをメインドライブにロードする必要があります。別のハードディスクをスワップスペース(64MB)とローカルランスペース(138MB)として使用します。

クラスタ管理

特に大規模なクラスタでは、システム管理とメンテナンスは非常に面倒な作業です。ただし、これらの作業を簡素化するためのツールやスクリプトがオンラインで見つかります。たとえば、ノードは時間とシステムファイル(/etc /passwd、/etc /group、/etc /hosts、/etc/hosts.equivなど)で他のノードと同期している必要があるので、cronでタイミングをとることができます。実行されたスクリプトはこの同期プロセスを完了することができます。

すべてのノードをロードして構成したら、新しいシステムの処理能力を最大限に活用するための並列アプリケーションを開発および設計できます。

クラスタコンピューティングのための並列アプリケーションの開発

Linuxでは、商用のコンパイラや無料のコンパイラを使うことができます。 GCC、g ++、およびFORTRAN(g77)コンパイラは、ほとんどのLinuxディストリビューションに含まれています。 CおよびC ++コンパイラはすでに非常に優れており、FORTRANコンパイラは絶えず進化しています。市販のコンパイラは、Absoft、Portland Group、The Numerical Algorithms Groupなどの会社から入手できます。市販のFORTRAN-90コンパイラの中には、正しく設定すれば並列計算を自動化できるものもあります。一般に、並列コードを開発するには、明確な情報転送のためにプロセッサ間でPVM(Parallel Virtual Machine)、MPI(Information Transfer Interface)、またはその他の通信ライブラリを使用する必要があります。 PVMとMPIはどちらも無料で、ノード間の情報転送は計算プロセス中の単純なライブラリ呼び出しによって実現できます。

もちろん、すべてのコンピューティングタスクが並列コンピューティングに適しているわけではありません。一般に、並列コンピューティングの利点を最大限に活用するためには、通常、タスクに対して何らかの開発作業を行う必要があります。科学的な問題の多くは細分化できます。つまり、比較的独立したモジュールに分割して、別々のノードで処理できるようにすることができます。たとえば、各ノードが画像の特定の部分を処理できるように、通常、画像処理タスクを細分化することができます。画像を独立して処理できる場合(画像のこの部分を処理するのに情報の他の部分を必要としない場合など)は、効果は良くなります。

並列計算で最も危険な欠陥は、計算上の問題を通信上の問題に変えることです(既存の並列コードでも新しい開発コードでも)。この問題は通常、タスクが過度に洗練され、各ノードが同期のためにデータを転送してCPUが計算する時間を超えると発生します。この場合、より少ないノードを使用すると、より多くのアップタイムとリソースのより効率的な使用が可能になります。つまり、異なる並列アプリケーションの場合、ローカルノードで計算された負荷と通信に基づいて調整と最適化が行われます。

最後に言うべきことは、並列アルゴリズムを開発するとき、使用されるクラスター環境のノードが異なる場合、この問題は十分に考慮されるべきであるということです。実際、並列アプリケーションを実行する場合、ノード間のCPU速度は非常に重要であるため、構成が異なるクラスタではタスクが均等に分散されるため、高速のCPUはその速度を待つ必要があります。遅いCPUがそれ自身のタスクを完了するのは明らかに不合理です。したがって、適切なアルゴリズムを設計することでこの状況をうまく処理できます勿論、どんなアルゴリズムを使用しても、通信過負荷の問題は十分に考慮する必要があります。

並列処理はさまざまな方法で編成できますが、master /Slaveはプログラムを理解して書くための最も簡単な方法で編成されています。このモードでは、一方のノードがマスターとして機能し、他方のノードが通常、タスクとコマンド情報の送信を分割する方法を決定します。一方、スレーブノードは割り当てられたタスクの処理とタスクの完了に対してのみ責任を持ちます。マスターに報告しなさい。

まとめ

実際には、並列コードを開発する際に厳密な規制はありませんが、実際の状況に応じて実行する必要があります。ハードウェア構成とアルゴリズムを最適化するための前提条件は、実行するアプリケーションの詳細を知ることです。ノード構成が異なるクラスタでは、各ノードでの負荷分散と各ノードでの通信はハードウェアの仕様によって異なります。通信速度が速い環境では、タスクをより細かく分割することができ、またその逆も可能です。

「Beowulf Movement」は並列計算を普及させると言われるべきです。標準メッセージングライブラリを使用してBeowulfシステムで開発された並列コードは、変更なしに商用グレードのスーパーコンピュータで直接実行できます。したがって、Beowulfクラスタをエントリのエントリポイントとして使用し、必要に応じてメインフレームに移行することができます。さらに、安価で用途の広いクラスタは、並列コンピュータ環境を特定のタスクに使用できることを意味します。一方、大型の市販スーパーコンピュータは、単一のアプリケーションに集中するには高すぎます。明らかに、より多くの並列環境が実世界の作業に適用されるにつれて、それは様々な分野におけるその適用をさらに促進するであろう。
zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved