Os termos vínculo estático e vínculo dinâmico não estão diretamente relacionados à computação paralela, embora já se saiba há algum tempo que o carregamento dinâmico (em vez de carregar um executável estaticamente compilado) não é escalável nos sistemas de arquivos de rede devido ao alto carga de metadados causada pelo carregador dinâmico que procura caminhos de carregamento para bibliotecas de destino.
É difícil fazer afirmações gerais sobre se as bibliotecas estáticas ou dinâmicas são melhores na computação de alto desempenho. Certamente, para a maioria dos aplicativos de supercomputação, é mais simples e preferível vincular estaticamente. Por que é isso? Na geração atual de supercomputadores, geralmente há apenas uma tarefa em execução por nó, o que reduz fortemente quaisquer benefícios do consumo reduzido de memória devido a bibliotecas compartilhadas. Além disso, os códigos de computação científica tendem a não ser muito sofisticados em termos de recursos de linguagem ou design de programa e raramente usam recursos de linguagem que exigem carregamento dinâmico (como módulos de plug-in). As bibliotecas dinâmicas têm a dificuldade adicional de serem muito menos portáteis nos sistemas operacionais do que as bibliotecas estáticas.
Como conseqüência de tudo isso, a maioria dos sistemas HPC usa compilação estática quando disponível. As bibliotecas estáticas são vistas como mais rápidas, mais fáceis de instalar e manter e geralmente mais robustas. Os códigos HPC baseados em Python são uma das exceções, mas ainda estão sujeitos aos problemas de desempenho associados ao carregamento dinâmico (vários usuários do scicomp estão atualmente trabalhando nesse problema!).
Ao escolher a vinculação estática versus a vinculação dinâmica, é necessário considerar como e onde seu código será implantado, se as bibliotecas subjacentes provavelmente serão alteradas ou movidas e as características de desempenho do seu sistema de arquivos de rede. Você também deve avaliar se precisa de vinculação dinâmica, por meio de uma dependência de biblioteca ou para interoperar com uma linguagem de script dinâmico, como Python.
Biblioteca dinâmica única é um termo específico da Intel. Refere-se ao empacotamento de suas bibliotecas dinâmicas em uma única meta-biblioteca para simplificar o processo de vinculação. Se você usará vínculo dinâmico com as bibliotecas da Intel, esse formulário provavelmente será o preferido, a menos que você esteja fazendo algo complicado.
-mkl
sinalizador que deve remover a necessidade de usar o consultor de linha de link na maioria dos casos.