バックエンドの数値計算のためのHPCリソースを備えたデスクトップソフトウェア


17

私たちのワークグループは、建物のエネルギー性能をシミュレートするデスクトップアプリケーションを作成します。これは.NETアプリケーションであり、ユーザーが多くのシミュレーションを実行している場合、かなり時間がかかる可能性があります。シミュレーションは完全に並列化可能で、「オフィス」には非常に重要なHPCコンピューティングリソースがあります。

私たちが持っていたアイデアの1つは、ユーザーが非常に長時間実行されることがわかっているシミュレーションをオフロードできるようにすることです(個々のシミュレーションは約30〜120秒実行され、多数のシミュレーションの実行には数日かかることがあります)。誰もこれをやったことがありますか?もしそうなら、仕事を簡単にするためにライブラリを使用しましたか?努力する価値はありましたか?

追加するために編集:

シミュレーションをオフロードするための個々のタスクは次のようになります

  • ファイルのパッケージ化(約5Mb)、
  • サーバーにアップロードし、
  • パッケージを個別のシミュレーションに分解し(それぞれ約30〜120秒かかり、完全に並列化可能)、シミュレーションの数は、ユーザーが選択したオプション(断熱、建物の向きなど)の関数であり、選択の最悪の場合可能なオプションはすべて、約1E50のシミュレーションになります。100〜1E5のシミュレーションを実行することは不明ではありませんが、ユーザーの大半は10未満で実行されます。
  • 完了したシミュレーションを再組み立てし、現在よりはるかに大きなファイルをダウンロードします。

私たちのグループはこれが初めてなので、どのインターフェイスを使用するのかわかりません。予算が削減されると、すぐに完成するかもしれませんが、次の人(もしあれば)が保守しやすい必要があります。

このアプリは既に.NET 4を使用しており、ユーザーが所有するすべてのコアを使用するように拡張できます(開発マシンには8つのコアがあります)。


ここで何をしようとしているのか明確ではありません-HPCエンドは常にあなたのサーバーまたは他の専用サーバーにありますか?(もしそうなら、より多くのサーバー側を行うことができるかもしれないので、それははるかに簡単になるはずです。)
Aesin

@ Aesin、HPCの終わりは私たちのサーバーになります、はい。既存のアプリと新しいバージョンは、ユーザーのデスクトップでシミュレーションを実行します。私は、より多くのユーザーにHPCを使用できるように、次のバージョンに先んじて考える方法についてのアドバイス/推奨事項を探しています。
タングレナ

回答:


10

Condor:http : //research.cs.wisc.edu/condor/の使用を検討してください。話しているHPCリソースの種類と、それらがどの程度変化するかに応じて、やり過ぎになる可能性があります。ただし、開始はかなり簡単で、独立したジョブの起動、フォールトトレランス、負荷分散などを処理します。

個々のタスク(どのくらいの時間、どのくらい非同期か)および対話に使用するインターフェイス(起動プロセス、ライブラリなど)についてより具体的であると、より役立つでしょう。

マット


condorが.net(Windows?)で動作するかどうかはわかりませんが、私たちのワークグループはLinuxでcondorを使用しており、ジョブの送信に推奨できます+1
Sebastian

Condorはファイルシステムを介して通信できるため、.NETに従う必要はありません。Windows上で実行されます。
マットネプリー

5

.NETの世界にいるなら、.NET 4でのマルチスレッドのサポートを見たことがありますか。および.NET 4.5に追加されている非同期機能は?

マルチスレッドは、処理を他のマシンにオフロードするのに役立ちませんが、最近使用しているマルチコアPCをより有効に活用できます。この点で4.0にはいくつかの便利な機能があります。

4.5は現在技術プレビュー中です-それが役立つかどうかを確認する価値があります。MSDNには、先月(10月または11月、そして間違いなく9月より前)に新しい非同期機能を紹介する記事がありました。これらの機能は、従来より並列度の低いコードを並列化する方法としてプッシュされているように見えましたが、IIRCにはいくつかのマルチサーバーサポートも含まれていました。


4

答えは、HPCバックエンドとして持っているものによって異なります。この質問は、NRELユーザーが利用できる既存のリソースに関するものです。Linuxクラスターと、Windows Compute Cluster Serverに基づくWindowsクラスターがあります。

  1. Linuxクラスターを使用するには、作成者はシミュレーションルーチンがMono(Linux用の.NETプラットフォームの実装)で実行され、Monoがノードにインストールされていることを確認する必要があります。

  2. 次の質問は、ユーザーが計算クラスターにアカウントを持ち、ノードにデータを取得できるかどうかです。最も単純なケースは、ローカルPCとノードからアクセス可能な単一のファイルシステムです。

    NRELユーザーがそのようなファイルシステムを利用できるかどうかはわかりません。そのため、コピーが必要になります。これはすでに物事を複雑にします。

  3. 次に、アプリケーションはジョブ記述スクリプトをコンパイルし、それをそれぞれのクラスターに送信し、ジョブがキューから出るまで、シミュレーションの状態をキューイングシステムに照会できる必要があります。

  4. 最後に、アプリケーションは結果を取得できるはずです。

すべてこれは簡単ですが、実行可能です。この特定のラボのセットアップに非常に固有です。

AnsysまたはMSCの商用アプリケーションにより、ユーザーはシミュレーションジョブの説明を保存して、後でリモートクラスタでバッチモードで実行できます。

より一般的なソリューションは、可能であればグリッドインフラストラクチャを使用することです。

次に、Webサービスがシミュレーションリクエストを待機する場所にセットアップされ、それらをクラスターにディスパッチするサービス指向アーキテクチャに移行して、利用可能なリソースの詳細の知識からアプリケーションを切り離します。

これは、たとえば計算生物学で広く使用されており、ツールを使用して、Webサービスの処理要求だけで構成されるシミュレーションワークフローを作成します。

計算をリモートコンピューティングリソースにオフロードすることは、Android向けGoogle音声認識などのアプリケーションで一般的に使用されていることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.