Доклад Кулагина И.И., Пазникова А.А., Курносова М.Г. "Оптимизация информационных обменов в параллельных PGAS-программах" на 3-й Всероссийской научно-технической конференции «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября – 4 октября 2014 г., с. Дивноморское
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...Alexey Paznikov
ЛЕКЦИЯ 6. Разработка параллельных структур данных на основе блокировок
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...Alexey Paznikov
ЛЕКЦИЯ 7. Модель памяти С++. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 5. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...Alexey Paznikov
ЛЕКЦИЯ 6. Разработка параллельных структур данных на основе блокировок
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...Alexey Paznikov
ЛЕКЦИЯ 7. Модель памяти С++. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 5. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...Alexey Paznikov
ЛЕКЦИЯ 5. Многопоточное программирование в языке С++. Работа с потоками. Защита данных. Синхронизация. Будущие результаты
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Модель памяти C++ - Андрей Янковский, ЯндексYandex
В докладе Андрей расскажет о моделях памяти различных процессоров, о тонкостях реализации неблокирующих алгоритмов и о том, какое отношение всё это имеет к С++.
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
ЛЕКЦИЯ 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI умножения матрицы на вектор, метода Монте-Карло, решение линейных алгебраических уравнений (СЛАУ) методами Гаусса и сопряжённых градиентов
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...Alexey Paznikov
ЛЕКЦИЯ 5. Многопоточное программирование в языке С++. Работа с потоками. Защита данных. Синхронизация. Будущие результаты
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает. В докладе будет предпринята попытка заглянуть под капот и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема будет рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» будет центральным в повествовании.
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Модель памяти C++ - Андрей Янковский, ЯндексYandex
В докладе Андрей расскажет о моделях памяти различных процессоров, о тонкостях реализации неблокирующих алгоритмов и о том, какое отношение всё это имеет к С++.
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
ЛЕКЦИЯ 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI умножения матрицы на вектор, метода Монте-Карло, решение линейных алгебраических уравнений (СЛАУ) методами Гаусса и сопряжённых градиентов
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
В этом докладе Дмитрий кратко рассказывает о таком звере, как LLVM, о котором много кто слышал, но немногие щупали.
Что такое компилятор на самом деле? Как происходит компиляция программы, как работают оптимизации и, наконец, откуда берется неопределенное поведение в детерменированных программах на C++?
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
Евгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
Мы покажем, как можно перенести разработанные алгоритмы для работы с Big Data с минимальными изменениями исходных программ. Рассмотрим возможности по распараллеливанию счета на многоядерных процессорах (вычислительных кластерах) и графических процессорах, поддерживающих CUDA.
ЛЕКЦИЯ 1. Введение в параллельные вычисления
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
Мы проговорим про связь приложения и ОС, какие компоненты есть в современной ОС на примере Linux, как настройки этих компонент могут повлиять на приложение.
Я расскажу про планировщик процессов, дисковый и сетевой ввод-вывод и соответствующие планировщики, управление памятью - как это все в общих чертах работает и как его потюнить.
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
ЛЕКЦИЯ 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
ЛЕКЦИЯ 4. Производные типы данных в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 0. Описание курса. Общие вопросы, структура курса, требования. Содержание курса. Полезные ресурсы
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Стандарт POSIX Threads
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюAlexey Paznikov
ЛЕКЦИЯ 2. Архитектура вычислительных систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 1а. Описание курса "Параллельные вычислительные технологии" (ПВТ), осень 2014
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 11. Технико-экономическая эффективность функционирования вычислительных систем
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 10. Осуществимость решения задач на вычислительных системах
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 9. Показатели структурной живучести распределённых ВС
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 8. Расчёт функций потенциальной живучести распределённых вычислительных систем
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 7. Методика расчета показателей живучести ВС. Континуальный подход к анализу живучести большемасштабных ВС.
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 5. Живучие ВС. Потенциальная и структурная живучесть ВС. Показатели потенциальной живучести ВС
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
1. Кулагин И.И., ПазниковА.А., КурносовМ.Г.
Институт физики полупроводников им. А.В. РжановаСО РАН
Оптимизация информационных обменов в параллельных PGAS-программах
3-я Всероссийская научно-техническая конференция «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября –4 октября 2014 г., с. Дивноморское
2. Общая память(PThreads, OpenMP, Cilk)
Распределённая память(MPI)
P
P
P
Разделяемое общее адресное пространство (Partitioned Global Address Space –PGAS)
P
M
Задача (процесс, поток)
Память (адресное пространство)
Доступ к памяти
Передача сообщений
•X10
•Chapel
•UPC
•Titanium
•Co-array Fortran
•HPF
Программные модели вычислительных систем
2
P
M
P
P
P
M
P
M
P
M
3. 3
Глобальное разделённое адресное пространство (PGAS)
HPF, Co-array Fortran, Titanium, UPC, IBM X10, Cray Chapel
4. Основные программные конструкции PGAS-языков
4
begin S–асинхронное выполнение инструкций Sв отдельном потоке на вычислительном узле, с которого вызвана конструкция
on iS–выполнение инструкций Sна узле i
on x S–выполнение инструкций Sна том узле, в памяти которого находится объект x
coforallS–выполнение каждой итерации тела Sцикла в независимом потоке
sync T–синхронизациягруппы потоков T
5. Основные программные конструкции PGAS-языков
5
begin S–асинхронное выполнение инструкций Sв отдельном потоке на вычислительном узле, с которого вызвана конструкция
Вычислительныйузел i
begin {
stmt1
stmt2
…
stmtk
}
…
stmt1
stmt2
…
stmtk
6. Основные программные конструкции PGAS-языков
6
on iS–выполнение инструкций Sна узле i
Вычислительныйузел j
Вычислительныйузел i
on i{
stmt1
stmt2
…
stmtk
}
stmt1
stmt2
…
stmtk
7. Основные программные конструкции PGAS-языков
7
coforallS–выполнение каждой итерации тела Sцикла в независимом потоке
Вычислительныйузел i
coforall{
stmt1
stmt2
…
stmtk
}
…
stmt1
stmt2
…
stmtk
stmt1
stmt2
…
stmtk
stmt1
stmt2
…
stmtk
…
8. Основные программные конструкции PGAS-языков
8
sync T–синхронизациягруппы потоков T
Вычислительныйузел i
stmt1
stmt2
…
stmtk
stmt1
stmt2
…
stmtk
Вычислительныйузел j
barrier T
…
stmt1
stmt2
…
stmtk
stmt1
stmt2
…
stmtk
…
9. Основные программные конструкции PGAS-языков
9
Параллелизм уровня потоков
порождение задач (begin, on)
параллельные циклы (coforall)
примитивы синхронизации (sync)
Параллелизм уровня данных
коллективные операции (редукция, префиксная сумма) над массивами
распределённые структуры(проблемы размещения, оптимизация доступа)
10. Основные программные конструкции PGAS-языков
10
Параллелизм уровня потоков
порождение задач (begin, on)
параллельные циклы (coforall)
примитивы синхронизации (sync)
Параллелизм уровня данных
коллективные операции (редукция, префиксная сумма) над массивами
распределённые структуры(проблемы размещения, оптимизация доступа)
1
2
32. 32
Объявление массивов в IBM X10
x10.lang.Rail[T]
Одномерныймассив с элементами типа T
Индексы типа Long
Базовый класс для массивов
x10.regionarray.Array[T]
Многомерныймассива с элементами типа T
Основан на Rail массиве
33. varb:
Long = a(k);
// ...
33
Операции над распределёнными массивами в IBM X10
Вычислительныйузел j
Вычислительныйузел i
vala:Array[Long];
at(Place.place(i))
{
varb:
Long =a(k)
// ...
}
Доступ к элементам удалённого массива
Копирование всего массива a
34. varb:
Long = a(k);
// ...
34
Операции над распределёнными массивами в IBM X10
Вычислительныйузел j
Вычислительныйузел i
vala:Array[Long];
for(iin 0..N) {
at(Place.place(i))
{
varb:
Long =a(k)
// ...
}
}
Циклический доступ к элементам удалённого массива
35. varb:
Long = a(k);
// ...
35
Операции над распределёнными массивами в IBM X10
Вычислительныйузел j
Вычислительныйузел i
vala:Array[Long];
for(iin 0..N) {
at(Place.place(i))
{
varb:
Long =a(k)
// ...
}
}
Циклический доступ к элементам удалённого массива
Копирование всего массива a
36. 36
Копирование удалённых массивов как узкое место
1
valA:Array[Long] =
2
new Array[Long](length, (i:Long) => i);
3
4
finish {
5
for (iin 0..(length –1)) {
6
valplaceId:Long= i%
7
Place.MAX_PLACES;
8
at (Place.place(placeId)) async{
9
valtmpA= A(i);
10
...
11
}
12
}
13
}
37. 37
Копирование удалённых массивов как узкое место
1
valA:Array[Long] =
2
new Array[Long](length, (i:Long) => i);
3
4
finish {
5
for (iin 0..(length –1)) {
6
valplaceId:Long= i%
7
Place.MAX_PLACES;
8
at (Place.place(placeId)) async{
9
valtmpA= A(i);
10
...
11
}
12
}
13
}
38. 38
Копирование удалённых массивов как узкое место
1
valA:Array[Long] =
2
new Array[Long](length, (i:Long) => i);
3
4
finish {
5
for (iin 0..(length –1)) {
6
valplaceId:Long= i%
7
Place.MAX_PLACES;
8
at (Place.place(placeId)) async{
9
valtmpA= A(i);
10
...
11
}
12
}
13
}
39. 39
Копирование удалённых массивов как узкое место
1
valA:Array[Long] =
2
new Array[Long](length, (i:Long) => i);
3
4
finish {
5
for (iin 0..(length –1)) {
6
valplaceId:Long= i%
7
Place.MAX_PLACES;
8
at (Place.place(placeId)) async{
9
valtmpA= A(i);
10
...
11
}
12
}
13
}
40. 40
Копирование удалённых массивов как узкое место
Вычислительныйузел i
tmpA= A(i)
Вычислительныйузел j
Вычислительныйузелk
A: a[1], a[2],
..., a[n]
tmpA= A(i)
tmpA: ...
tmpA= A(i)
tmpA: ...
41. 41
Копирование удалённых массивов как узкое место
Вычислительныйузел i
tmpA= A(i)
Вычислительныйузел j
Вычислительныйузел k
A: a[1], a[2],
..., a[n]
tmpA= A(i)
tmpA: ...
tmpA= A(i)
tmpA: ...
Копирование всего массива на каждой итерации цикла
42. 42
Копирование удалённых массивов как узкое место
Вычислительныйузел i
tmpA= A(i)
Вычислительныйузел j
Вычислительныйузел k
A: a[1], a[2],
..., a[n]
tmpA= A(i)
tmpA: ...
tmpA= A(i)
tmpA: ...
Копирование всего массива на каждой итерации цикла
Алгоритм Scalar replacement?
46. 46
Алгоритм ArrayPreloadоптимизациидоступа к удалённым массивам
Вычислительныйузел i
for() {
}
Вычислительныйузел j
Вычислительныйузел k
A
sharedA(0) = A
for() {
}
sharedA(j) = A
for() {
}
sharedA(i) = A
Копирование массива один раз перед выполнением цикла
47. Функциональная структура компилятора IBM Х10
47
X10 Runtime
X10 Application
X10 Class Libs
Front End
AST optimizationsAST-lowering
.cu
C++
Java
g++/xlC
g++/xlC
javac
Native Back End
Java Back End
Executable
Bytecode
X10 Runtime
X10 Runtime C++ Natives
X10 AST
JVM
X10 AST (Abstract Syntax Tree)
X10 Runtime
X10 Runtime Java Natives
Источник: http://x10.codehaus.org/X10+Day
48. Функциональная структура компилятора IBM Х10
48
X10 Runtime
X10 Application
X10 Class Libs
Front End
AST optimizationsAST-lowering
.cu
C++
Java
g++/xlC
g++/xlC
javac
Native Back End
Java Back End
Executable
Bytecode
X10 Runtime
X10 Runtime C++ Natives
X10 AST
JVM
X10 AST (Abstract Syntax Tree)
X10 Runtime
X10 Runtime Java Natives
Источник: http://x10.codehaus.org/X10+Day
Реализация ArrayPreload
49. Block
Loop
Block
At
Block
Call
Arg
Target
Stmt
Stmt
Stmt
...
...
...
Трансформация AST-дерева в алгоритме ArrayPreload
49
AST-дерево программы
50. Поиск в ASTдереве подходящей конструкции
Block
Block
At
Block
Call
Arg
Target
Stmt
Stmt
...
...
...
Трансформация AST-дерева в алгоритме ArrayPreload
50
1
Loop
Stmt
AST-дерево программы
51. Поискчтения массива Array[T]в цикле
Поиск в ASTдереве подходящей конструкции
Block
Block
At
Block
Call
Arg
Target
Stmt
Stmt
...
...
...
Трансформация AST-дерева в алгоритме ArrayPreload
51
1
2
Loop
Stmt
AST-дерево программы
52. Поискчтения массива Array[T]в цикле
Поиск в ASTдереве подходящей конструкции
Трансформация AST дерева
Block
Block
At
Block
Call
Arg
Call
Stmt
Stmt
...
...
...
Decl
Arg
Target
Трансформация AST-дерева в алгоритме ArrayPreload
52
1
2
3
Loop
Stmt
AST-дерево программы
53. 푻=푻풄풐풑풚푨[]×푵
for ... A(i)
for ... A(i)
A()={…}
푻=푻풄풐풑풚푨[]
for ... A'(i)
for ... A'(i)
A()={…}
A' = A
A' = A
A' = A
Область j
Область i
Область k
Область j
Область i
Область k
A
Трансформация AST-дерева в алгоритме ArrayPreload
53
Block
Block
At
Block
Call
Arg
Call
Stmt
Stmt
...
...
...
Decl
Arg
Target
Loop
Stmt
AST-дерево
54. Организация экспериментов (алгоритмBlockReduce)
54
Конфигурация подсистемы
Кластер А: 16 узлов 2 x IntelXeonE5420 2.5 GHz(8 процессорных ядер на узел), 25 GiB, сетьGigabit Ethernet
Кластер B: 6 узлов 2 x IntelXeonE5620 2.4 GHz(8 процессорных ядер на узел), 8 GiB, сеть InfiniBandQDR
Описание тестовых программ
Синтетический тест: 푅=100операций редукции
Размер массива 퐷=4000,8000,…,20000элементов
Chapel-программа PTRANS–транспонирование распределённых матриц
Chapel-программа miniMD–молекулярная динамика
59. Организация экспериментов(алгоритм ArrayPreload)
59
Конфигурация подсистемы
Кластер А: 16 узлов 2 x IntelXeonE5420 2.5 GHz(8 процессорных ядер на узел), 25 GiB, сетьGigabit Ethernet
КластерB: 6 узлов 2 x IntelXeonE5620 2.4 GHz(8 процессорных ядер на узел), 8 GiB, сеть InfiniBandQDR
Описание тестовой программы
Тест циклического (Round-robin) обращения к массиву
Размер массива D{40000, 4000, 400, 40}элементов
Количество обращений к массиву R{40000, 4000, 400, 40}
Массив Array[Long]
Условия запуска
Количество потоков на один узел: 8
C++ Backend
60. 60
Результаты экспериментов. Алгоритм Scalar replacement
Кластер А, Сеть Gigabit Ethernet
s
N
D= 40000, R= 40000
D= 40000, R= 4000
D= 40000, R= 4000
D= 40000, R= 40
61. 61
Результаты экспериментов. Алгоритм ArrayPreload
Кластер А, Сеть Gigabit Ethernet
s
N
D= 40000, R= 40000
D= 40000, R= 4000
D= 40000, R= 4000
D= 40000, R= 40
62. 62
Результаты экспериментов. Алгоритм ArrayPreload
Кластер В, Сеть InfinibandQDR
s
N
D= 40000, R= 40000
D= 40000, R= 4000
D= 40000, R= 4000
D= 40000, R= 40
63. 63
Результаты экспериментов. Алгоритм ArrayPreload
Кластер В, Сеть InfinibandQDR
s
N
D= 40000, R= 40000
D= 4000, R= 40000
D= 400, R= 40000
D= 40, R= 40000
64. 64
Предложены алгоритмы BlockReduceи ArrayPreloadоптимизации информационных обменов в параллельных PGAS-программах. Алгоритмы реализован для языков Cray Chapelи IBM X10.
Алгоритм BlockReduceобеспечивает сокращение времени выполнения операции редукции на 5-10% для массивов большого размера (D> 10000).
Алгоритм ArrayPreloadпредварительного копирования элементов удалённых массивов позволяет сократить время выполнения циклического доступа в среднем от 2 до 80 раз.
ArrayPreloadэффективен для программ, выполняющих обращение к массивам большого размера (D> 5000)в циклах с большим числом итераций(R> 500).
Результаты
65. 65
Разработка алгоритмов реализации коллективных операций в PGAS-языках с учётом типа распределения элементов массива между узлами.
Создание алгоритмов оптимизации доступа к удалённым массивам по результатам предварительного профилирования PGAS-программ (profile guided optimization).
Развитие эвристических алгоритмов предварительного распределения данных по узлам распределённой ВС.
Применение алгоритмов компиляторной оптимизации для разрешения проблем согласованности памяти при выполнении операций с распределёнными массивами.
Разработка алгоритмов кэширования для PGAS-программ.
Направления дальнейших исследований