Los términos enlace estático y enlace dinámico no están directamente relacionados con la computación paralela, aunque se sabe desde hace bastante tiempo que la carga dinámica (a diferencia de la carga de un ejecutable compilado estáticamente) no escala bien en los sistemas de archivos de red debido a la gran carga carga de metadatos causada por el cargador dinámico que busca rutas de carga para bibliotecas de destino.
Es difícil hacer declaraciones generales sobre si las bibliotecas estáticas o dinámicas son mejores en informática de alto rendimiento. Ciertamente, para la mayoría de las aplicaciones de supercomputación, es más simple y se prefiere vincular estáticamente. ¿Por qué es esto? En la generación actual de supercomputadoras, generalmente solo se ejecuta un trabajo por nodo, lo que reduce en gran medida los beneficios del consumo de memoria reducido debido a las bibliotecas compartidas. Además, los códigos informáticos científicos tienden a no ser muy sofisticados en términos de características de lenguaje o diseño de programas, y rara vez hacen uso de características de lenguaje que requieren carga dinámica (como módulos de complementos). Las bibliotecas dinámicas tienen la dificultad adicional de ser mucho menos portátiles en los sistemas operativos que las bibliotecas estáticas.
Como consecuencia de todo esto, la mayoría de los sistemas HPC usan compilación estática cuando están disponibles. Las bibliotecas estáticas se consideran más rápidas, más fáciles de instalar y mantener y, en general, más robustas. Los códigos HPC basados en Python son una de las excepciones a esto, pero aún están sujetos a los problemas de rendimiento asociados con la carga dinámica (¡varios usuarios en scicomp están trabajando en este problema ahora mismo!).
Cuando elija la vinculación estática frente a la dinámica, debe considerar cómo y dónde se implementará su código, si es probable que las bibliotecas subyacentes cambien o se muevan, y las características de rendimiento de su sistema de archivos de red. También debe evaluar si necesita enlaces dinámicos, ya sea a través de una dependencia de la biblioteca o para interoperar con un lenguaje de script dinámico como Python.
Biblioteca dinámica única es un término específico de Intel. Se refiere al empaquetado de sus bibliotecas dinámicas en una única metabiblioteca para simplificar el proceso de vinculación. Si va a utilizar la vinculación dinámica con las bibliotecas de Intel, este formulario probablemente se prefiere a menos que esté haciendo algo complicado.
-mkl
bandera que debería eliminar la necesidad de usar el asesor de línea de enlace en la mayoría de los casos.