問題タブ [hpc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
stream - STREAMおよびGUPS(シングルCPU)ベンチマークはNUMAマシンで非ローカルメモリを使用できますか
HPCC、STREAM、GUPSからいくつかのテストを実行したいと思います。
彼らは、メモリ帯域幅、遅延、およびスループット(ランダムアクセスの観点から)をテストします。
メモリインターリーブが有効になっているNUMAノードでシングルCPUテストSTREAMまたはシングルCPUGUPSを開始できますか?(HPCC-ハイパフォーマンスコンピューティングチャレンジのルールで許可されていますか?)
非ローカルメモリを使用すると、ランダムアクセスに使用できるメモリバンクの数が2倍または4倍になるため、GUPSの結果が増える可能性があります。(GUPSは通常、非理想的なメモリサブシステムと遅いメモリバンクの開閉によって制限されます。バンクが増えると、他のバンクが開閉している間に1つのバンクに更新できます。)
ありがとう。
アップデート:
(プログラムが行うメモリアクセスを並べ替えることはできません)。
しかし、コンパイラーはループのネストを並べ替えることができますか?例:hpcc / RandomAccess.c
ここでのメインループはでfor (i=0; i<NUPDATE/128; i++) {
あり、ネストされたループはfor (j=0; j<128; j++) {
です。「ループ交換」最適化を使用して、コンパイラはこのコードをに変換できます
このループネストは完璧なループネストであるため、これを行うことができます。そのような最適化はHPCCの規則によって禁止されていますか?
c++ - クラスターおよびHPC用のC++プログラミング
多くの計算を行い、多くのメモリを使用する科学的なアプリケーションをC++で作成する必要があります。私には仕事の一部がありますが、リソースの面で高い要件があるため、OpenMPIへの移行を開始しようと考えていました。
その前に、私は単純な好奇心を持っています。OpenMPIの原則を正しく理解していれば、その時点で利用可能なノードに基づいてSENDとRECEIVEを呼び出すさまざまなノードにジョブを分割するタスクを持っているのは開発者です。
ライブラリやOS、またはこの機能を備えたものが存在するかどうかを知っていますか?これにより、コードを現在の状態のままにすることができます。基本的に、すべてのコンピューターを接続し、それらのメモリーとCPUを1つとして共有できるものですか?
このトピックに関する膨大な量の資料があるため、私は少し混乱しています。クラウドコンピューティングを見るべきですか?または分散共有メモリ?
arrays - *膨大な*量のデータを操作する方法
次の問題があります。膨大な量の情報 (最大 32 GB)を保存し、できるだけ速く操作できるようにする必要があります。それを行うための最良の方法は何だろうと思っています(プログラミング言語の組み合わせ+ OS +あなたが重要だと思うものは何でも)。
私が使用している情報の構造は、倍精度浮動小数点数 (8 バイト) の 4D 配列 (NxNxNxN) です。現時点での私の解決策は、4D 配列を 2D 配列にスライスし、それらをコンピューターの HDD の個別のファイルに保存することです。これは非常に遅く、データの操作は耐えられないため、これはまったく解決策ではありません!
自国のスーパーコンピューティング施設に移り、すべての情報を RAM に保存することを考えていますが、それを利用するアプリケーションを実装する方法がわかりません (私はプロのプログラマーではないので、どの本も/参照は私を大いに助けます)。
私が考えている別の解決策は、大量の RAM を備えた専用サーバーを購入することですが、それで問題が解決するかどうかはわかりません。だから今、私の無知のせいで、最善の方法を選択することができません。
あなたがこの状況にいたらどうしますか?私はどんな考えにもオープンです。
前もって感謝します!
編集:十分な情報を提供できなくて申し訳ありません。より具体的にしようと思います。
離散化された 4D 数学関数を格納しています。実行したい操作には、配列の転置 (b[i,j,k,l] = a[j,i,k,l] などの変更)、配列の乗算などが含まれます。
これは提案された実験のシミュレーションであるため、操作は 1 回だけ適用されます。結果が得られたら、データに対してさらに操作を実行する必要はありません。
編集 (2):
また、将来的にはより多くの情報を保存できるようにしたいと考えているため、ソリューションは何らかの形でスケーラブルでなければなりません。現在の 32 GB の目標は、N=256 ポイントの配列が必要なためですが、N=512 (つまり、512 GB を格納することを意味します!!) を使用できればより良いでしょう。
c - 多くのミューテックス ロックの使用
複数のスレッドが同時に動作する大きなツリー構造があります。理想的には、セルごとに個別のミューテックス ロックが必要です。
pthread_mutex_t
inの定義を調べたところ、bits/pthreadtypes.h
かなり短いので、私の場合、メモリ使用量は問題になりません。
pthread_mutex_t
しかし、わずか 8 つのスレッドに対して多数 (数千としましょう) の異なる を使用すると、パフォーマンスが低下することはありますか?
java - HPC(主にJava)
ターゲットマシンが持つ複数のコアを使用することに加えて、GPUの数を処理する機能(おそらくJavaを使用しますか?)を使用する方法を探しています。私は(現在)A *アルゴリズムの実装に取り組んでいますが、将来的にはある種の遺伝的アルゴリズムに置き換えることを望んでいます。Project Fortressを見てきましたが、JavaFXでGUIを構築しているので、JVMから離れすぎないようにしたいと思います。
もちろん、実行可能なソリューションが利用できない場合は、実装するのが最も簡単なソリューションに移行します。
c# - 実行中にBCPタスクがハングする
タスクの一部を実行するHPCノードがあります。.netプロジェクトに、HPCノードでbcpユーティリティを起動するタスクがあり、クエリの出力は9Mbに達します。
HPCノードがこのタスクを実行すると、クエリの出力がファイルにダンプされ、約5 MBのデータがダンプされた後、それ以上のデータのダンプが突然停止します。これは常に発生します。(毎回特定の行でクラッシュしないため、これはデータの問題ではないことに注意してください)。これは重要な場合とそうでない場合がありますが、適切な権限が設定されている別のサーバーにデータをダンプします。
同じクエリを使用して、hpcノードと他のコンプで直接コマンドを実行しましたが、正しい出力が得られます。
私は次のようにbcpコマンドを実行しています:
var processInfo = new ProcessStartInfo( "bcp.exe"、argument){RedirectStandardOutput = true、RedirectStandardError = true、CreateNoWindow = true、UseShellExecute = false};
したがって、私のコードは、実際には各bcpタスクが実行されるのを待ってから、それを複数回呼び出します。
参考までに、私のo / pが特定のバイト数を超えた場合にのみ失敗します。この場合、約5MBです。
どんな助けでも大歓迎です。
PS:bcpユーティリティがすべてのhpcノードにインストールされていることを追加したいと思います
.net - Microsoft HPC タスクのエラー処理戦略
MS HPC クラスターで実行するタスクを生成する .NET アプリがあります。手の込んだ DryadLINQ は使用せず、クラスター上で exe をリモートで実行し、コマンド ライン経由で引数を渡すだけです。タスクは .NET コードで、HPC でエラーが発生したときに、呼び出し元のアプリが実際の Exception オブジェクトを取得するようにしたいと考えています。
これを達成するための最良の一般的な手法は何ですか?
さらに情報が必要な場合はお知らせください。
ありがとう!
c - プログラムがメモリ帯域幅によって制限されるのはいつですか?
私が使用していて大量のメモリを必要とするプログラムが、メモリ帯域幅によって制限されているかどうかを知りたいです。
これはいつ起こると思いますか?現実のシナリオであなたに起こったことはありますか?
この問題について議論しているいくつかの記事を見つけました。
- http://www.cs.virginia.edu/~mccalpin/papers/bandwidth/node12.html
- http://www.cs.virginia.edu/~mccalpin/papers/bandwidth/node13.html
- http://ispass.org/ucas5/session2_3_ibm.pdf
最初のリンクは少し古いですが、この効果を確認するには、浮動小数点変数ごとに約 1 ~ 40 未満の浮動小数点演算を実行する必要があることを示唆しています (間違っている場合は修正してください)。
特定のプログラムが使用しているメモリ帯域幅を測定するにはどうすればよいですか? また、システムが提供できる (ピーク) 帯域幅を測定するにはどうすればよいですか?
ここでは、複雑なキャッシュの問題については説明しません。CPUとメモリの間の通信にのみ興味があります。
.net - .net4.0タスク並列ライブラリとMPI.NET
.net 4.0タスク並列ライブラリは高性能コンピューティング用のMPI.NETに取って代わりますか?
ここにあるMPI.NEThttp ://www.osl.iu.edu/research/mpi.net/svn/は、Microsoftの.NET環境用のMessage Passing Interface(MPI)の高性能で使いやすい実装です。 。MPIは、コンピューティングクラスターなどの分散メモリシステムで実行される並列プログラムを作成するための事実上の標準です。
.NET 4 TPLによると:「タスク並列ライブラリ(TPL)は、.NETFrameworkバージョン4のSystem.ThreadingおよびSystem.Threading.Tasks名前空間のパブリックタイプとAPIのセットです。TPLの目的は開発者は、アプリケーションに並列処理と並行処理を追加するプロセスを簡素化することで生産性を高めます。TPLは、並行性の程度を動的にスケーリングして、使用可能なすべてのプロセッサーを最も効率的に使用します。さらに、TPLは、作業の分割、スレッドのスケジューリングを処理します。 ThreadPool、キャンセルサポート、状態管理、およびその他の低レベルの詳細について。TPLを使用することで、プログラムが実行するように設計された作業に集中しながら、コードのパフォーマンスを最大化できます。」
私の目標は、Windows HPC 2008で実行できるアプリケーションを構築すること です...どちらに進むか?
windows - Microsoft HPC の代替を推奨してください
クラスター上に分散システムを実装することを目指しています。これは、リソースを消費する画像ベースのコンピューティングを大量のストレージ I/O で実行し、次の特性を備えています。
- 専用のマネージャー コンピューター ノードと最大 100 の計算ノードがあります。クラスタは簡単に拡張できる必要があります。
- これは、ジョブ タスクの概念に基づいて構築されています。ジョブには、1 ~ 100,000 のタスクが含まれる場合があります。
- ユーザーがマネージャ ノードでジョブを開始すると、計算ノードでタスクが作成されます。
- タスクは、その場で他のタスクを作成します。
- 実行に数分かかるタスクもあれば、何時間もかかるタスクもあります。
- タスクは依存関係の階層に従って実行され、オンザフライで更新される場合があります。
- ジョブは一時停止され、後で再開される場合があります。
- 各タスクには、CPU (コア)、メモリ、およびローカル ハード ディスク領域に関して特定のリソースが必要です。マネージャーは、タスクをスケジュールするときにこれを認識しておく必要があります。
- タスクは、進行状況と結果をマネージャーに伝えます。
- マネージャは、タスクが有効かハングしているかを認識しています。
Windows HPC Server 2008 (HPCS) R2 は、私たちが必要としている概念に非常に近いものでした。ただし、いくつかの重大な欠点があります。
- タスクの数が増えると、タスクの作成が指数関数的に遅くなります。数千を超えるタスクを提出することは、時間的に耐えられません。
- タスクはその進行状況をマネージャーに報告できません。できるのはジョブだけです。
- 実行時にタスクとの通信がないため、タスクが実行中かどうか、または再起動が必要かどうかを確認できません。
- HPCS はノード、CPU コア、およびメモリのみをリソース単位として認識します。独自のリソース ユニット (空きディスク容量、カスタム ハードウェア デバイスなど) を導入することはできません。
これが私の質問です。私たちを助けることができる分散コンピューティングフレームワークを知っている、または経験したことがある人はいますか? Windowsを使用しています。