Les termes liaison statique et liaison dynamique ne sont pas directement liés à l'informatique parallèle, bien qu'il soit connu depuis un certain temps que le chargement dynamique (par opposition au chargement d'un exécutable compilé statiquement) ne s'adapte pas bien sur les systèmes de fichiers réseau en raison de la lourdeur charge de métadonnées provoquée par le chargeur dynamique recherchant les chemins de chargement des bibliothèques cibles.
Il est difficile de dire de manière générale si les bibliothèques statiques ou dynamiques conviennent mieux au calcul haute performance. Certes, pour la plupart des applications de calcul intensif, il est plus simple et préférable de lier statiquement. Pourquoi est-ce? Sur la génération actuelle de superordinateurs, il n'y a généralement qu'un seul travail en cours d'exécution par nœud, ce qui réduit fortement les avantages d'une consommation de mémoire réduite en raison des bibliothèques partagées. De plus, les codes de calcul scientifique ont tendance à ne pas être très sophistiqués en termes de fonctionnalités de langage ou de conception de programme, et ils utilisent rarement des fonctionnalités de langage qui nécessitent un chargement dynamique (tels que des modules d'extension). Les bibliothèques dynamiques ont la difficulté supplémentaire d'être beaucoup moins portables sur les systèmes d'exploitation que les bibliothèques statiques.
En conséquence de tout cela, la plupart des systèmes HPC utilisent la compilation statique lorsqu'elle est disponible. Les bibliothèques statiques sont considérées comme plus rapides, plus faciles à installer et à entretenir, et généralement plus robustes. Les codes HPC basés sur Python sont l'une des exceptions à cela, mais ils sont toujours soumis aux problèmes de performances associés au chargement dynamique (plusieurs utilisateurs sur scicomp travaillent actuellement sur ce problème!).
Lorsque vous choisissez une liaison statique ou dynamique, vous devez considérer comment et où votre code sera déployé, si les bibliothèques sous-jacentes sont susceptibles de changer ou de se déplacer, et les caractéristiques de performances de votre système de fichiers réseau. Vous devez également évaluer si vous avez besoin d' une liaison dynamique, soit via une dépendance de bibliothèque, soit pour interagir avec un langage de script dynamique tel que Python.
La bibliothèque dynamique unique est un terme spécifique à Intel. Il se réfère à l'emballage de leurs bibliothèques dynamiques en une seule méta-bibliothèque pour simplifier le processus de liaison. Si vous allez utiliser la liaison dynamique avec les bibliothèques Intel, ce formulaire est probablement préférable, sauf si vous faites quelque chose de compliqué.
-mkl
indicateur qui devrait supprimer la nécessité d'utiliser le conseiller de ligne de liaison dans la plupart des cas.