Продуктивність
На рис. 1 показаний приклад продуктивності, яку користувач може очікувати від DGEMM – функції множення двох матриць подвійної точності, яка включена в Intel MKL. Функції BLAS грають важливу роль у роботі багатьох додатків. Графік показує продуктивність в Gflops для різних розмірів матриць. Показано, що продуктивність зростає зі збільшенням кількості процесорів (прискорення до 1,9 х на двох потоках, 3,8 х на чотирьох і 7,9 х на восьми), досягаючи 94,3% пікової продуктивності при 96,5 Gflops.
Рис. 1. Продуктивність і масштабованість функції множення матриць BLAS.
Застосування
Оскільки бібліотека Intel MKL распараллелена з використанням OpenMP, то її поведінку можна контролювати за допомогою того ж OpenMP. Для додаткового контролю за поведінкою потоків в Intel MKL є кілька сервісних функцій, які дублюють контрольні функції OpenMP. Ці функції дозволяють контролювати кількість використовуваних бібліотекою потоків, як в цілому, так і в залежності від розділу (тобто окремо для BLAS, LAPACK тощо). Такі незалежні контрольні функції можна застосовувати, наприклад, для вкладення паралелізму. Поведінку програми, распараллеленного з допомогою OpenMP, можна контролювати за допомогою змінної оточення OMP_NUM_THREADS або функції omp_set_num_threads(), в той час як поведінка потоків Intel MKL незалежно встановлюється через власні змінну і функцію MKL_NUM_THREADS і mkl_set_num_threads(). Нарешті, для тих, кому завжди треба запускати функції Intel MKL тільки на одному потоці, існує послідовна версія бібліотеки, абсолютно незалежна від распараллеливающей бібліотеки.
Бібліотека Intel MKL добре оптимізована для паралельної роботи на кластерних установках, мають на вузлах багатоядерні процесори з прискорювачами Intel Xeon Phi, і на SMP-системах (системах зі спільною пам'яттю). Бібліотека підтримує як гетерогенний режим обчислень, коли код бібліотеки виконується одночасно на хост-процесорі вузла і на прискорювачі (сопроцессоре), так і однорідний режим обчислень, коли код бібліотеки виконується одночасно тільки на сопроцессорах або тільки на хост-процесорах. Для використання бібліотеки Intel MKL додаток може бути зібрано компілятором
Intel з зазначенням опції «mkl».
Доступні три способи (режими) використання математичної бібліотеки Intel MKL:
Automatic Offload mode – буквально «автоматичне вивантаження», використовується при гетерогенном режимі обчислень;
Offload mode supported by Compiler – вивантаження з підтримкою від компілятора; у цьому режимі процес вивантаження (перенесення частини обчислень) обчислювального коду на прискорювач задається в програмі за допомогою директив компілятора;
Native mode – код бібліотеки виконується одночасно тільки на прискорювачах (сопроцессорах).
Технологія Intel® Hyper-Threading найбільше ефективна тоді, коли всі потоки виконують різні типи операцій і в процесорі присутні неповних ресурси. Однак Intel MKL не відповідає цим умовам, оскільки паралельна частина бібліотеки використовує більшу частину ресурсів і в кожному потоці виконуються ідентичні операції. З цієї причини Intel MKL за замовчуванням використовує кількість потоків дорівнює кількості фізичних ядер.
BLAS
Основні операції з векторами і матрицями:
- BLAS (базові підпрограми лінійної алгебри);
- SparseBLAS (Базові Підпрограми Лінійної Алгебри);
- PBLAS (паралельні BLAS).
Basic Linear Algebra Subprograms (BLAS) - встановлений де-факто стандарт інтерфейсу бібліотек підпрограм, призначених для виконання основних операцій лінійної алгебри, таких як, наприклад, множення матриць та векторів. Уперше такі підпрограми було опубліковано 1979 року. На їх основі будуються більші пакети, такі як LAPACK. Конкретні втілення протоколу у вигляді бібліотек розробляються як провідними лідерами комп'ютерної технології, наприклад, Intelом, так і іншими авторами. Підпрограми лінійної алгебри широко використовуються в застосуваннях, які вимагають інтенсивних обчислень, а тому вимагають особливо уважної розробки й оптимізації. Наприклад, ATLAS - варіант BLAS, який може легко переноситися з однієї платформи на іншу й оптимізуватися для використання на машинах конкретної архітектури.
Бенчмарк LINPACK сильно залежить від швидкості виконання підпрограми DGEMM, яка входить до BLAS.
Функціональність BLAS розбивається на три рівні
Рівень 1
Цей рівень містить операції загального вигляду
y ← αx+y
а також скалярного добутку, норми вектора та деякі інші.
Рівень 2
Цей рівень містить операції дій між векторами й матрицями загального вигляду
y ← αAx+βy
а також підпрограми знаходження розв'язку рівняння Tx = y для трикутної матриці T.
Рівень 3
Цей рівень містить операції з матрицями вигляду
C←αAB + βC
а також розв'язок рівняння B←αT-1B для трикутної матриці T та інші підпрограми. Зокрема сюди входить популярна у використаннях операція перемноження матриць.
SparseBLAS – розширення BLAS для роботи з розрідженими векторами і матрицями.
Рис.2. Продуктивність SparseBLAS.
PBLAS – паралельна реалізація BLAS для обчислювальних пам'яттю. Побудована на основі MPI.
Формати зберігання матриць:
щільний – матриця зберігається в двовимірному масиві;
упакований – використовується для симетричних або трикутних матриць. Елементи матриці зберігаються послідовно, по стовпцях;
стрічковий - використовується для стрічкових матриць. Двовимірний масив зберігає діагоналі матриці.
Рис. 3. BLAS.
ESSL
ESSL і Parallel ESSL збірники впроваджений математичних підпрограм, спеціально розроблених для підвищення ефективності інженерних і наукових додатків на базі процесорів POWER™ серверів і блейд-IBM. ESSL і паралельний ESSL зазвичай використовуються в аерокосмічній, автомобільній, електронній, нафтової, комунальних послуг і науково-дослідних галузей для таких додатків, як:
Структурний аналіз
Аналіз часових рядів
Обчислювальна хімія
Обчислювальні методи
Гідродинаміка аналіз
Математичний аналіз
сейсмічний аналіз
Динамічні системи моделювання
Водосховище Моделювання
ядерна техніка
Кількісний аналіз
Електронна Circuit Design
ESSL і паралельна підтримка ESSL 32-розрядні і 64-розрядні Fortran, C та C ++ серійний, SMP і SPMD додатків, що працюють під AIX® Linux®.
ESSL
ESSL являє собою набір високопродуктивних математичних підпрограм, які забезпечують широкий спектр функцій для багатьох спільних наукових та інженерних додатків. Математичні підпрограми розділені на дев'ять обчислювальних областях:
Лінійна алгебра Підпрограми
Матричні операції
Лінійних алгебраїчних рівнянь
Аналіз Eigensystem
Перетворення Фур'є, згорток, Кореляції та обчислення, пов'язані з
Сортування і пошук
інтерполювання
чисельна квадратура
Генератор випадкових чисел
ESSL надає наступні бібліотеки часу виконання:
Serial Library ESSL надає поточно-версії ESSL підпрограм для використання на всіх процесорах. Ви можете використовувати цю бібліотеку для розробки власних багатопоточних додатків.
(SMP) Бібліотека ESSL Symmetric Multi-Processing забезпечує поточно-версії ESSL підпрограм для використання на всіх процесорах SMP. Крім того, деякі з цих підпрограм також багатопотокова, сенс, вони підтримують паралельну обробку моделі програмування використовується спільно з пам'яттю. Вам не потрібно змінювати існуючі прикладні програми, які вимагають ESSL, щоб скористатися перевагами підвищеної продуктивності з використанням процесорів SMP; ви можете просто повторно пов'язати існуючі програми.
Serial Library ESSL і ПКМ бібліотека ESSL підтримує наступні операційні системи програм:
32-розрядні цілі числа і 32-розрядні покажчики
32-розрядні цілі числа і 64-розрядні покажчики
64-розрядні цілі числа і 64-розрядні покажчики
Всі бібліотеки покликані забезпечити високий рівень продуктивності для чисельно інтенсивних обчислювальних робіт і обидва забезпечують математично еквівалентні результати. У ESSL Підпрограми можуть бути викликані з прикладних програм, написаних на мові Fortran, C та C ++. ESSL працює на операційних системах AIX і Linux.
Паралельний ESSL
Паралельний ESSL є масштабованим математична бібліотека підпрограм для автономних кластерів або кластерів серверів, підключених через комутатор і під управлінням AIX і Linux. Паралельний ESSL підтримує модель програмування єдиної програми Кілька даних (СПМД) з використанням бібліотеки Message Passing Interface (MPI). Паралельні бібліотеки ESSL SMP підтримують паралельні програми для обробки на кластери серверів Power Systems і лез, з'єднаних за допомогою опорної IP локальної мережі або за допомогою перемикача InfiniBand.
Паралельний ESSL забезпечує підпрограми в наступних областях обчислювальних:
Рівень 2 Паралельний Основні лінійної алгебри Підпрограми (PBLAS)
Рівень 3 PBLAS
Лінійних алгебраїчних рівнянь
Eigensystem аналіз і сингулярні вартісний аналіз
Перетворення Фур'є
Генератор випадкових чисел
Для зв'язку, паралельний ESSL включає в себе основні функції лінійної алгебри Підпрограми Communications (BLACS), які використовують MPI. Для обчислень, Паралельний ESSL використовує ESSL підпрограм (ESSL є попередньою умовою).
Паралельні ESSL підпрограми можуть бути викликані з 32-бітних і 64-розрядних прикладних програм, написаних на Fortran, C і C++, що працює під управлінням операційної системи AIX і Linux.
Паралельні ESSL SMP бібліотеки призначені для використання з паралельною бібліотеки IBM MPI Environment. Ви можете запустити один або багатопотоковий IP-додатків в США або на всіх типах вузлів. Тим не менш, ви не можете одночасно зателефонувати паралельний ESSL з декількох потоків.
