View
352
Download
1
Category
Preview:
DESCRIPTION
12 встреча Smolensk Computer Science Club Презентация Анатолия Свириденкова про многопоточность (часть 2) ВКонтакте: http://vk.com/scsc12
Citation preview
Классификация Флина
● SISD (Single Instruction Single Data) – классический процессор старой школы
● SIMD (Single Instruction Multiple Data) – MMX, SSE
● MISD (Multiple Instruction Single Data) – до конца не определено
● MIMD (Multiple Instruction Multiple Data) – многоядерные процессоры
Варианты параллелизма
● Скрытый параллелизм;
● Сильно связанный параллелизм (многоядерность, многопроцессорность);
● Слабо связанный параллелизм (кластеры).
Варианты взаимодействия потоков
● Общие ресурсы (более распространены при сильно связанном параллелизме);
● События (более распространены при слабо связанном параллелизме);
● Комплексный.
Примеры высокоуровневых архитектур с разделяемыми ресурсами
● Производитель\потребитель
● Очередь заданий
● Код с OpenMP
● Некоторый код из TBB
Пример кода на OpenMP
int x = 0;#pragma omp parallel forfor (int i = 0; i < 1024; i++){ #pragma omp critical(x) x++;}
Примеры высокоуровневых архитектур основанных на событиях
● TCP/IP
● Пул потоков
● Асинхронное программирование
● Map reduce
● Библиотека параллельных шаблонов (ppl)
Направление развития
● Языки со «встроенной» многопоточностью
● Увеличение доли скрытого параллелизма
● Распараллеливание при компиляции
● и т.д.
Потенциальные проблемы
● Математическое понятие параллельного алгоритма плохо проработано и математика тут плохой помощник;
● Математически эквивалентные программы, не эквивалентны при переходе к многопоточности;
● Интуиция наработанная на последовательных алгоритмах вредит при переходе к параллельным;
Например: при сортировке лучше распараллеливается алгоритм на основе слияния. QuickSort распараллеливается плохо.
Операции, которые губят параллельный алгоритм
● Синхронизация
● Обмен данными между потоками
● Дублирование
● Кеширование
Основные методы
● Обработка пакетов данных независимо
● Метод сдваивания или reduce
● Scan
● Метод конвеерного параллелизма
● Метод коллективного решения
● И т.д.
Балансировка вычислительной мощности
● Статическая балансировка:
- метод сдваивания
- конвейерный параллелизм
● Динамическая балансировка:
- коллективное решение
Полезные ссылки
● Воеводин. В.В. Параллельные вычисления;
● Курс на лекториуме: «Параллельное программирование». http://www.lektorium.tv/lecture/?id=12822
● Курс на лекториуме: «Эффективные параллельные алгоритмы» http://www.lektorium.tv/course/?id=22913
Recommended