Ноу Інти, лекція, оцінка продуктивності кластерних систем з використанням тесту linpack
5.4. Завдання 3. Запуск тесту Linpack
Продуктивність. показується тестом Linpack при вирішенні системи лінійних рівнянь. істотним чином залежить не тільки від фізичних характеристик обчислювальних вузлів (таких як продуктивності процесорів вузлів, що входять в обчислювальну систему, розміри їх оперативної пам'яті, характеристики середовища передачі даних і т.д.), але і від параметрів самого завдання - розміру матриці, топології решітки , розмірі блоків, на які розбиваються вихідні вектора і т.д.
Взагалі кажучи, кількість параметрів завдання, що впливають на результат (час вирішення, і, в кінцевому підсумку - показник продуктивності) - досить велике. Таким чином, тестування обчислювальної системи тестом Linpack є послідовне виконання тестів, що відрізняються один від одного параметрами завдання, з тим, щоб підібрати такі параметри, на яких тест для даної конкретної обчислювальної системи показує найкращі результати. Найважливішими параметрами, які надають максимальний вплив на результати тесту, є: розмір матриці, топологія обчислювальної решітки, параметр. описує розподіл векторів. Інші параметри тесту також впливають на кінцевий результат, проте вважається що це вплив менше, ніж у перерахованих вище параметрів.
З огляду на все перераховане вище, розробниками тесту Linpack була створена так звана тестова оболонка. завданням якої є послідовне проведення ряду тестів, відповідно до визначеного сценарієм. Тестовий сценарій описується в файлі HPL. dat (за замовчуванням повинен знаходитися в тому ж каталозі, з якого запускається тест), в якому перераховуються істотні параметри алгоритму. Для полегшення проведення тестування в файлі HPL. dat може бути задана послідовність параметрів, при цьому буде виконана серія тестів з усіма перерахованими значеннями.
Нижче наведено приклад конфігураційного файлу HPL. dat для тесту Linpack. рядки якого для зручності пронумеровані
У наведеному файлі рядки 1,2 служать для ідентифікації файлу і більше ніякої ролі не грають (потрібно зауважити, що вони переносяться в файл результату HPL.out). Рядки 3,4 визначають, яким чином буде здійснюватися висновок результатів тесту. Рядки 5,6 містять перерахування розмірностей завдань, які будуть вирішуватися в ході тесту. Рядки 7,8 визначають різні варіанти параметра NB. Слід зазначити, що тест влаштований таким чином, що перебирає всілякі варіанти заданих параметрів, таким чином для трьох різних розмірностей і двох варіантів NB тест буде виконаний шість разів. Оскільки число різних параметрів в файлі конфігурації велике, слід бути обережним і не забувати про цю особливість. Рядки 10,11,12 визначають різні варіанти сітки P Q, для яких буде виконано тест. Рядок 13 задає константу. Решта рядків (14-31) задають інші параметри алгоритму, які в даному розділі не розглядалися.
Результатом роботи тесту є досить об'ємний файл. в якому для кожного набору параметрів, визначеному в конфігураційному файлі вказана досягнута продуктивність на тесті, а також наявна похибка рішення.
Нижче наведено фрагмент цього файлу (в наведеному прикладі запуск був здійснений на одному вузлі):
Оскільки на реальній системі автоматичного кожен окремий тест (рішення конкретної системи лінійних рівнянь методом, з цілком певними параметрами) займає досить тривалий час, цікавим є питання про те, які параметри повинні задаватися в файлі конфігурації, для того, щоб, з одного боку, не виконати занадто багато тестів, і, з іншого боку, не пропустити то значення параметрів, на якому досягається оптимум продуктивності.
Частково, відповідь на це питання дається в документі HPL Tuning (знаходиться в каталозі www, разом з іншою документацією по тесту), частково - в інших джерелах (див. Наприклад, [3], [5]).
По всій видимості, можна сформулювати наступні емпіричні правила:
- Оскільки загальним ефектом є зростання продуктивності при зростанні розмірності задачі, розмірність завдання повинна бути максимально-допустимої для того розміру оперативної пам'яті, якою володіють обчислювальні вузли (при перевищенні обсягу доступної оперативної пам'яті, починається процеси сторінкового обміну з диском, що різко знижує продуктивність). Оскільки матриця розподіляється між усіма обчислювальними вузлами, загальний розмір матриці, повинен відповідати цьому "загальному" обсягом пам'яті всіх обчислювальних вузлів. Оскільки матриця розподіляється між вузлами рівномірно, вузли, з меншим об'ємом оперативної пам'яті, можуть знижувати загальну продуктивність системи.
- По всій видимості, кращі показники продуктивності досягаються для решіток або максимально "вузьких" (виду 1хN), або максимально наближених до "квадратним" (виду PхQ. Де P і Q - близькі). Оскільки, в загальному випадку, спостерігається зростання продуктивності зі збільшенням числа обчислювальних вузлів (за умови схожості їх основних характеристик), слід будувати решітки таким чином, щоб в обчисленнях брало участь якомога більшу кількість обчислювальних вузлів.
Що стосується значення параметра NB (параметр розподілу), то його значення залежить від характеристик паралельної обчислювальної системи в цілому, і має підбиратися індивідуально (зазвичай значення лежить в межах 16 - 256).
Запуск тесту виглядає стандартно для додатка MPI:
де X - кількість процесів, яке необхідно запустити. Це кількість процесів має відповідати максимальному значенню PxQ. вказаною у файлі HPL. dat. Слід звернути увагу, що як і при запуску будь-якого іншого застосування MPI. ім'я запускається файлу повинна бути вирішується на кожному з вузлів. Стандартним способом є створення загального ресурсу, доступного на кожному з вузлів, розміщення виконуваного файлу на цьому загальному ресурсі і запуск командою, подібної наступною:
При цьому файл HPL. dat повинен знаходитися в цьому ж каталозі.
У разі, якщо необхідно явно вказати імена вузлів, на яких повинен бути запущений тест, можна скористатися конфігураційним файлом (формат конфігураційного файлу видається в разі запуску утиліти mpiexec без параметрів).