問題タブ [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.
caching - The Machine と memristors とのデータ局所性の関連性は?
予備的な意見: これがこの質問に最適なスタック交換 Web サイトであるかどうかはわかりません。そうでない場合は、申し訳ありませんが、正しい Web サイトに移動する必要があります。
HP は最近、メモリスタと光通信に基づくThe Machineと呼ばれる研究プロジェクトについて発表しました。目標は、このプロジェクトが 4 年後、10 年後、または 20 年後に実現するかどうかを議論することではありません。目標は、そのようなコンピューターが計算集約型ソフトウェアの設計に何を意味するかを議論することです。
現在、私たちはエクサスケールのスーパーコンピューターを目指しています。この文脈では、コードの最適化は以下に焦点を当てる必要があると考えられることがよくあります。
ハイブリッド並列化 (MPI + スレッド化)
ベクトル化 (SIMD)
データの局所性 (データ転送のコストに比べてコンピューティングは無料です)
私の質問は、HP が提示したようなアーキテクチャが実現した場合、これらの優先順位、特に 3 番目の優先順位が変更されるでしょうか? (つまり、計算時間に比べてデータ転送が無料になる可能性があります)
performance - Bash で浮動小数点演算を何十万回も効率的に計算する
バックグラウンド
高潮をコンピューターで研究している研究機関で働いており、Bash を使用して HPC コマンドの一部を自動化しようとしています。現在、プロセスは NOAA からデータをダウンロードし、コマンド ファイルを手動で 1 行ずつ作成し、各ファイルの場所、プログラムがそのファイルからデータを読み取る時間、および風倍率を入力します。NOAA が生成する各ダウンロードには、これらのデータ ファイルが何百もあり、嵐が進行している場合、約 6 時間ごとに出力されます。これは、嵐の間の多くの時間は、これらのコマンド ファイルの作成に費やされていることを意味します。
問題
このプロセスを自動化するために使用できるツールが限られているのは、ユーザー アカウントとスーパーコンピューターでの毎月の割り当て時間を持っているだけだからです。それらに新しいソフトウェアをインストールする権限がありません。さらに、それらの一部は Cray、一部は IBM、一部は HP などです。それらの間に一貫したオペレーティング システムはありません。唯一の類似点は、それらがすべて Unix ベースであることです。そのため、Bash、Perl、awk、Python などのツールを自由に使用できますが、csh、ksh、zsh、bc などのツールは必ずしも必要ではありません。
さらに、私のリード サイエンティストは、私が彼のために書くすべてのコードを Bash で書くように要求しました。なぜなら、彼はそれを理解しているからです。たとえば、浮動小数点演算を行うことができないため、浮動小数点数を追加できる必要があります。Bash 内から Perl を呼び出すことはできますが、遅いです。
1/20 秒は長い時間のようには見えませんが、1 つのファイルでこの呼び出しを 100 回行う必要がある場合、1 つのファイルを処理するのに約 5 秒かかります。6 時間ごとに 1 つしか作成していない場合は、それほど悪くはありません。ただし、この作業をより大きな課題に抽象化すると、大西洋海盆に 1,000 の合成嵐を一度に向けて、嵐がより強かったり、別の経路をたどったりした場合に何が起こった可能性があるかを調べると、5 秒は急速にテキスト ファイルを処理するだけで 1 時間以上かかります。時間単位で請求される場合、これは問題を引き起こします。
質問
これをスピードアップする良い方法は何ですか? 現在for、スクリプトに次のループがあります (実行に 5 秒かかるループ):
データ ファイルをループする awk または Perl を 1 回呼び出すと、ディレクトリ内のファイルごとに 1 回呼び出すよりも 100 倍速くなり、これらの言語でファイルを簡単に開いて書き込むことができることはわかっていますが、データをやり取りしています。これら 3 つの言語 (awk、Perl、Python) だけで多くのリソースを見つけましたが、それらを Bash スクリプトに埋め込む方法についてはあまり見つけることができませんでした。私が到達できた最も近いものは、awkコマンドのこのシェルを作成することです:
しかし、これが正しい構文であるかどうか、また正しい場合、これが最善の方法であるかどうか、またはまったく機能するかどうかはわかりません。数日間壁に頭をぶつけていたので、接続する前にインターネットに問い合わせることにしました。
linux - スーパーコンピューターで使用されるコアの周波数の計算または推定は何ですか?
スーパーコンピューターが行うすべてのことのように、天気予報や重要な方程式の計算を含む仕事をするために、その時々の頻度を使用する必要があることを私たちに知らせるこれらの計算は何ですか.
openmpi - Sun Grid Engine で複数の mpirun プログラムを送信する
Sun Grid Engine の 1 つのジョブ スクリプト ファイルで複数の mpirun プログラムを送信する方法を知りたいです。
program1、program2、program3 .. program100 をコンパイルし、100 個のジョブ スクリプトを作成せずに、1 つのジョブ スクリプトでそれぞれが 16 CPU を使用するように、それらを同時に実行したいとします。
Sun Grid エンジンの各プログラムにノードを分散するにはどうすればよいですか? (SGE のホストファイルを 100 に分割して、各 mpirun に供給できますか?)
ありがとうございました。
parallel-processing - 異なるプロセス ローカリティの MPI 送信レイテンシ
現在、スーパーコンピュータやマルチコアプロセッサの効率的なプログラミングのコースに参加しています。私たちの最近の課題は、MPI_Send コマンドのレイテンシーを測定することです (したがって、0 バイトのメッセージの送信に費やされた時間)。これだけではそれほど難しいことではありませんが、次の基準で測定を実行する必要があります。
- 同じプロセッサ内のプロセスの通信、
- 同じノードだが異なるプロセッサ、
- および異なるノード上のプロセス用。
私は疑問に思っています:どうすればこれを判断できますか?さまざまなノード上のプロセスについて、プロセスが現在実行されているノードの識別子を返す MPI_Get_processor_name によって返された名前をハッシュし、それをタグとして送信することを考えました。また、sched_cpu() を使用してコア ID を取得しようとしましたが、コアがハイパースレッド化されている場合でも、増分番号が返されるようです (したがって、プロセスは同じコアで実行されます)。どうすればいいですか?地域を特定するための概念が必要なだけです。記載されている問題の完全なコードではありません。ありがとうございました!
operating-system - SJFがFCFSより悪いのはいつですか?
大量のタスクを同時に処理するスーパーコンピュータのオペレーティング システムで、待機時間メトリックについて言えば、SJF ポリシーが FCFS ポリシーよりも長くかかる状況はありますか?
システムには複数のコアが存在すると想定できます。