私は、分散ゲームツリートラバーサルでthis paperを見ていて、2人の抽象的な戦略ゲームを解決するために、ソフトウェアツリートラバーサのPython/mpi4pyクローンを作成しようとしました。分散型ゲームツリートラバーサルに最適なファイルシステムはありますか?
まず、ゲームを「解決する」方法についてはWikipedia provides a breif descriptionです。
すでに解決されている結果を覚えておいて、ツリートラバーサルが不要になるようにするのが一般的な最適化です。コンピュータのクラスタが互いに結果を分かち合うことができないため、この問題を解決するためにさまざまなアプローチがとられています。次のように紙(移調テーブル駆動型作業スケジュール)で方法は、本質的に働く:
- は、任意の特定の時点で
- (私は標準のMPIランクを使用)nに各コンピュータ1にコンピュータをIDを与え位置を受け取ることができる。ポジションがルックアップテーブルにあるかどうかを確認してください。そうであれば、結果の値を返送し、そうでなければ、子を生成する。
- それぞれの子の位置をハッシュし、1からnまでの関連する値を持つようにします。ハッシュのIDを持つ「正しい」コンピュータに各位置を送信します。
- 初期位置が解決されるまで繰り返す。
この論文でも言及しているように、この方法はやや逆説的に働き、非常に高い通信レートを持っています。
問題は次のとおりです。
1台のコンピューターで正常に動作しているようです。私は学校のクラスターでいくつかのテストを行い、重大な問題に遭遇しました。 TicTacToeのようなゲームを解決することは、しばしば「デバッグモード」(4ノード、20コア、15分の時間制限)でタイムアウトになりました。
私はTicTacToeソリューションデータベースを「ユーザーディレクトリ」(詳細はfound here)に保存しました。これは、通常はデータの格納に使用される「スクラッチ」ディレクトリとは対照的です。私がこれをしたとき、TicTacToeのデータベースは数秒で解決されました。
私はそれを「ピア・ツー・ピア」アプリケーションのためのお粗末な選択のように見える"Lustre FS"を使用した「スクラッチ」のスペースに気づい:光沢のファイルシステムは、多くの作業環境で機能することができますが、それを
を は必ずしもすべてのアプリケーションに最適な選択ではありません。 は、単一のサーバーが提供できる容量を超えて使用するのに最適です Lustreファイルシステムでは、 のロックとデータの一貫性のために、単一のサーバーで他のファイルシステムよりも優れたパフォーマンスを実現できます。
A光沢ファイルシステム現在クライアントとサーバは、それぞれがストレージの少量を共有し、 に欠如による同じノードを実行している 「ピアツーピア」の使用モデルのために特によく適していない Lustreソフトウェアレベルでのデータレプリケーションこのような用途では、クライアント/サーバが1つでも失敗すると、そのノードに格納されているデータは、ノードが再起動されるまで にアクセスできなくなります。
私は、分散コンピューティングの固体十分な把握を持っていないかもしれないが、光沢FSは客観この種の問題のために良いフィットではないかもしれないようです。残念ながら、私が使用していたクラスタはLustre FSを使用するためにロックされています。別のオプションは、タスクを実行するためのGoogle Cloud Engineのか、AWSのようなものである、しかし、私はいくつかの点について混乱しています:
- 抽象化の多くは、私を怖がらせるように見えます。これらのクラウドプラットフォームはすべて、「ロードバランシング」を必要とする「スケーラブルなソリューション」を提供します。これは不要であるだけでなく、アルゴリズムに有害です。 (ポジションが正しいコンピュータに送信され、すばやく検索できるようにする必要があります)。 Google Cloud EngineまたはAWSでは、このアルゴリズムが効果的に機能するには十分な裸の骨を提供していますか?
- どのファイルシステムを使用する必要がありますか? Google Cloud EngineはNFSやGlusterを推奨していますが、わかりません。紙はかなり時代遅れで、特別なものは使用していないようです。 AWSやGoogle Cloud Engineは、この種のタスクに適したファイルシステムを提供していますか?