- •Нижегородский государственный университет им. Н.И.Лобачевского
- •Содержание
- •Введение
- •Режимы и модели использования
- •Методы работы с сопроцессором в режиме 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
- •Итеративный процесс оптимизации
- •Уровни оптимизации приложений
- •Использование встроенного профилировщика циклов…
- •Использование встроенного профилировщика циклов…
- •Использование встроенного профилировщика циклов
- •Использование отчетов компилятора
- •Балансировка нагрузки…
- •Балансировка нагрузки…
- •Балансировка нагрузки…
- •Балансировка нагрузки
- •Дополнительные рекомендации…
- •Дополнительные рекомендации
- •Литература
- •Литература
- •Литература
- •Литература
- •Литература
- •Авторский коллектив
Явная схема работы с памятью: механизм вызова функции на сопроцессоре
На сопроцессоре выделяется память под массивы a[] и b[].
Выполняется передача данных (всех массивов и переменных) на сопроцессор.
Функция запускается на исполнение на Intel Xeon Phi.
Выполняется передача данных (всех массивов) с сопроцессора в оперативную память.
Удаляется память на сопроцессоре.
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
11 |
Явная схема работы с памятью…
Операторы (clauses) |
C/C++ синтаксис |
Семантика |
|
|
|
Target спецификация |
target(name[:card_number]) |
Явное указание |
того, |
где |
|
Условный offload |
|
запускать код |
|
|
|
if (condition) |
Запуск кода, |
если условие |
|||
Вход |
|
истинно |
|
|
|
in (var-list [modifiers]) |
Копирование |
с |
хоста |
на |
|
Выход |
|
сопроцессор |
|
|
|
out (var-list [modifiers]) |
Копирование |
|
|
с |
|
Вход и выход |
|
сопроцессора на хост |
|
||
inout (var-list [modifiers]) |
Копирование в обе стороны |
||||
Отмена копирования |
nocopy (var-list [modifiers]) |
Локальные |
|
данные |
|
Асинхронный offload |
|
сопроцессора |
|
|
|
signal(signal-slot) |
Режим |
асинхронного |
|||
Асинхронный offload |
|
offload’а |
|
|
|
wait(signal-slot) |
Ожидание |
завершения |
|||
|
|
асинхронного offload’а |
|
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
12 |
Явная работа с памятью…
Модификаторы |
С/C++ синтаксис |
Семантика |
|
(modifiers) |
|
|
|
Размер |
памяти |
при length (element-count-expr) |
Размер указывается в |
копировании |
|
элементах, а не в байтах |
Условное выделение |
alloc_if (condition) |
Выделить |
память |
на |
|
|
сопроцессоре, |
если |
|
|
|
условие истинно |
|
|
Условное освобождение |
free_if (condition) |
Удалить |
память |
на |
|
|
сопроцессоре, |
если |
|
|
|
условие истинно |
|
|
Выравнивание |
align (expression) |
Задание |
минимального |
|
|
|
выравнивания данных на |
||
|
|
сопроцессоре |
|
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
13 |
Явная схема работы с памятью: статическая память
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
14 |
Явная схема работы с памятью: динамическая память…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
15 |
Явная схема работы с памятью: динамическая память
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
16 |
Явная работа с памятью: одновременное выполнение на процессоре и сопроцессоре
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
17 |
Явная схема работы с памятью: схема двойной буферизации…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
18 |
Явная схема работы с памятью: схема двойной буферизации…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
19 |
Явная схема работы с памятью: схема двойной буферизации…
Нижний Новгород, 2015 |
Элементы оптимизации прикладных программ для Intel Xeon Phi. Intel Compiler |
20 |