Biblioteka jądra matematyki

Biblioteka jądra matematyki
Deweloperzy Intel
Pierwsze wydanie 9 maja 2003 ; 19 lat temu ( 09.05.2003 )
Wersja stabilna
2023.0 / 14 grudnia 2022 ; 2 miesiące temu ( 2022-12-14 )
Napisane w C / C++ , kompilator Intel DPC++ , Fortran
System operacyjny Microsoft Windows , Linux , macOS
Platforma Intel Xeon , Intel Xe , Intel Core , Intel Atom
Typ Biblioteka i ramy
Licencja darmowy pod ISSL
Strona internetowa www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html _ _ _ _ _ _ _ _ _ _ _  Edit this on Wikidata

Intel oneAPI Math Kernel Library (Intel oneMKL; wcześniej Intel Math Kernel Library lub Intel MKL) to biblioteka zoptymalizowanych procedur matematycznych do zastosowań naukowych, inżynieryjnych i finansowych. Podstawowe funkcje matematyczne obejmują BLAS , LAPACK , ScaLAPACK , rzadkie solwery, szybkie transformaty Fouriera i matematykę wektorową.

Biblioteka obsługuje procesory firmy Intel i jest dostępna dla systemów operacyjnych Windows , Linux i macOS .

Biblioteki Intel oneAPI Math Kernel Library nie należy mylić z interfejsami oneAPI Math Kernel Library (oneMKL), fragmentem otwartego kodu kleju , który umożliwia korzystanie z procedur Intel MKL z Data Parallel C++.

Historia i licencjonowanie

Intel uruchomił Math Kernel Library 9 maja 2003 r. i nazwał ją blas.lib. Zespoły deweloperskie projektu znajdują się w Rosji i Stanach Zjednoczonych.

Biblioteka była dostępna w samodzielnej formie, bezpłatnie na warunkach licencji uproszczonego oprogramowania firmy Intel, które umożliwiają redystrybucję.

Od kwietnia 2020 MKL jest częścią oneAPI. Komercyjne wsparcie dla oneMKL jest dostępne po zakupie jako część zestawu oneAPI Base Toolkit.

Blokada wydajności i dostawcy

MKL i inne programy generowane przez Intel C++ Compiler i Intel DPC++ Compiler poprawiają wydajność dzięki technice zwanej wielowersją funkcji: funkcja jest kompilowana lub zapisywana dla wielu rozszerzeń zestawu instrukcji x86 , a w czasie wykonywania „funkcja główna " używa CPUID instrukcji, aby wybrać wersję najbardziej odpowiednią dla bieżącego procesora. Jednak tak długo, jak funkcja główna wykrywa procesor inny niż Intel, prawie zawsze wybiera najbardziej podstawową (i najwolniejszą) funkcję do użycia, niezależnie od tego, jakie instrukcje procesor twierdzi, że obsługuje. Dzięki temu od 2009 roku system zyskał przydomek „kalecznej AMD” . Od 2020 roku MKL firmy Intel pozostaje domyślnie instalowaną biblioteką numeryczną wraz z wieloma wstępnie skompilowanymi aplikacjami matematycznymi w systemie Windows (takimi jak NumPy , SymPy ). Chociaż opierając się na MKL, MATLAB wdrożyła obejście począwszy od wydania 2020a, które zapewnia pełną obsługę AVX2 przez MKL również dla procesorów innych niż Intel (AMD).

W starszych wersjach ustawienie nieudokumentowanej zmiennej środowiskowej MKL_DEBUG_CPU_TYPE=5 może być użyte do zastąpienia wyboru ścieżki kodowej zależnej od ciągu dostawcy i aktywowania obsługiwanych instrukcji do AVX2 w systemach opartych na procesorach AMD, co daje taką samą lub nawet lepszą wydajność w porównaniu z procesorami Intel. Od Update 1 2020 zmienna środowiskowa już nie działa, ale Intel wprowadził niestandardowe jądra dla Zen 2 dla dgemm (ale nie dla sgemm), co i tak jest gorsze niż przy użyciu hacka mkl_serv_intel_cpu_true .

Odkryto co najmniej dwie drogi przechwytywania wewnętrznych procedur MKL w celu usunięcia dyskryminacji. Haczyk można dodać w czasie kompilacji przez łączenie lub w czasie wykonywania przez wstrzyknięcie . Agner Fog odkrył, że pliki binarne MKL i ICC mają również ukryty niedyskryminujący dyspozytor. Funkcja mkl_serv_intel_cpu_true została odkryta w 2019 roku. Intel_dispatch_patch firmy Fog zapewnia kod, który przechwytuje obie trasy. Według Daniëla de Koka samo załatanie tej ostatniej funkcji w MKL 2020 Update 1 poprawia wydajność AMD Zen.

Detale

Kategorie funkcjonalne

Intel MKL ma następujące kategorie funkcjonalne:

  • Algebra liniowa : procedury BLAS to operacje wektor-wektor (poziom 1), macierz-wektor (poziom 2) i macierz-macierz (poziom 3) dla rzeczywistych i złożonych danych pojedynczej i podwójnej precyzji. LAPACK składa się z dostrojonych faktoryzacji LU, Cholesky'ego i QR, solwerów wartości własnych i najmniejszych kwadratów. MKL obejmuje również Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver (FEAST, PARDISO), PBLAS i BLACS. MKL był dobry tylko przy małych wymiarach z powodu libxsmm .
    Ponieważ MKL używa standardowych interfejsów dla BLAS i LAPACK, aplikacja korzystająca z innych implementacji może uzyskać lepszą wydajność na procesorach Intel i kompatybilnych poprzez ponowne połączenie z bibliotekami MKL.
  • MKL obejmuje różnorodne szybkie transformaty Fouriera (FFT) od 1D do wielowymiarowych, od złożonych do złożonych, od rzeczywistych do złożonych i od rzeczywistych do rzeczywistych o dowolnej długości. Aplikacje napisane za pomocą FFTW typu open source można łatwo przenieść do MKL, łącząc się z bibliotekami opakowującymi interfejsy dostarczonymi jako część MKL w celu łatwej migracji.
    Wersje klastrowe LAPACK i FFT są również dostępne jako część MKL, aby skorzystać z równoległości MPI oprócz równoległości pojedynczego węzła z wielowątkowości.
  • Wektorowe funkcje matematyczne obejmują intensywne obliczeniowo podstawowe operacje matematyczne dla rzeczywistych i złożonych typów danych o pojedynczej i podwójnej precyzji. Są one podobne do funkcji libm z bibliotek kompilatora, ale działają na wektorach, a nie na skalarach, aby zapewnić lepszą wydajność. Istnieją różne elementy sterujące do ustawiania dokładności, trybu błędu i obsługi liczb zdenormalizowanych w celu dostosowania zachowania procedur.
  • statystyczne obejmują generatory liczb losowych i rozkłady prawdopodobieństwa. zoptymalizowany pod kątem procesorów wielordzeniowych. Uwzględniono również intensywne obliczeniowo procedury wewnątrz i poza rdzeniem do obliczania podstawowych statystyk, szacowania zależności itp.
  • dopasowywania danych obejmują splajny (liniowe, kwadratowe, sześcienne, przeglądowe, stałe krokowe) do jednowymiarowej interpolacji, które można wykorzystać w analizie danych, modelowaniu geometrycznym i aplikacjach aproksymacji powierzchni.
  • Głęboka sieć neuronowa
  • Równania różniczkowe cząstkowe
  • Rozwiązywanie problemów z optymalizacją nieliniową

Zobacz też

Linki zewnętrzne