問題タブ [supercomputers]
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.
cluster-computing - スーパーコンピューティング: ノード数が少なくノードあたりの CPU が多い vs. ノード数が多くノードあたりの CPU が少ない
スーパーコンピューターには一連のノードがあり、各ノードには一定量の CPU があります。それぞれ 10 個の CPU を持つ 2 つのノードではなく、たとえば 1 つのノードに 20 個の CPU を使用する方が一般的に優れていますか? どちらの場合も、合計 20 個の CPU があります。
ノード上の CPU 間の通信時間は、2 つの異なるノード間の CPU よりもはるかに高速ですか?
mpi - MPI_Bsend を使用した複数ランク間のデータ交換
任意の数の「ターゲット」ランクにデータを送信し、すべてのターゲットから (異なる長さの) 他のデータを受信することを目的とする以下のコードについて、いくつかの質問 (主に質問 2.) をしたいと思います。すべてのターゲットを含むデータ。各ランクのデータ送受信の順番がわからない!各メッセージのサイズはかなり小さく (最大で 1MB まで)、ターゲットの数は最大で 10 までです。アプリケーションは、スーパーコンピューターでの高性能コンピューティングです。
何が起こっているのかを完全に理解していることを確認するための私の具体的な質問 (オンラインのどこにも具体的に言及されているものを見つけることができませんでした。明らかなように思えるかもしれませんが、常に機能することを 100% 確認したいと思います):
- Bsend と receive の呼び出し順序によってデッドロックが発生しないことを確認していただけますか: 送信するすべてのメッセージがバッファに格納されると、MPI はターゲットの受信呼び出しを簡単にキャッチし、関連するバッファリングされた送信データの送信を開始できると想定しています。ターゲットの受信呼び出しの順序に関係なく。あれは正しいですか?
2.すべてのランクに 2 つのターゲット ネイバー (「左」および「右」) がある場合、このコードは、「左」ネイバーが互いに「左」ネイバーとデータを交換するのをカスケード待機する可能性があります (これは、または、ランクが受信呼び出しを待機している場合でも、送信するバッファリングされたデータが送信されますか? 言い換えると、Bsend が返されてデータがバッファリングされると、実際のネットワーク データ交換は MPI によって作成された別のプロセス/スレッドによって実行されるのでしょうか? (おそらくばかげた質問です。Bsend が戻った後にそれが起こるのを見ることができる唯一の方法です)
データ交換を行うためのより良い方法はありますか、またはコードは速度の点で優れているように見えますか? 私の場合、データのコピー (つまり、バッファリング) 自体が目に見えるオーバーヘッドにつながることはありません。
同じコードを使用してメッセージのサイズ (1 つの整数) を各ターゲットと共有することをお勧めしますか、それとももっと速い方法がありますか? または、メッセージサイズを送信する必要を回避する方法はありますか (呼び出し時には不明です)。
{
void slmpi::exchange(std::vector targetranks, std::vector sendlens, std::vector<int*> sendbuffers, std::vector receivelens, std::vector<int*> receivebuffers)
}
kubernetes - ローカル VM/ホストで実行されている Kubernetes 環境への HPC クラスター ノードの追加
ローカル VM/ホストで Kubernetes を実行し、リモート スーパーコンピューターで slurm ジョブ割り当てによって割り当てられた計算ノードを追加したいと考えています。リモート スーパーコンピューター上の計算ノードは、最初に ssh を介してスーパーコンピューターにログインすることにより、ローカル ホストでアクセスできます。これは最終的にスーパーコンピューターのログイン ノードになり、次に計算ノードに ssh します。私の目標は、ローカル ノードで実行され、HPC クラスターで実行される Kubernetes によって管理される MPI ジョブを実行することです。
この種の使用法に活用できるツールはすでにありますか、それを達成する方法に関するいくつかの関連する指示はありますか?