- •Нижегородский государственный университет им. Н.И.Лобачевского
- •Содержание
- •Введение
- •Режимы и модели использования
- •Методы работы с сопроцессором в режиме Offload
- •1. Явная схема работы с памятью
- •Явная схема работы с памятью…
- •Явная схема работы с памятью: Fortran
- •Явная схема работы с памятью…
- •Явная схема работы с памятью: механизм вызова функции на сопроцессоре
- •Явная схема работы с памятью…
- •Явная работа с памятью…
- •Явная схема работы с памятью: статическая память
- •Явная схема работы с памятью: динамическая память…
- •Явная схема работы с памятью: динамическая память
- •Явная работа с памятью: одновременное выполнение на процессоре и сопроцессоре
- •Явная схема работы с памятью: схема двойной буферизации…
- •Явная схема работы с памятью: схема двойной буферизации…
- •Явная схема работы с памятью: схема двойной буферизации…
- •Явная схема работы с памятью: схема двойной буферизации…
- •Явная схема работы с памятью: схема двойной буферизации
- •Явная схема работы с памятью: работа со структурами…
- •Явная схема работы с памятью: работа со структурами
- •Технология Intel® Cilk Plus
- •Основные компоненты Intel® Cilk Plus
- •Ключевые слова: cilk_spawn
- •Ключевые слова: cilk_sync
- •Ключевые слова: cilk_for
- •Преобразователи (reducers)…
- •Преобразователи (reducers)…
- •Преобразователи (reducers)
- •3. Неявная схема работы с памятью
- •Неявная схема работы с памятью…
- •Неявная схема работы с памятью…
- •Неявная схема работы с памятью: _Cilk_shared
- •Неявная схема работы с памятью: _Cilk_offload
- •Неявная схема работы с памятью
- •Сравнение явной и неявной схемы
- •4. Подходы к оптимизации прикладных программ для Intel Xeon Phi
- •Итеративный процесс оптимизации
- •Уровни оптимизации приложений
- •Использование встроенного профилировщика циклов…
- •Использование встроенного профилировщика циклов…
- •Использование встроенного профилировщика циклов
- •Использование отчетов компилятора
- •Балансировка нагрузки…
- •Балансировка нагрузки…
- •Балансировка нагрузки…
- •Балансировка нагрузки
- •Дополнительные рекомендации…
- •Дополнительные рекомендации
- •Литература
- •Литература
- •Литература
- •Литература
- •Литература
- •Авторский коллектив
Явная схема работы с памятью: схема двойной буферизации…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
21 |
Явная схема работы с памятью: схема двойной буферизации
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
22 |
Явная схема работы с памятью: работа со структурами…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
23 |
Явная схема работы с памятью: работа со структурами
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
24 |
2. Введение в Intel Cilk+
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
25 |
Технология Intel® Cilk Plus
Intel® Cilk Plus – расширение языков C и C++, которое упрощает разработку приложений, параллельных по задачам и данным в системах с общей памятью.
Поддерживается компиляторами ICC (с версии 12.0) и GCC (с версии 4.7).
Разрабатывался с 1994г. в лаборатории Информатики MIT (http://supertech.csail.mit.edu/cilk). В 2009г. выкуплен компанией Intel.
Разработчики Cilk Plus предоставляют средства для организации циклического и рекурсивного («разделяй и властвуй») параллелизма.
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
26 |
Основные компоненты Intel® Cilk Plus
Ключевые слова (cilk_for, cilk_spawn, cilk_sync). Инструмент для организации параллелизма по задачам.
Гипер-объекты или преобразователи (reducers). Устраняют конкуренцию за переменные, разделяемые между задачами, создавая представление этих переменных для каждой задачи и собирая их обратно в разделяемое значение по завершении всех задач.
Специальное представление массивов (C/C++ Extensions for Array Notation (CEAN)). Данный компонент обеспечивает параллелизм по данным (векторизацию).
Элементарные функции. Включают параллелизм по данным для всех функций и операций со специальными массивами или их частями.
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
27 |
Ключевые слова: cilk_spawn
Конструкция, которая может быть использована
непосредственно перед вызовом функции, чтобы указать системе, что данная функция может выполняться параллельно с вызывающей.
–cilk_spawn func(args);
–var = cilk_spawn func(args);
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
28 |
Ключевые слова: cilk_sync
Точка синхронизации обработчиков.
Используется, когда дальнейшие вычисления в родительской функции невозможны без результатов дочерней.
do_init_stuff(); // 1 cilk_spawn func3(); // 3 do_more_stuff(); // 2 (1) cilk_sync; do_final_stuff(); // 4
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
29 |
Ключевые слова: cilk_for
Конструкция, предназначенная для распараллеливания циклов с известным количеством повторений.
Требования к циклу:
–Независимость итераций по данным.
–Тело цикла не должно содержать операторов принудительного перехода (break, continue, return).
–Наличие только одной переменной-счетчика.
cilk_for (int i = 0; i < 1000; ++i)
{
//…
}
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
30 |