Лінійна алгебра.
Використовується в різних програмах від аналізу методом кінцевих елементів до сучасних анімацій.
BLAS (Basic Linear Algebra Subprograms)
Всі операції матриця-матриця (рівень 3) распараллелены як для щільних, так і для розріджених об'єктів. Багато операції вектор-вектор (рівень 1) і матриця-вектор (рівень 2) распараллелены для щільних матриць при роботі 64-розрядний програмах на архітектурі Intel® 64. У разі розріджених матриць, распараллелены всі операції другого рівня, за винятком розріджених трикутних решателей.
LAPACK (Linear Algebra Package)
Кілька функцій распараллелены для наступних типів завдань: рішення лінійних рівнянь, ортогональная факторизація, сингулярне розкладання, симетричні задачі власних значень. LAPACK також використовує функції BLAS, так що навіть не розпаралелені функції можуть працювати паралельно.
ScaLAPACK (Scalable LAPACK)
Паралельна версія LAPACK з розподіленою пам'яттю, призначена для кластерних систем.
PARDISO
У цьому паралельному прямому розрідженому решателе распараллелены всі три етапи: перерозподіл (опціонально), факторизація і рішення (при вирішенні із множинними правими частинами).
Швидкі перетворення Фур'є.
Використовуються для обробки сигналів і в різноманітних додатках від розвідки нафти до медицини.
Розпаралелені ШПФ.
Распараллелены всі функції, за винятком одновимірних масивів дійсних чисел і спліт-комплексних ШПФ.
Кластерні ШПФ.
Паралельні ШПФ з розподіленою пам'яттю, призначені для кластерних систем.
Векторна математика.
Використовується у фінансових додатках.
Бібліотека векторної математики.
Арифметика, тригонометрія, експоненти, логарифми, округлення і т. д.
Оскільки при створенні та управлінні потоками виникають деякі витрати, не завжди вигідно використовувати багатопоточність. З цієї причини Intel MKL не створює потоки для дрібних завдань. Розмір, який вважається дрібним, оцінюється по відношенню до розділу математики і типом функції. Для BLAS третього рівня потоки підключаються при розмірності 20, в той час як BLAS першого рівня і векторні функції не параллелятся для векторів розмірністю менше 1000.
Intel MKL буде працювати на одному потоці в разі виклику з распараллеленного програми, щоб уникнути такого явища, як oversubscription. Для додатків, розпаралелених з допомогою OpenMP, це відбувається автоматично. Якщо для створення паралельності використовуються інші засоби, то поведінка Intel MKL слід регулювати за допомогою методів, описаних нижче. Для випадку, коли функції бібліотеки викликаються в послідовному режимі з декількох потоків, Intel MKL має кілька корисних функцій. Наприклад, бібліотека Vector Statistical Library (VSL) надає набір векторизованих генераторів випадкових чисел, які не распараллелены, але які мають можливість розділяти послідовність випадкових чисел між потоками програми. Функція SkipAheadStream() поділяє послідовність випадкових чисел на окремі блоки, по одному на потік. Функція LeapFrogStream() поділяє послідовність випадкових чисел таким чином, що кожен потік отримує підпослідовність початкової послідовності. Наприклад, щоб розділити послідовність між двома потоками за методом чехарди (Leapfrog), то всі числа з парними індексами призначаються одному потоку, а з непарними – іншому.
