Upgrade to Pro — share decks privately, control downloads, hide ads and more …

12 встреча — Многопоточность-2 (А. Свириденков)

12 встреча — Многопоточность-2 (А. Свириденков)

12 встреча Smolensk Computer Science Club
Презентация Анатолия Свириденкова про многопоточность (часть 2)
ВКонтакте: http://vk.com/scsc12

Smolensk Computer Science Club

September 27, 2013
Tweet

More Decks by Smolensk Computer Science Club

Other Decks in Programming

Transcript

  1. Классификация Флина • SISD (Single Instruction Single Data) – классический

    процессор старой школы • SIMD (Single Instruction Multiple Data) – MMX, SSE • MISD (Multiple Instruction Single Data) – до конца не определено • MIMD (Multiple Instruction Multiple Data) – многоядерные процессоры
  2. Варианты параллелизма • Скрытый параллелизм; • Сильно связанный параллелизм (многоядерность,

    многопроцессорность); • Слабо связанный параллелизм (кластеры).
  3. Варианты взаимодействия потоков • Общие ресурсы (более распространены при сильно

    связанном параллелизме); • События (более распространены при слабо связанном параллелизме); • Комплексный.
  4. Пример кода на OpenMP int x = 0; #pragma omp

    parallel for for (int i = 0; i < 1024; i++) { #pragma omp critical(x) x++; }
  5. Примеры высокоуровневых архитектур основанных на событиях • TCP/IP • Пул

    потоков • Асинхронное программирование • Map reduce • Библиотека параллельных шаблонов (ppl)
  6. Направление развития • Языки со «встроенной» многопоточностью • Увеличение доли

    скрытого параллелизма • Распараллеливание при компиляции • и т.д.
  7. Потенциальные проблемы • Математическое понятие параллельного алгоритма плохо проработано и

    математика тут плохой помощник; • Математически эквивалентные программы, не эквивалентны при переходе к многопоточности; • Интуиция наработанная на последовательных алгоритмах вредит при переходе к параллельным; Например: при сортировке лучше распараллеливается алгоритм на основе слияния. QuickSort распараллеливается плохо.
  8. Основные методы • Обработка пакетов данных независимо • Метод сдваивания

    или reduce • Scan • Метод конвеерного параллелизма • Метод коллективного решения • И т.д.
  9. Балансировка вычислительной мощности • Статическая балансировка: - метод сдваивания -

    конвейерный параллелизм • Динамическая балансировка: - коллективное решение
  10. Полезные ссылки • Воеводин. В.В. Параллельные вычисления; • Курс на

    лекториуме: «Параллельное программирование». http://www.lektorium.tv/lecture/?id=12822 • Курс на лекториуме: «Эффективные параллельные алгоритмы» http://www.lektorium.tv/course/?id=22913