Главная страница
Навигация по странице:

  • .....................................................................................................................5 1.

  • ............................................................................................................91

  • Навчальнийпосібникдовивченнякурсупаралельнітарозподіленіобчислення


    Скачать 0.87 Mb.
    НазваниеНавчальнийпосібникдовивченнякурсупаралельнітарозподіленіобчислення
    АнкорPP6.pdf
    Дата13.03.2018
    Размер0.87 Mb.
    Формат файлаpdf
    Имя файлаPP6.pdf
    ТипНавчальний посібник
    #14024
    страница1 из 11
      1   2   3   4   5   6   7   8   9   10   11

    МіністерствоосвітиінаукиУкраїни
    Дніпропетровськийнаціональнийуніверситет
    ім. ОлесяГончара
    М.М. Ясько
    НАВЧАЛЬНИЙПОСІБНИК
    ДОВИВЧЕННЯКУРСУ

    ПАРАЛЕЛЬНІТАРОЗПОДІЛЕНІОБЧИСЛЕННЯ
    Дніпропетровськ
    РВВДНУ
    2011

    2
    УДК 004.4
    Я86
    Рецензенти: проф., д-р.фіз.-мат.наук., О.І. Михальов проф., д-р.фіз.-мат.наук., О.А. Приходько
    Я86 Ясько, М.М. Навчальний посібник до вивчення курсів “Паралельна обробка даних” та “Мови обчислень та кластерні системи” [Текст] /М.М.Ясько. – Д.: РВВ
    ДНУ, 2010. – 76с.
    Уміщені основні теоретичні відомості щодо архітектури багатопроцесорних обчислювальних систем та поданий детальний опис середовища паралельного програмування MPI та основи програмування з використанням OpenMP. Наведені приклади програм.
    Для студентів ДНУ спеціальності “Інформатика”.
    Темплан 2010, поз.33.
    Навчальне видання
    Сергій Вікторович Чернишенко
    Микола Миколайович Ясько
    Навчальнийпосібник довивченнякурсів

    Паралельнаобробкаданих

    Мовиобчисленьтакластернісистеми
    Редактор І.І.Стадник
    Техредактор
    Л.П.Замятіна
    Коректор А.А.Гриженко
    –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
    Підписано до друку 15.02.10 Формат 60х84/16.
    Папір друкарський. Друк плоский.
    Ум. друк. арк. 4,4. Ум. фарбовідб. 4,4 Обл.-вид. арк. 4,6
    Тираж 100 пр. Зам. №
    –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
    РВВ ДНУ, просп. Гагаріна, 72, м. Дніпропетровськ, 49010.
    Друкарня ДНУ, вул. Наукова, 5, м. Дніпропетровськ, 49050
    © Чернишенко С.В., Ясько М.М., 2010

    3
    ЗМІСТ
    Вступ .....................................................................................................................5
    1.
    Оглядархітектурибагатопроцесорнихобчислювальних систем
    ..................................................................................................................9
    1.1. Векторно-конвеєрні суперкомп'ютери....................................................................... 10 1.2. Симетричні мультипроцесорні системи SMP ........................................................... 11 1.3. Системи з масовим паралелізмом (МРР) ................................................................... 13 1.4. Класифікація обчислювальних систем....................................................................... 15
    2.
    Засобипрограмуваннябагатопроцесорнихсистем
    .................17
    2.1. Системи із загальною пам'яттю .................................................................................. 17 2.2. Системи з розподіленою пам'яттю ............................................................................. 18 2.3. Паралельне програмування на MPP-системах .......................................................... 20 2.4. Ефективність паралельних програм ........................................................................... 24
    3.
    Середовищепаралельногопрограмування MPI
    ......................26
    3.1. Загальна організація MPI............................................................................................. 26 3.2. Базові функції MPI ....................................................................................................... 29 3.3. Комунікаційні операції типу точка-точка.................................................................. 31 3.4. Блокувальні комунікаційні операції........................................................................... 33 3.5. Неблокувальні комунікаційні операції ...................................................................... 36
    4.
    Колективніоперації
    ...............................................................................40
    4.1. Огляд колективних операцій....................................................................................... 40 4.2. Функції збирання блоків даних від всіх процесів групи .......................................... 42 4.3. Функція розподілу блоків даних по всіх процесах групи ........................................ 45 4.4. Зміщені колективні операції ....................................................................................... 47 4.5. Глобальні розрахункові операції над розподіленими даними................................. 48
    5.
    Похіднітипиданихіпередачаупакованихданих.................................52
    5.1. Похідні типи даних ...................................................................................................... 52 5.2. Передача упакованих даних ........................................................................................ 57
    6.
    Роботазгрупамиікомунікаторами .........................................................60
    6.1. Основні поняття ........................................................................................................... 60 6.2. Функції роботи з групами............................................................................................ 61 6.3. Функції роботи з комунікаторами .............................................................................. 63
    7.
    Топологіяпроцесів.......................................................................................66
    7.1. Декартова топологія..................................................................................................... 66
    8.
    Прикладипрограм .......................................................................................70
    8.1. Визначення числа π ...................................................................................................... 70 8.2. Перемноження матриць............................................................................................... 71 8.3. Розв’язування крайової задачі методом Якобі .......................................................... 74
    9.
    Щотаке OpenMP?........................................................................................77
    9.1. Спільна пам'ять............................................................................................................. 77 9.2. Хто розробляє стандарт? ............................................................................................. 77 9.3. Основи OpenMP............................................................................................................ 78 9.4. Які переваги OpenMP дає розробнику? ..................................................................... 80
    10.
    Прагми OpenMP .........................................................................................80
    10.1. Породження потоків виконання ............................................................................... 82 10.2. Розподіл роботи (work-sharing constructs)................................................................ 82 10.3. Директиви синхронізації ........................................................................................... 83

    4 10.4. Класи змінних............................................................................................................. 84
    11.
    Процедуриізміннісередовища ...............................................................85
    11.1. Процедури OpenMP ................................................................................................... 85 11.2. Процедури для контролю/запиту параметрів середовища виконання.................. 85 11.3. Процедури для синхронізації на базі замків............................................................ 86 11.4. Змінні середовища OpenMP ...................................................................................... 86
    12.
    Прикладивикористання OpenMP..........................................................87
    12.1. З чого почати .............................................................................................................. 89 12.2. Автоматична паралелізація ....................................................................................... 90 12.3. Автовизначення області дії ....................................................................................... 90
    Висновки ............................................................................................................91
    Завданнядлялабораторнихробіт.................................................................92
    Списоквикористаноїлітературитаелектроннихресурсів ....................94

    5
    Вступ
    З моменту появи перших електронних обчислювальних машин – комп'ютерів пройшло більше 60 років. За цей час сфера їх використання охопила практично всі галузі людської діяльності. Сьогодні неможливо уявити собі ефективну організацію праці без застосування комп'ютерів у таких галузях, як планування й управління виробництвом, проектування і розробка складних технічних пристроїв, видавнича діяльність, освіта - словом, у всіх галузях, де виникає необхідність в обробці великих обсягів інформації. Проте найбільш важливим, як і раніше, залишається використання їх у тому напрямі, для якого вони власне і створювалися, а саме для виконання великих завдань, що вимагають здійснення величезних обсягів обчислень. Такі завдання виникли в середині минулого століття у зв'язку з розвитком атомної енергетики, авіабудування, ракетно-космічних технологій і ряду інших галузей науки і техніки.
    У наш час коло завдань, що вимагають для свого виконання застосування могутніх обчислювальних ресурсів, ще більш розширилося. Це пов'язано з тим, що відбулися фундаментальні зміни в самій організації наукових досліджень.
    Унаслідок широкого впровадження обчислювальної техніки значно посилився напрям числового моделювання і числових експериментів. Числове моделювання, заповнюючи прогалину між фізичними експериментами й аналітичними підходами, дозволило вивчати явища, які є або дуже складними для дослідження аналітичними методами, або дуже дорогими, або небезпечними для експериментального вивчення. При цьому числовий експеримент дозволив значно прискорити процес наукового і технологічного пошуку. Стало можливим моделювати в реальному часі процеси інтенсивних фізико-хімічних і ядерних реакцій, глобальні атмосферні процеси, процеси економічного і промислового розвитку регіонів і т. д. Очевидно, що виконання таких масштабних завдань вимагає значних обчислювальних ресурсів [1,2].
    Ідея паралельної обробки даних як могутнього резерву збільшення продуктивності обчислювальних апаратів була висловлена ще Чарльзом
    Беббіджем приблизно за сто років до появи першої ЕОМ. Проте рівень розвитку технологій середини XIX століття не дозволив йому реалізувати цю ідею. З появою перших ЕОМ ці ідеї неодноразово ставали відправною точкою у процесі розробки передових і продуктивних обчислювальних систем. Без перебільшення можна сказати, що вся історія розвитку високопродуктивних обчислювальних систем - це історія реалізації ідей паралельної обробки на тому або іншому етапі розвитку комп'ютерних технологій, природно, у поєднанні зі збільшенням частоти роботи електронних схем.
    Принципово важливими рішеннями в підвищенні продуктивності обчислювальних систем були:
    • введення конвеєрної організації виконання команд;
    • включення в систему команд векторних операцій, що дозволяють однією командою обробляти цілі масиви даних;
    • розподіл обчислень на безліч процесорів.

    6
    Поєднання цих трьох механізмів в архітектурі суперкомп'ютера Earth Simulator, що складається з 5120 векторно-конвеєрних процесорів, і дозволило йому досягти рекордної продуктивності, яка в 20000 разів перевищує продуктивність сучасних персональних комп'ютерів.
    Очевидно, що такі системи надзвичайно дорогі й виготовляються в одиничних екземплярах. А що ж виготовляється сьогодні в промислових масштабах? Широку різноманітність вироблюваних у світі комп'ютерів з великим ступенем умовності можна розділити на чотири класи:
    • персональні комп'ютери (Personal Computer - PC);
    • робочі станції (WorkStation - WS);
    • суперкомп'ютери (Supercomputer - SC);
    • кластерні системи.
    Умовність розділення пов'язана в першу чергу зі швидким прогресом у розвитку мікроелектронних технологій. Продуктивність комп'ютерів у кожному з класів подвоюється останніми роками приблизно за 18 місяців (закон Мура). У зв'язку з цим суперкомп'ютери початку 90-х років часто поступаються в продуктивності сучасним робочим станціям, а персональні комп'ютери починають успішно конкурувати за продуктивністю з робочими станціями. Проте спробуємо якимось чином класифікувати їх.
    Персональнікомп'ютери.
    Як правило, в цьому випадку маються на увазі однопроцесорні системи на платформі Intel або AMD, що працюють під керуванням одного користувача операційних систем (Microsoft Windows і ін.).
    Використовуються в основному як персональні робочі місця.
    Робочістанції.
    Це найчастіше комп'ютери з RISC процесорами з багатокористувацькими операційними системами, що належать до сім’ї ОС UNIX.
    Містять від одного до чотирьох процесорів. Підтримують видалений доступ.
    Можуть обслуговувати обчислювальні потреби невеликої групи користувачів.
    Суперкомп'ютери.
    Відмітною особливістю суперкомп'ютерів є те, що це, як правило, великі і надзвичайно дорогі багатопроцесорні системи. У більшості випадків у суперкомп'ютерах використовуються ті ж процесори, що серійно випускаються та використовуються у робочих станціях. Тому часто відмінність між ними не стільки якісна, скільки кількісна. Як приклад, можна назвати 4- процесорну робочу станцію фірми SUN і 64-процесорний суперкомп'ютер фірми
    SUN. В обох випадках використовуються одні й ті ж мікропроцесори.
    Кластернісистеми.
    Останніми роками широко використовуються у всьому світі як дешева альтернатива суперкомп'ютерам. Система необхідної продуктивності збирається з готових комп'ютерів, що серійно випускаються, об'єднаних знову ж таки за допомогою деякого комунікаційного устаткування, що серійно випускається.
    Таким чином, багатопроцесорні системи, які раніше асоціювалися в основному із суперкомп'ютерами, в даний час міцно утвердились у всьому діапазоні вироблюваних обчислювальних систем, починаючи від персональних комп'ютерів і закінчуючи суперкомп'ютерами на базі векторно-конвеєрних

    7
    процесорів.
    Ця обставина, з одного боку, збільшує доступність суперкомп'ютерних технологій, а з іншого – підвищує актуальність їх освоєння, оскільки для всіх типів багатопроцесорних систем потрібне застосування спеціальних технологій програмування для того, щоб програма могла повною мірою використовувати ресурси високопродуктивної обчислювальної системи.
    Зазвичай це досягається розділенням програми за допомогою того або іншого механізму на паралельні гілки, кожна з яких виконується на окремому процесорі.
    Суперкомп'ютери розробляються в першу чергу для того, щоб з їх допомогою виконувати складні завдання, що вимагають величезних обсягів обчислень. При цьому мається на увазі, що може бути створена єдина програма, для виконання якої будуть задіяні всі ресурси суперкомп'ютера. Проте не завжди така єдина програма може бути створена або її створення доцільне. Насправді, під час розробки паралельної програми для багатопроцесорної системи мало розбити програму на паралельні гілки. Для ефективного використання ресурсів необхідно забезпечити рівномірне завантаження всіх процесорів, що, у свою чергу, означає, що всі гілки програми повинні виконати приблизно однаковий обсяг обчислювальної роботи. Проте не завжди цього можна досягти. Наприклад, у разі розв’язування деякої параметричної задачі для різних значень параметрів час пошуку розв’язку може значно відрізнятися. У таких випадках, мабуть, доцільніше незалежно виконувати розрахунки для кожного параметра за допомогою звичайної однопроцесорної програми. Але навіть у такому простому випадку можуть знадобитися значні суперкомп'ютерні ресурси, оскільки виконання повного розрахунку на однопроцесорній системі може потребувати дуже тривалого часу. Паралельне виконання безлічі програм для різних значень параметрів дозволяє істотно прискорити процес розв’язування задачі. Нарешті, слід зазначити, що використання суперкомп'ютерів завжди ефективніше для обслуговування обчислювальних потреб великої групи користувачів, ніж використання еквівалентної кількості однопроцесорних робочих станцій, оскільки в цьому випадку за допомогою деякої системи управління завданнями легко забезпечити рівномірне й ефективніше завантаження обчислювальних ресурсів.
    На відміну від звичайних багатокористувацьких систем для досягнення максимальної швидкості виконання програм операційні системи суперкомп'ютерів, як правило, не дозволяють розділяти ресурси одного процесора різними програмами, що одночасно виконуються. Тому, як два крайні варіанти, можливі такі режими використання n-процесорної системи:
    • всі ресурси використовуються для виконання однієї програми, і тоді ми маємо право чекати n-кратного прискорення роботи програми порівняно з однопроцесорною системою;
    • одночасно виконується n звичайних однопроцесорних програм, при цьому користувач має право розраховувати, що на швидкість виконання його програми не впливатимуть інші програми.

    8
    Питання про те, наскільки ефективно можуть використовуватися ресурси багатопроцесорної системи в цих двох режимах роботи детальніше може бути вирішене під час вивчення архітектури конкретних суперкомп'ютерів.
    Через низку обставин з перерахованих вище 4 класів обчислювальних систем у нашій країні достатнього поширення набули тільки персональні комп'ютери, і відповідно технологія їх використання більш-менш освоєна.
    Комп'ютерний парк систем, що належать до класу мультипроцесорних робочих станцій і особливо до класу суперкомп'ютерів, надзвичайно малий. Внаслідок цього намітилося істотне відставання в підготовці фахівців у галузі програмування для таких систем, без яких, у свою чергу, неможливе ефективне використання навіть наявного комп'ютерного парку. У цьому плані досить показовий досвід експлуатації в Дніпропетровському національному університеті багатопроцесорної системи CLUSTER40. Система була встановлена в
    Дніпропетровському національному університеті в 2006 році, проте знадобилося близько 4 місяців, перш ніж на ній запрацювали перші реальні паралельні прикладні програми, призначені для розв’язання задач математичного моделювання. Більше того, значною мірою це виявилося можливим тільки після включення в програмне забезпечення CLUSTER40 мобільного середовища паралельного програмування MPI і заснованих на ній бібліотек паралельних підпрограм. Враховуючи, що моральне старіння комп'ютерів у даний час відбувається дуже швидко, такий тривалий період освоєння, звичайно, недопустимий. На щастя, виявилось, що розроблене програмне забезпечення легко переноситься на інші багатопроцесорні системи, а освоєні технології програмування мають досить універсальний характер.
    Даний навчальний посібник адресований тим, хто бажає ознайомитися з технологіями програмування для багатопроцесорних систем. У ньому не обговорюються складні теоретичні питання паралельного програмування. Мова в основному піде про системи, подібні CLUSTER40, - системи з розподіленою пам'яттю. До таких систем належать і дуже поширені в даний час кластерні системи.
    Посібник складається з двох частин. У першій частині наводиться огляд архітектури багатопроцесорних обчислювальних систем і засобів їх програмування. Розглядаються питання, пов'язані з підвищенням продуктивності обчислень. У завершальних розділах першої частини розглядаються архітектура й засоби програмування обчислювальних систем кластерного центру кафедри комп’ютерних технологій Дніпропетровського національного університету:
    CLUSTER40. Друга частина повністю присвячена розгляду найбільш поширеного середовища паралельного програмування - комунікаційної бібліотеки MPI, що стала в даний час фактичним стандартом для розробки мобільних паралельних програм.

    9
      1   2   3   4   5   6   7   8   9   10   11
    написать администратору сайта