![]() |
Привіт Гість ( Вхід | Реєстрація )
![]() |
druid3 |
![]() ![]()
Пост
#1
|
Так, я створив профіль! Група: New Members Повідомлень: 3 З нами з: 3-June 09 З: Kyiv Користувач №: 1 061 Стать: Чол Парк машин: один потертий bf532... ![]() |
Привіт саучаснєгі)))!
Тільки здибав цей фоум, читаю, цікаво... Та нажаль увесь його не маю змоги передивитись, тому завчасно пршу вибачення якщо питання вже розглядалось... А питання ось у чому - де можна знайти матеріал що до розробок систем розподілених обчислень? Мова тексту... бажано не китайська ))). Цікавить саме так званий метакомп'ютерінг а-ля BOINC(процеси асинхронні, події стохастичні), а не кластерні системи... P.S.: до сирців BOINC будьласка не відсилайте, це все-одно як людині що почала цікавитися UNIX-way радити скачати Linux-kernel 2.6 і прискіпливо його продивитись -"там всьо єсть", мол)))... -------------------- |
![]() ![]() |
Tamagoch |
![]()
Пост
#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*). Детальніший опис даного підходу до розпаралелювання містить вказівку на наступні його основні особливості:
Управління даними. У певних ситуаціях виникає необхідність в управлінні розподілом даних між процесорами. Це може потрібно, наприклад, для забезпечення рівномірного завантаження процесорів. Чим більш рівномірно завантажені роботою процесори, тим більше ефективною буде робота комп'ютера. Операції над масивами. Аргументами таких операцій є масиви в цілому або їх фрагменти (перетини), при цьому дана операція застосовується одночасно (паралельно) до всіх елементів масиву. Прикладами операцій такого типа є обчислення поелементної суми масивів, множення елементів масиву на скалярний або векторний множник і т.д. Операції можуть бути і складнішими, наприклад, обчислення функцій від масиву. Умовні операції. Ці операції можуть виконуватися лише над тими елементами масиву, які задовольняють якійсь певній умові. У сіткових методах це може бути парний або непарний номер рядка (стовпця) сітки або нерівність нулю елементів матриці. Операції приведення. Операції приведення застосовуються до всіх елементів масиву (або його перетини), а результатом є одне єдине значення, наприклад, сума елементів масиву або максимальне значення його елементів. Операції зсуву. Для ефективної реалізації деяких паралельних алгоритмів потрібні операції зсуву масивів. Прикладами служать алгоритми обробки зображень, звичайно-різницеві алгоритми. Операції сканування. Операції сканування ще називаються префіксними/суфіксними операціями. Префіксна операція, наприклад, підсумовування, виконується таким чином. Елементи масиву підсумовуються послідовно, а результат чергового підсумовування заноситься в черговий осередок нового, результуючого масиву, причому номер цього осередку співпадає з числом підсумованих елементів початкового масиву. Операції пересилання даних. Це, наприклад, операції пересилання даних між масивами різної форми (тобто що мають різну розмірність і різну протяжність по кожному вимірюванню). При програмуванні на основі паралелізму даних часто використовуються спеціалізовані мови – CM FORTRAN C*, FORTRAN+, MPP FORTRAN, Vienna FORTRAN, а також HIGH PERFORMANCE FORTRAN (HPF). HPF заснований на мові програмування ФОРТРАН 90, що пов'язано з наявністю в останньому зручних операцій над масивами. Стиль програмування, заснований на паралелізмі завдань, має на увазі, що обчислювальне завдання розбивається на декілька щодо самостійних підзадач і кожен процесор завантажується своїм власним підзавданням. Комп'ютер при цьому є MIMD-машиною. Абревіатура MIMD позначає у відомій класифікації архітектури ЕОМ комп'ютер, що виконує одночасно безліч різних операцій над множиною, взагалі кажучи, різних і різнотипних даних. Для кожної підзадачі пишеться своя власна програма на звичайній мові програмування, звичайно це ФОРТРАН або С. Чем більше підзадач, тим більше число процесорів можна використовувати, тим більшої ефективності можна добитися. Важливо те, що всі ці програми повинні обмінюватися результатами своєї роботи, практично такий обмін здійснюється викликом процедур спеціалізованої бібліотеки. Програміст при цьому може контролювати розподіл даних між процесорами і підзадачами і обмін даними. Очевидно, що в цьому випадку потрібна певна робота для того, щоб забезпечити ефективне сумісне виконання різних програм. В порівнянні з підходом, заснованим на паралелізмі даних, даний підхід більш трудомісткий, з ним пов'язані наступні проблеми:
отже, тут бачимо, що розподілені обчислення використовують паралелізм завдань, як основу цієї технології -------------------- (Show/Hide) |
![]() ![]() |
![]() |
Lo-Fi Версія | Поточний час: 20th June 2025 - 13:43 |