静的リンクおよび動的リンクという用語は、並列計算に直接関係していませんが、(静的にコンパイルされた実行可能ファイルをロードするのではなく)動的ロードが重いため、ネットワークファイルシステムで適切にスケーリングされないことがかなり前から知られていますダイナミックローダーがターゲットライブラリのロードパスを検索することにより発生するメタデータロード。
スタティックライブラリとダイナミックライブラリのどちらがハイパフォーマンスコンピューティングで優れているかについて一般的な説明をするのは困難です。確かに、ほとんどのスーパーコンピューティングアプリケーションでは、静的にリンクする方が簡単で好ましいです。どうしてこれなの?現在の世代のスーパーコンピューターでは、通常、ノードごとに実行されるジョブは1つだけです。これにより、共有ライブラリーによるメモリー消費の削減の利点が大幅に減少します。さらに、科学計算コードは、言語機能やプログラム設計の点であまり洗練されていない傾向があり、動的な読み込みを必要とする言語機能(プラグインモジュールなど)を使用することはほとんどありません。動的ライブラリには、静的ライブラリよりもオペレーティングシステム間での移植性がはるかに低いという難点があります。
これらすべての結果として、ほとんどのHPCシステムは、可能な場合は静的コンパイルを使用します。静的ライブラリは、より高速で、インストールと保守が容易で、一般に堅牢であると見なされています。Pythonに基づくHPCコードはこれの例外の1つですが、動的ロードに関連するパフォーマンスの問題の影響を受けます(scicompの数人のユーザーが実際にこの問題に取り組んでいます!)。
静的リンクと動的リンクを選択する場合は、コードをデプロイする方法と場所、基盤となるライブラリが変更または移動される可能性があるかどうか、およびネットワークファイルシステムのパフォーマンス特性を考慮する必要があります。ライブラリの依存関係を介して、またはPythonなどの動的スクリプト言語と相互運用するために、動的リンクが必要かどうかも評価する必要があります。
シングルダイナミックライブラリは、Intel固有の用語です。リンクプロセスを簡略化するために、動的ライブラリを単一のメタライブラリにパッケージ化することを指します。Intelライブラリとの動的リンクを使用する場合は、複雑なことを行わない限り、この形式がおそらく推奨されます。
-mkl
ほとんどの場合にリンクラインアドバイザを使用する必要をなくすフラグを提供します。