정적 링크 및 동적 링크 라는 용어 는 병렬 컴퓨팅과 직접 관련이 없지만, 정적 컴파일 된 실행 파일을로드하는 것과는 달리 동적로드가 네트워크 파일 시스템에서 크기가 크지 않기 때문에 꽤 오랫동안 알려져 있습니다. 동적 라이브러리가 대상 라이브러리의로드 경로를 검색하여 발생하는 메타 데이터로드
정적 또는 동적 라이브러리가 고성능 컴퓨팅에서 더 나은지에 대한 일반적인 설명을하기는 어렵습니다. 확실히 대부분의 슈퍼 컴퓨팅 애플리케이션에서는 정적으로 링크하는 것이 더 간단하고 선호됩니다. 왜 이런거야? 현재 세대의 슈퍼 컴퓨터에는 일반적으로 노드 당 하나의 작업 만 실행되므로 공유 라이브러리로 인한 메모리 소비 감소의 이점이 크게 줄어 듭니다. 또한 과학적 컴퓨팅 코드는 언어 기능이나 프로그램 설계 측면에서 그리 정교하지 않은 경향이 있으며 동적로드 (예 : 플러그인 모듈)가 필요한 언어 기능을 거의 사용하지 않습니다. 동적 라이브러리는 정적 라이브러리보다 운영 체제 전체에서 이식성이 훨씬 떨어집니다.
이 모든 결과로 인해 대부분의 HPC 시스템은 사용 가능한 경우 정적 컴파일을 사용합니다. 정적 라이브러리는 더 빠르고 설치 및 유지 관리가 쉽고 일반적으로 더 견고합니다. Python 기반 HPC 코드는 이에 대한 예외 중 하나이지만 여전히 동적 로딩과 관련된 성능 문제가 있습니다 (scicomp의 여러 사용자가 실제로이 문제를 해결하고 있습니다).
정적 링크와 동적 링크를 선택할 때는 코드가 배포되는 방법과 위치, 기본 라이브러리의 변경 또는 이동 가능성, 네트워크 파일 시스템의 성능 특성을 고려해야합니다. 또한 라이브러리 종속성을 통해 또는 Python과 같은 동적 스크립팅 언어와 상호 작용하기 위해 동적 연결 이 필요한지 평가해야합니다 .
단일 동적 라이브러리는 인텔 고유의 용어입니다. 연결 프로세스를 단순화하기 위해 동적 라이브러리를 단일 메타 라이브러리로 패키징하는 것을 말합니다. 인텔 라이브러리와의 동적 연결을 사용하는 경우 복잡한 작업을 수행하지 않는 한이 형식이 바람직합니다.
-mkl
대부분의 경우 링크 라인 관리자를 사용할 필요가없는 플래그를 제공합니다 .