답변:
BLAS는 모 놀리식이 아닙니다. BLAS1 및 BLAS2는 메모리 대역폭이 제한되어 있으므로 명백한 수준 (루프 언 롤링, 레벨 2의 캐시 차단)을 넘어서서 속도를 높이기 위해 할 수있는 일은 많지 않습니다. BLAS3이 더 흥미롭고 여기서 프로토 타입 벤치 마크는 행렬-행렬 곱셈입니다. 내 지식 GOTOBlas 항상 여기에 명확한 승자있다, 예를 들어 볼 이 비교 또는 이 일 이 정당성을 .
몇 년이 지난 지금, 우리는 BLIS 프로젝트를 가지고 있습니다. MKL에 대한 최고의 무료 대안입니다.
프로필, 추측하지 마십시오! (또한 “벤치 마크, 추측하지 마십시오!”로 작동 )
말할 수있는 일반적인 것은 없습니다. 예를 들어 수행하려는 작업 (예 : BLAS 1/2/3)과 사용중인 하드웨어에 크게 의존합니다 (분명히 Intel MKL은 ARM 프로세서에서 실행되지 않습니다. 예를 들어 인텔 프로세서에서도 성능 차이가 발생할 수 있습니다).
내가 언급 할 가치가있는 또 다른 것은 AMD가 프로세서에 맞춘 수학적 라이브러리 인 AMD Core Math Library 를 제공한다는 것입니다 . 인텔의 MKL만큼 기능이 풍부하지는 않지만 BLAS를 포함합니다.
이 질문에 대한 이전 답변은 대부분의 주요 요점을 다루었지만 이것과 관련하여 하나의 의견을 추가하고 싶습니다.
MKL은 일부 작업에서 우위를 점하고 있습니까?
MKL 팀은 향후 인텔 명령어 세트와 특정 프로세서에서의 구현에 대해 알 수있는 독보적 인 위치에 있습니다. 또한 인텔 외부에서는 사용할 수없는 독점 프로세서 시뮬레이터 및 사전 프로덕션 하드웨어에 액세스 할 수 있습니다. 따라서, MKL은 미래 제품에 대한 지식의 정도와 그들이이 지식을 얻는 시점에있어 우위를 차지합니다. 따라서 새로운 기능을 갖춘 제품의 수명이 다한 초기에 BLAS를 다른 사람보다 더 나은 방식으로 구현하는 것은 그리 놀라운 일이 아닙니다.
한편, 인텔은 AVX-512 명령 세트에 대해 상당히 개방적이며 개발자가 이러한 기능을 기본적으로 지원하지 않는 프로세서에서 AVX-512 명령을 에뮬레이션 할 수 있는 인텔 ® 소프트웨어 개발 에뮬레이터 (SDE)를 제공했습니다 . 이 때문에 BLX의 고품질 오픈 소스 구현을 이러한 제품의 수명 초기에 AVX-512를 지원하는 인텔 프로세서에 사용할 수 있다면 놀라운 일이 아닙니다.
물론 고밀도 선형 대수 알고리즘의 기본과 특정 프로세서에 대한 자세한 정보를 얻는 데있어 얼마나 큰 차이가 있는지는 완전히 해결되지 않았습니다. 다음 인용문은이 문제를 내가 할 수있는 것보다 더 잘 해결합니다.
이론적으로는 이론과 실제에 차이가 없습니다. 그러나 실제로는 있습니다.
전체 공개 : 저는 인텔에서 일합니다.
I think that the main difference between vendor BLAS libraries and open source BLAS libraries is the time that it takes for open source to support the latest hardware features.
BLAS가 널리 사용되므로 공급 업체는 최신 하드웨어 기능을 지원하는 것이 좋습니다. 예를 들어, 2011 년 1 월 "샌디 브리지 (sandy-bridge)"프로세서와 함께 도입 된 인텔의 AVX 벡터 확장 을 고려 하십시오. MKL은 CPU를 사용할 수있게되기 전에도 AVX를 지원했지만 최근 ATLAS (2011 년 후반)에서 AVX에 대한 지원을 시작했습니다. .
또한 응용 프로그램에 실제로 성능이 필요한 경우 다른 BLAS 라이브러리 벤치마킹을 시작하기 전에 또는 응용 프로그램 프로파일 링을 최적화하기위한 해킹을 시작하기 전에. 인간 직관이 매우 효과적인 프로파일 러 예측자가 아니라는 것이 일반적입니다. 적어도 저는 제 것이 아닙니다! 따라서 무작위로 최적화하는 데 시간을 소비하는 대신 애플리케이션을 프로파일 링하고 각 병목 현상에 체계적으로 접근하십시오.