Różnice w wydajności między ATLAS i MKL?

31

ATLAS to darmowy zamiennik BLAS / LAPACK, który po skompilowaniu dostosowuje się do komputera. MKL to biblioteka komercyjna dostarczana przez firmę Intel. Czy te dwie biblioteki są porównywalne pod względem wydajności, czy też MKL ma przewagę w niektórych zadaniach? Jeśli tak, które?

Stefano Borini
źródło
4
Teraz jest też OpenBLAS . Zobacz test porównawczy vs MKL na Sandybridge .
Mark Mikofski

Odpowiedzi:

18

MKL (od Intela) jest zoptymalizowany pod kątem procesorów Intela i prawdopodobnie ma tam „przewagę” w wielu przypadkach. Ale jest również „znany” z wyboru „najgorszych” ścieżek kodu dla procesorów AMD, jak opisano tutaj .

Tommy
źródło
12

BLAS nie jest monolityczny. BLAS1 i BLAS2 mają ograniczoną przepustowość pamięci i niewiele można zrobić, aby przyspieszyć je poza oczywistością (rozwijanie pętli, blokowanie pamięci podręcznej na poziomie 2). BLAS3 jest bardziej interesujący, a prototypowym testem porównawczym jest tutaj mnożenie macierzy. Według mojej wiedzy GOTOBlas zawsze był tutaj wyraźnym zwycięzcą, zobacz na przykład to porównanie lub to i to uzasadnienie .

Minęło wiele lat i mamy projekt BLIS . Jest to najlepsza darmowa alternatywa dla MKL.

Matt Knepley
źródło
4
Matt ma rację, ale GotoBLAS nie jest już rozwijany. Nadal działa całkiem dobrze w przypadku niektórych nowoczesnych procesorów, ale MKL z pewnością przewyższy go w przypadku DGEMM na przyszłych procesorach, jeśli jeszcze tego nie zrobi. Na przykład nie testowaliśmy tego na Westmere, ale nie zdziwiłbym się, gdyby GotoBLAS już przegrał.
Bill Barth
2
Dr Goto został kupiony przez M $. Smutek . .
meawoppl
2
OpenBLAS to projekt typu open source opracowany przez GotoBLAS. github.com/xianyi/OpenBLAS
ShadowWarrior
Goto działa teraz na MKL. Nigdy więcej smutku :-)
Jeff
6

Profil, nie spekuluj! (działa również jako „Benchmark, nie spekuluj!” )

Nie można powiedzieć nic ogólnego, zależy to w dużej mierze od zadań, które chcesz wykonać (na przykład BLAS 1/2/3) i sprzętu, na którym się znajdujesz (oczywiście Intel MKL nie działa na procesorach ARM, ponieważ przykład; ale nawet wśród procesorów Intel można spodziewać się różnic w wydajności).


Inną rzeczą, o której warto wspomnieć, jest to, że AMD oferuje również biblioteki matematyczne dostosowane do ich procesorów, AMD Core Math Library . Nie jest tak bogaty w funkcje jak MKL Intela, ale zawiera BLAS.

F'x
źródło
Prawdziwe. Istnieje wiele niepotwierdzonych dowodów (i faktyczne profilowanie), aby wykonać kopię zapasową innych odpowiedzi tutaj (o czym świadczą linki). Jednak przebieg może się różnić i zawsze pomaga profilować, aby wiedzieć, że masz rację.
Geoff Oxberry
1
Profilowanie jest denerwujące, ponieważ MKL kosztuje 499 USD. Oferują jednak miesięczny okres próbny
Lyndon White,
@LyndonWhite czy nadal tak jest? Strona pobierania wydaje się pokazywać, że jest darmowa
Luciano
Tak, uważam, że jest teraz bezpłatny, widzę, że wiele osób korzysta z niego teraz.
Lyndon White
6

Wcześniejsze odpowiedzi na to pytanie obejmowały większość istotnych punktów, ale chcę dodać jeden komentarz w tym zakresie:

czy MKL ma przewagę w niektórych zadaniach?

Zespół MKL ma wyjątkową pozycję, aby wiedzieć o przyszłych zestawach instrukcji Intel i ich implementacjach w określonych procesorach. Ponadto mają dostęp do zastrzeżonych symulatorów procesorów i sprzętu przedprodukcyjnego, z którego nikt poza firmą Intel nie może korzystać. Tak więc MKL ma przewagę pod względem stopnia wiedzy na temat przyszłych produktów i ich zdobywania. Dlatego nie powinno dziwić, że produkują one lepsze implementacje BLAS niż ktokolwiek inny, przynajmniej na początku okresu istnienia produktu z nowymi funkcjami.

Z drugiej strony Intel był dość otwarty na temat zestawu instrukcji AVX-512 i udostępnił emulator Intel® Software Development Emulator (SDE), który pozwala programistom emulować instrukcje AVX-512 na procesorach, które nie obsługują ich natywnie. Z tego powodu nie będzie zaskakujące, jeśli wysokiej jakości implementacje BLAS typu open source będą dostępne dla procesorów Intel obsługujących AVX-512 na wczesnym etapie życia tych produktów.

Oczywiście, jak duża różnica ma posiadanie szczegółowych informacji o danym procesorze w porównaniu z podstawami algorytmów gęstej algebry liniowej, nie jest w pełni rozwiązana. Poniższy cytat rozwiązuje ten problem lepiej niż potrafię:

Teoretycznie nie ma różnicy między teorią a praktyką. Ale w praktyce jest.

Pełne ujawnienie: Pracuję dla Intela.

Jeff
źródło
Czy jest jakaś szansa, że ​​MKL będzie otwarte?
Royi,
W jakim celu? MKL jest już darmowy jak w piwie. Odczytywanie kodu źródłowego BLIS ma znacznie większą wartość edukacyjną. Jeśli chcesz odczytać zestaw, wypróbuj OpenBLAS.
Jeff
1

Myślę, że główną różnicą między bibliotekami BLAS dostawców a bibliotekami BLAS typu open source jest czas potrzebny do obsługi najnowszych funkcji sprzętowych przez oprogramowanie typu open source.

Ponieważ BLAS jest szeroko stosowany, w interesie dostawcy jest obsługa najnowszych funkcji sprzętowych. Weźmy na przykład rozszerzenia wektorowe AVX Intela, które zostały wprowadzone wraz z procesorem „sand-bridge” w styczniu 2011 r. MKL miał obsługę AVX jeszcze zanim procesor był dostępny, ale dopiero niedawno ATLAS (pod koniec 2011 r.) Zaczął wdrażać obsługę AVX .

Ponadto, jeśli Twoja aplikacja naprawdę potrzebuje wydajności i zanim zaczniesz porównywać różne biblioteki BLAS lub zaczniesz hakować w celu optymalizacji czegokolwiek: profiluj swoją aplikację. Często ludzka intuicja nie jest bardzo skutecznym predyktorem profilującym, przynajmniej wiem, że moja nie! Zamiast więc losowo optymalizować czas, profiluj swoją aplikację i systematycznie podchodź do każdego wąskiego gardła.

fcruz
źródło