Вступні примітки щодо паралелізації, зокрема моделей задач та алгоритмів


10

Я шукаю доступні в Інтернеті конспекти лекцій чи інші ресурси, які добре вводять у паралельне програмування, як і паралельний аналог основних класів з інформатики.

Моя увага полягає в наступному: хоча я можу говорити про поділ і перемогти, жадібні алгоритми, динамічне програмування тощо, тобто основні шаблони послідовних алгоритмів (і проблеми), і я не маю відповідної мови для класифікації підходів у паралельних алгоритмах.

Наприклад, я хотів би придбати відповідні умови, щоб висловити той факт, що очевидні паралельні підходи до кожної з наступних проблем мають різну якісну поведінку:

  1. встановлення масиву цілих чисел, рівних нулю (масштабується ідеально.)
  2. підсумовування масиву цілих чисел (чим більше ви використовуєте потоки, тим більше накладних витрат).
  3. Давши масив, перелічіть продукти кожного запису один з одним записом (якщо ми паралелізовуємо канонічний подвійний цикл, час виконання буде масштабуватися до sqrt числових процесорів.)

Навколишньої середовища пам'яті достатньо, і міжпроцесорне спілкування для мене не так актуально (насправді мене цікавлять алгоритми, які взагалі цього уникають). Крім того, технічні аспекти для мене незначні.


Чи можете ви переформулювати це речення: "Наприклад, я хотів би мати мову, чому очевидний паралельний підхід до наступних проблем має різну якісну поведінку"
Gopi

Зроблено. Я сподіваюся, що це більш гостро.
шухало

Відповіді:


6

Щодо вступної книги про паралельне програмування (я не знаю про онлайн-матеріал), я вивчив її за допомогою паралельних алгоритмів Казанова, Легранда та Роберта, що дуже корисно для початку теоретичної паралельної алгоритміки.

Крім того, в SPAA'11 було обговорено питання про те, що повинен знати паралельний алгоритм та розподілений обчислювальний учень та чого слід навчати. Це ініціатива з навчальних програм з паралельних та розподілених обчислень допоможе вам знайти не курс, а перелік різних тем, які слід висвітлити під час курсу нижчої програми. Тоді я гадаю, що простіше знайти документацію на кожну конкретну тему.


1
Термін "мова" позначається на природній мові, а не на програмуванні тощо. Так само, як математика - це мова, і, наприклад, теорія категорій або теорія груп, як кажуть, забезпечують "мову" для певних структур, відносин та фактів. Але все-таки спасибі
shuhalo

дійсно, мій поганий :). Тоді Для цих трьох питань я дуже рекомендую книгу, яку я зв'язав, і яка є дуже теоретичною. Вони вивчають всі види паралельних алгоритмів і прийомів на різних видах паралельної архітектури. Тоді частина, яка може відповісти на три ваші запитання, буде частиною про Уніфіковані петлі .
Гопі


+1 для Ініціативи навчальних програм NSF / IEEE-TCPP, але я пропоную видалити OpenMP & MPI, оскільки вони тут не дуже актуальні.
Jukka Suomela

Дійсно, я забув її видалити після коментаря @Martin. Дякую.
Гопі

7

Якщо ви не хочете заглиблюватися в деталі горілого, книжка надає дуже хороший вступ до моделей дизайну паралелізації. Шаблони для паралельного програмування " Маттсона, Сандерса і Массінга.

Ви знайдете загальні, широко застосовні рішення для паралелізації та навіть коротке вступ до OpenMP та MPI. Книга починається із введення моделей дизайну та одночасності. Потім автори продовжують пояснювати, як використовувати паралельність, як структурувати алгоритм та як реально реалізувати алгоритм з урахуванням синхронізації та зв'язку.

Знову ж таки, це не підручник з паралельних алгоритмів. Це дуже гарна робота, представляючи матеріали, суворо пов'язані з паралельною інженерією програмного забезпечення, з практичним та теоретичним спрямуванням. Тому він повинен повністю відповідати вашим потребам.


1

MPI_RUBY ... потрібно знайти останню стабільну збірку. Я б запропонував додати до списку паралельний префікс (сканування). Я б просто навчив паралельний префікс і показав би їм, як використовувати криву заповнення простору, щоб отримати кращу ефективність кешу на проблему всіх пар.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.