2015-01-13 2 views
3

BLAS/LAPACK 또는 특정 최적화 라이브러리와 같은 일부 라이브러리는 컴파일 시간에 로컬 시스템 아키텍처에 맞게 최적화됩니다. OpenBlas를 예로 들어 보겠습니다. 아키텍처 최적화가 적용된 고정 이미지?

  1. 가 Dockerfile를 사용하여 필요한 모든 컴파일 플래그와 함께 OpenBlas 라이브러리의 자식 클론을 지정하고 명령을 구축하는 : OpenBlas와 부두 노동자의 컨테이너를 생성하는 방법은 두 가지가 존재한다.

  2. Docker 허브에서 Ubuntu + OpenBlas 이미지를 가져 와서 실행하십시오.

옵션 (1)은 OpenBlas가 사용자 시스템에 맞게 빌드되고 최적화됨을 보증합니다. 옵션 (2)는 어떻습니까? Docker 초보자로서 이미지를 고정적이고 정적 인 것으로 보았 기 때문에이 이미지를 실행하면 내 컴퓨터 (유지 보수 업체의 Intel CPU 대신 AMD 기반 일 수 있음)에 최적화되지 않았습니다. 나 혼란 스러웠던 점은 이미지 ipython/scipyserver이 빌드 중에 Github에서 최신 OpenBlas 마스터를 복제한다는 것입니다.

Docker 이미지 및/또는 자동화 된 빌드의 개념을 오해하는 것 같습니다. 명확한 설명을 매우 기쁘게 생각합니다.

답변

1

아니요, 제 생각 엔 당신이 꽤 옳다고 생각합니다.

링크 된 이미지는 자동 빌드이므로 OpenBlas는 Docker 빌드 서버의 커널과 아키텍처를 사용하여 컴파일됩니다. 아마도이 성능 비용으로 휴대용 설치하게

DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32 

을 : 나는 OpenBlas를 만들 때 build script 세트에게 다음과 같은 플래그를 발견했다. 다른 방법은 다양한 빌드 구성에 대해 별도의 이미지를 만드는 것입니다.

+0

애드리안! DYNAMIC_ARCH = 1을 추가하면 모든 CPU 커널이 ​​컴파일되어 (컴파일 시간이 추가됨) OpenBlas가 호출되는 CPU 아키텍처에 따라 당겨집니다. 산뜻한! – user45893

+0

자, 재미 있습니다! –

+0

업데이트 : Docker는 더 이상 Linux 64 비트가 아니며 Windows 10 PRO 및 Windows 서버 2016 용 Windows 64 비트 컨테이너가 기본입니다. Docker Linux 32 비트 용 노력 https://github.com/docker-32bit – Walid