ATLAS와 MKL의 성능 차이는 무엇입니까?


31

ATLAS는 무료 BLAS / LAPACK 대체품으로, 컴파일시 기계에 맞게 조정됩니다. MKL은 인텔에서 제공하는 상용 라이브러리입니다. 이 두 라이브러리는 성능면에서 비교할 수 있습니까, 아니면 MKL이 일부 작업에 우위를 차지합니까? 그렇다면 어느 것입니까?


4
이제 OpenBLAS있습니다 . Sandybridge벤치 마크 및 MKL을 참조하십시오 .
Mark Mikofski

답변:


18

MKL (Intel의)은 Intel 프로세서에 최적화되어 있으며 많은 경우 "상위"를 가지고있을 것입니다. 그러나 여기에 설명 된 것처럼 AMD 프로세서의 "가장 나쁜"코드 경로를 선택하는 것도 "유명한" 입니다.


12

BLAS는 모 놀리식이 아닙니다. BLAS1 및 BLAS2는 메모리 대역폭이 제한되어 있으므로 명백한 수준 (루프 언 롤링, 레벨 2의 캐시 차단)을 넘어서서 속도를 높이기 위해 할 수있는 일은 많지 않습니다. BLAS3이 더 흥미롭고 여기서 프로토 타입 벤치 마크는 행렬-행렬 곱셈입니다. 내 지식 GOTOBlas 항상 여기에 명확한 승자있다, 예를 들어 볼 이 비교 또는 이 일정당성을 .

몇 년이 지난 지금, 우리는 BLIS 프로젝트를 가지고 있습니다. MKL에 대한 최고의 무료 대안입니다.


4
Matt는 옳지 만 GotoBLAS는 더 이상 개발 중이 아닙니다. 일부 최신 프로세서에서는 여전히 잘 작동하지만 MKL은 향후 프로세서에서 DGEMM보다 확실히 뛰어납니다. 예를 들어 Westmere에서 테스트하지는 않았지만 GotoBLAS가 이미 손실 된 경우 놀라지 않을 것입니다.
Bill Barth

2
Dr. Goto는 M $에 매입되었습니다. 슬픔. . .
meawoppl

2
OpenBLAS는 GotoBLAS에서 분기 된 오픈 소스 프로젝트입니다. github.com/xianyi/OpenBLAS
ShadowWarrior

Goto는 이제 MKL에서 작동합니다. 더 이상 슬픔은 없다 :-)
Jeff

6

프로필, 추측하지 마십시오! (또한 “벤치 마크, 추측하지 마십시오!”로 작동 )

말할 수있는 일반적인 것은 없습니다. 예를 들어 수행하려는 작업 (예 : BLAS 1/2/3)과 사용중인 하드웨어에 크게 의존합니다 (분명히 Intel MKL은 ARM 프로세서에서 실행되지 않습니다. 예를 들어 인텔 프로세서에서도 성능 차이가 발생할 수 있습니다).


내가 언급 할 가치가있는 또 다른 것은 AMD가 프로세서에 맞춘 수학적 라이브러리 인 AMD Core Math Library 를 제공한다는 것입니다 . 인텔의 MKL만큼 기능이 풍부하지는 않지만 BLAS를 포함합니다.


참된. 여기에 다른 답변을 뒷받침 할 많은 일화 적 증거 (및 실제 프로파일 링)가 있습니다 (링크로 표시됨). 그러나 마일리지는 다를 수 있으며 항상 자신이 옳다는 것을 알기 위해 프로파일 링하는 데 도움이됩니다.
Geoff Oxberry

1
MKL이 $ 499이기 때문에 프로파일 링하는 것은 성가시다. 그러나 그들은 1 개월의 시험을 제공합니다
Lyndon White

@LyndonWhite 이것은 여전히 ​​그렇습니까? 다운로드 페이지가 무료 인
Luciano

예, 지금은 무료라고 생각합니다. 많은 사람들이 지금 사용하고 있습니다.
Lyndon White

6

이 질문에 대한 이전 답변은 대부분의 주요 요점을 다루었지만 이것과 관련하여 하나의 의견을 추가하고 싶습니다.

MKL은 일부 작업에서 우위를 점하고 있습니까?

MKL 팀은 향후 인텔 명령어 세트와 특정 프로세서에서의 구현에 대해 알 수있는 독보적 인 위치에 있습니다. 또한 인텔 외부에서는 사용할 수없는 독점 프로세서 시뮬레이터 및 사전 프로덕션 하드웨어에 액세스 할 수 있습니다. 따라서, MKL은 미래 제품에 대한 지식의 정도와 그들이이 지식을 얻는 시점에있어 우위를 차지합니다. 따라서 새로운 기능을 갖춘 제품의 수명이 다한 초기에 BLAS를 다른 사람보다 더 나은 방식으로 구현하는 것은 그리 놀라운 일이 아닙니다.

한편, 인텔은 AVX-512 명령 세트에 대해 상당히 개방적이며 개발자가 이러한 기능을 기본적으로 지원하지 않는 프로세서에서 AVX-512 명령을 에뮬레이션 할 수 있는 인텔 ® 소프트웨어 개발 에뮬레이터 (SDE)를 제공했습니다 . 이 때문에 BLX의 고품질 오픈 소스 구현을 이러한 제품의 수명 초기에 AVX-512를 지원하는 인텔 프로세서에 사용할 수 있다면 놀라운 일이 아닙니다.

물론 고밀도 선형 대수 알고리즘의 기본과 특정 프로세서에 대한 자세한 정보를 얻는 데있어 얼마나 큰 차이가 있는지는 완전히 해결되지 않았습니다. 다음 인용문은이 문제를 내가 할 수있는 것보다 더 잘 해결합니다.

이론적으로는 이론과 실제에 차이가 없습니다. 그러나 실제로는 있습니다.

전체 공개 : 저는 인텔에서 일합니다.


Is there any chance having MKL open sourced?
Royi

For what purpose? MKL is already free as in beer. There is far greater educational value in reading the source code of BLIS. If you want to read assembly, try OpenBLAS.
Jeff

1

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 라이브러리 벤치마킹을 시작하기 전에 또는 응용 프로그램 프로파일 링을 최적화하기위한 해킹을 시작하기 전에. 인간 직관이 매우 효과적인 프로파일 러 예측자가 아니라는 것이 일반적입니다. 적어도 저는 제 것이 아닙니다! 따라서 무작위로 최적화하는 데 시간을 소비하는 대신 애플리케이션을 프로파일 링하고 각 병목 현상에 체계적으로 접근하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.