Привіт Гість ( Вхід | Реєстрація )

> Теорія РО., Доступно чи на академічному рівні...
druid3
Jun 3 2009, 18:06
Пост #1


Так, я створив профіль!


Група: New Members
Повідомлень: 3
З нами з: 3-June 09
З: Kyiv
Користувач №: 1 061
Стать: Чол
Парк машин:
один потертий bf532...



Привіт саучаснєгі)))!

Тільки здибав цей фоум, читаю, цікаво... Та нажаль увесь його не маю змоги передивитись, тому завчасно пршу вибачення якщо питання вже розглядалось...
А питання ось у чому - де можна знайти матеріал що до розробок систем розподілених обчислень? Мова тексту... бажано не китайська ))). Цікавить саме так званий метакомп'ютерінг а-ля BOINC(процеси асинхронні, події стохастичні), а не кластерні системи...

P.S.: до сирців BOINC будьласка не відсилайте, це все-одно як людині що почала цікавитися UNIX-way радити скачати Linux-kernel 2.6 і прискіпливо його продивитись -"там всьо єсть", мол)))...


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Відповідей
Tamagoch
Jun 4 2009, 15:13
Пост #2


Мультікранчер
********

Група: Trusted Members
Повідомлень: 1 731
З нами з: 27-September 03
З: Бровари
Користувач №: 18
Стать: Чол
Free-DC_CPID
Парк машин:
Xeon 2690v2 (6x quiet mode), AMD Ryzen 5 3600 (6x no-HT), Intel i5 3rd gen (4x), а також все інше під рукою



ще одне:
Проблеми паралельного програмування

В даний час існують два основні підходи до розпаралелювання обчислень. Це паралелізм даних і паралелізм завдань. У англомовній літературі існують відповідні терміни – data parallel і message passing. В основі обох підходів полягає розподіл обчислювальної роботи по доступних користувачеві процесорах паралельного комп'ютера. При цьому доводиться вирішувати різноманітні проблеми. Перш за все, це достатньо рівномірне завантаження процесорів, оскільки якщо основна обчислювальна робота лягатиме на один з процесорів, ми приходимо до випадку звичайних послідовних обчислень і тоді ніякого виграшу за рахунок розпаралелювання завдання не буде. Збалансована робота процесорів – це перша проблема, яку слід вирішити при організації паралельних обчислень. Інша і не менш важлива проблема – швидкість обміну інформацією між процесорами. Якщо обчислення виконуються на високопродуктивних процесорах, завантаження яких достатньо рівномірна, але швидкість обміну даними низька, основна частина часу витрачатиметься даремно, на очікування інформації, необхідної для подальшої роботи даного процесора. Дані парадигми програмування розрізняються методами рішення цих двох основних проблем. Розберемо детальніше паралелізм даних і паралелізм завдань.

Основна ідея підходу, заснованого на паралелізмі даних, полягає в тому, що одна операція виконується відразу над всіма елементами масиву даних. Різні фрагменти такого масиву обробляються на векторному процесорі або на різних процесорах паралельної машини. Розподілом даних між процесорами займається програма. Векторизація або розпаралелювання в цьому випадку найчастіше виконується вже на етапі компіляції - перекладу початкового тексту програми в машинні команди. Роль програміста в цьому випадку звичайно зводиться до завдання опцій векторної або паралельної оптимізації компілятору, директив паралельної компіляції, використанню спеціалізованих мов для паралельних обчислень. Найбільш поширеними мовами для паралельних обчислень є високопродуктивний ФОРТРАН (High Performance FORTRAN) і паралельні версії мови C (це, наприклад C*).
Детальніший опис даного підходу до розпаралелювання містить вказівку на наступні його основні особливості:
  1. Обробкою даних управляє одна програма.
  2. Простір імен є глобальним, тобто для програміста існує одна єдина пам'ять, а деталі структури даних, доступу до пам'яті і міжпроцесорного обміну даними від нього приховані.
  3. Слабка синхронізація обчислень на паралельних процесорах, тобто виконання команд на різних процесорах відбувається, як правило, незалежно і лише лише іноді проводиться узгодження виконання циклів або інших програмних конструкцій – їх синхронізація. Кожен процесор виконує один і той же фрагмент програми, але немає гарантії, що в заданий момент часу на всіх процесорах виконується одна і та ж машинна команда.
  4. Паралельні операції над елементами масиву виконуються одночасно на всіх доступних даній програмі процесорах.
    Таким чином, в рамках даного підходу від програміста не вимагається великих зусиль по векторизації або розпаралелюванню обчислень. Навіть при програмуванні складних обчислювальних алгоритмів можна використовувати бібліотеки підпрограм, спеціально розроблених з урахуванням конкретної архітектури комп'ютера і оптимізованих для цієї архітектури.
Підхід, заснований на паралелізмі даних, базується на використанні при розробці програм базового набору операцій:
  1. операції управління даними;
  2. операції над масивами в цілому і їх фрагментами;
  3. умовні операції;
  4. операції приведення;
  5. операції зрушення;
  6. операції сканування;
  7. операції, пов'язані з пересилкою даних.
Розглянемо ці базові набори операцій.
Управління даними. У певних ситуаціях виникає необхідність в управлінні розподілом даних між процесорами. Це може потрібно, наприклад, для забезпечення рівномірного завантаження процесорів. Чим більш рівномірно завантажені роботою процесори, тим більше ефективною буде робота комп'ютера.
Операції над масивами. Аргументами таких операцій є масиви в цілому або їх фрагменти (перетини), при цьому дана операція застосовується одночасно (паралельно) до всіх елементів масиву. Прикладами операцій такого типа є обчислення поелементної суми масивів, множення елементів масиву на скалярний або векторний множник і т.д. Операції можуть бути і складнішими, наприклад, обчислення функцій від масиву.
Умовні операції. Ці операції можуть виконуватися лише над тими елементами масиву, які задовольняють якійсь певній умові. У сіткових методах це може бути парний або непарний номер рядка (стовпця) сітки або нерівність нулю елементів матриці.
Операції приведення. Операції приведення застосовуються до всіх елементів масиву (або його перетини), а результатом є одне єдине значення, наприклад, сума елементів масиву або максимальне значення його елементів.
Операції зсуву. Для ефективної реалізації деяких паралельних алгоритмів потрібні операції зсуву масивів. Прикладами служать алгоритми обробки зображень, звичайно-різницеві алгоритми.
Операції сканування. Операції сканування ще називаються префіксними/суфіксними операціями. Префіксна операція, наприклад, підсумовування, виконується таким чином. Елементи масиву підсумовуються послідовно, а результат чергового підсумовування заноситься в черговий осередок нового, результуючого масиву, причому номер цього осередку співпадає з числом підсумованих елементів початкового масиву.
Операції пересилання даних. Це, наприклад, операції пересилання даних між масивами різної форми (тобто що мають різну розмірність і різну протяжність по кожному вимірюванню).
При програмуванні на основі паралелізму даних часто використовуються спеціалізовані мови – CM FORTRAN C*, FORTRAN+, MPP FORTRAN, Vienna FORTRAN, а також HIGH PERFORMANCE FORTRAN (HPF). HPF заснований на мові програмування ФОРТРАН 90, що пов'язано з наявністю в останньому зручних операцій над масивами.

Стиль програмування, заснований на паралелізмі завдань, має на увазі, що обчислювальне завдання розбивається на декілька щодо самостійних підзадач і кожен процесор завантажується своїм власним підзавданням. Комп'ютер при цьому є MIMD-машиною. Абревіатура MIMD позначає у відомій класифікації архітектури ЕОМ комп'ютер, що виконує одночасно безліч різних операцій над множиною, взагалі кажучи, різних і різнотипних даних. Для кожної підзадачі пишеться своя власна програма на звичайній мові програмування, звичайно це ФОРТРАН або С. Чем більше підзадач, тим більше число процесорів можна використовувати, тим більшої ефективності можна добитися. Важливо те, що всі ці програми повинні обмінюватися результатами своєї роботи, практично такий обмін здійснюється викликом процедур спеціалізованої бібліотеки. Програміст при цьому може контролювати розподіл даних між процесорами і підзадачами і обмін даними. Очевидно, що в цьому випадку потрібна певна робота для того, щоб забезпечити ефективне сумісне виконання різних програм. В порівнянні з підходом, заснованим на паралелізмі даних, даний підхід більш трудомісткий, з ним пов'язані наступні проблеми:
  • підвищена трудомісткість розробки програми і її відладки;
  • на програміста лягає вся відповідальність за рівномірне завантаження процесорів паралельного комп'ютера;
  • програмісту доводиться мінімізувати обмін даними між завданнями, оскільки пересилка даних – найбільш "часомісткий" процес;
  • підвищена небезпека виникнення тупикових ситуацій, коли відправлена однією програмою посилка з даними не приходить до місця призначення.
Привабливими особливостями даного підходу є велика гнучкість і велика свобода, що надається програмісту в розробці програми, що ефективно використовує ресурси паралельного комп'ютера і, як наслідок, можливість досягнення максимальної швидкодії. Прикладами спеціалізованих бібліотек є бібліотеки MPI (Message Passing Interface) і PVM (Parallel Virtual Machines). Ці бібліотеки є вільно поширюваними і існують в початкових кодах. Бібліотека MPI розроблена в Аргоннськой національній лабораторії (США), а PVM – розробка Окріджськой національної лабораторії, університетів штату Теннесі і Еморі (Атланта).

отже, тут бачимо, що розподілені обчислення використовують паралелізм завдань, як основу цієї технології


--------------------
(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Повідомлення у даній Темі


Reply to this topicStart new topic
1 Користувачів переглядають дану тему (1 Гостей і 0 Прихованих Користувачів)
0 Користувачів:

 



- Lo-Fi Версія Поточний час: 20th June 2025 - 13:43