Ноу Інти, лекція, введення кластерні обчислювальні системи
В даному розділі, будуть коротко розглянуті архітектура сучасних високопродуктивних процесорів і кластерних систем. На прикладі мережі Infiniband будуть продемонстровані принципи побудови швидких мереж передачі даних, що використовуються в кластерних установках. Більш детально буде представлена архітектура найбільш продуктивних кластерних обчислювальних систем: Blue Gene / L і сімейства SGI Altix.
На закінчення даного розділу, наводяться правила роботи з консоллю запуску та управління завданнями CCS. Описуються подробиці роботи планувальника CCS при виконанні послідовностей завдань на кластері.
1.1. Архітектура високопродуктивних процесорів і кластерних систем
В історії розвитку архітектури комп'ютерних процесорів можна виділити два великих етапи:
Таким чином, підхід на основі SMP (Symmetrical MultiProcessing), який розвивався при побудові високопродуктивних серверів, в яких кілька процесорів поділяють ресурс системи, і, в першу чергу. оперативну пам'ять (див. Рис 1.1), змістився "вниз" на рівень ядер всередині процесора.
Мал. 1.1. Класична SMP-система
Мал. 1.2. Процесор Intel Pentium 4, що використовує технологію Hyper-Threading
У цій технології два віртуальних процесора поділяють між собою всі ресурси одного фізичного процесора, а саме, кеші, конвеєр виконання і окремі виконавчі пристрої. При цьому, якщо один віртуальний процесор зайняв загальний ресурс. то другий чекатиме його звільнення. Тим самим, процесор з Hyper-Threading можна порівняти з багатозадачного операційною системою, що забезпечує кожному працюючому в ній процесу свій віртуальний комп'ютер з повним набором засобів і займається плануванням порядку і часу роботи цих процесів на фізичному обладнанні. Тільки у випадку з Hyper-Threading. все це відбувається на значно нижчому апаратному рівні. Проте, два потоку команд дозволяють більш ефективно завантажити виконавчі пристрої процесора. Реальний приріст продуктивності процесора від застосування технології Hyper-Threading оцінюється від 10 до 20 відсотків.
Повноцінний двоядерний процесор (див. Рис 1.3), на окремих завданнях демонструє приріст продуктивності від 80 до 100 відсотків.
Мал. 1.3. Система на базі двоядерного процесора
Таким чином, двоядерний і, в загальному випадку, багатоядерний процесор. можна розглядати як SMP-систему в мініатюрі, в якій відсутня необхідність використання складних і дорогих багатопроцесорних материнських плат.
Більш того, кожне ядро може (як, наприклад, в процесорі Intel Pentium Extreme Edition 840) підтримувати технологію Hyper-Threading. а тому такого роду двоядерний процесор може виконувати чотири програмних потоку одночасно.
Кластерні обчислювальні системи і їх архітектура
Кластер - це локальна (розташована територіально в одному місці) обчислювальна система, що складається з безлічі незалежних комп'ютерів і мережі, що зв'язує їх. Крім того, кластер є локальною системою тому, що він керується в рамках окремого адміністративного домену як єдина комп'ютерна система.
Комп'ютерні вузли з яких він складається, є стандартними, універсальними (персональними) комп'ютерами, використовуваними в різних областях і для різноманітних додатків. Обчислювальний вузол може містити або один мікропроцесор, або кілька, утворюючи, в останньому випадку, симетричну (SMP-) конфігурацію.
Мережева компонента кластера може бути або звичайною локальною мережею, або бути побудована на основі спеціальних мережевих технологій, що забезпечують надшвидку передачу даних між вузлами кластера. Мережа кластера призначена для інтеграції вузлів кластера і, звичайно, відокремлена від зовнішньої мережі, через яку здійснюється доступ користувачів до кластеру.
Програмне забезпечення кластерів складається з двох компонент:
- засобів розробки / програмування та
- засобів управління ресурсами.
До засобів розробки відносяться компілятори для мов, бібліотеки різного призначення, засоби вимірювання продуктивності, а також отладчики, що, все разом, дозволяє будувати паралельні програми.
До програми керування ресурсами відносяться засоби інсталяції, адміністрування і планування потоків робіт.
Хоча для паралельної обробки існує дуже багато моделей програмування, але, на даний момент, домінуючим підходом є модель на основі "передачі повідомлень" (message passing), реалізована у вигляді стандарту MPI (Message Passing Interface). MPI - це бібліотека функцій, за допомогою яких в програмах на мовах C або Фортран можна передавати повідомлення між паралельними процесами, а також керувати цими процесами.