Скачать презентацию Intel Parallel Advisor Lite The Easy Way to Скачать презентацию Intel Parallel Advisor Lite The Easy Way to

1eec1927676b28668c4c6767d351ed24.ppt

  • Количество слайдов: 40

Intel® Parallel Advisor Lite: The Easy Way to Introduce Threading UNN seminar. Zakhar Matveev. Intel® Parallel Advisor Lite: The Easy Way to Introduce Threading UNN seminar. Zakhar Matveev. 24 Dec. 2009.

Advisor Lite - знакомство • Что позволяет делать? – эффективно и быстро распараллелить программу. Advisor Lite - знакомство • Что позволяет делать? – эффективно и быстро распараллелить программу. • Что это такое? – методология (whatif) + набор инструментов – Методология старая, опробованная, успешная A Methodology and set of tools that help you find add scalable parallelism easily.

Advisor Lite - знакомство • Доступен для свободного скачивания whatif. intel. com • Требует Advisor Lite - знакомство • Доступен для свободного скачивания whatif. intel. com • Требует предустановленной Parallel Studio. • Является add-in для MSVS 2005/2008.

Advisor Lite - знакомство • Parallel Studio = 4 шага к созданию параллельной программы. Advisor Lite - знакомство • Parallel Studio = 4 шага к созданию параллельной программы. • Advisor – первый шаг : проектирование параллелизма. . .

Advisor Lite - методология • Работа с последовательным кодом: упор на моделирование. • PRO: Advisor Lite - методология • Работа с последовательным кодом: упор на моделирование. • PRO: – Легче отлаживать программу, не возникает реальных проблем синхронизации – Корректные результаты – Чем дольше работаем с последовательной версией – тем лучше. • Параллелизация на последнем этапе.

Advisor Lite - методология • Как совместить последовательный и параллельный подход? – • аннотации Advisor Lite - методология • Как совместить последовательный и параллельный подход? – • аннотации (annotations) - макросы: ANNOTATE_SITE_BEGIN for (int i = 0; i != n; i++) { ANNOTATE_TASK_BEGIN process(a[i]); ANNOTATE_TASK_END } ANNOTATE_SITE_END

Advisor Lite - методология • 5 шагов: 1. Знакомимся с методологией (Workflow) 2. Ищем Advisor Lite - методология • 5 шагов: 1. Знакомимся с методологией (Workflow) 2. Ищем кандидатов для распараллеливания в ски т и ч епоследовательной программе (Choose Parallel ма Авто Task). 3. Моделируем стрктуру и потенциальный выигрыш на последовательной программе (Annotate Sources + Model Performance) 4. Решаем потенциальные проблемы синхронизации ки и ч е с последовательной программе (Model на ат втом А Correctness) 5. Преобразуем последовательную программу в параллельную.

Advisor Lite - методология ШАГ 1 – Workflow C чего начать работу? - знакомимся Advisor Lite - методология ШАГ 1 – Workflow C чего начать работу? - знакомимся с методологией. • “Сердце Advisor-а” – документ Workflow diagram. • Этот документ “обучает” пользователя и ведёт его шаг за шагом к параллельной программе. • Рекоммендуется на первых порах работать с этим документом параллельно работе с UI. – GUI action -> Workflow document – GUI action

Advisor Lite - методология High-level Workflow Analyze & Design Find parallel site(s) and choose Advisor Lite - методология High-level Workflow Analyze & Design Find parallel site(s) and choose independent tasks Evaluate Modify or reject design Find and fix predicted data sharing problems by modeling parallelism Implement Choose additional site Convert modeled parallelism to parallel framework code Restructure the serial program

Advisor Lite - методология Low-level Workflow Advisor Lite - методология Low-level Workflow

Advisor Lite – инструменты: 1 1 этап: открытие workflow diagram 11 Advisor Lite – инструменты: 1 1 этап: открытие workflow diagram 11

Advisor Lite – инструменты: 1 Advisor Lite Samples • 5 примеров • Nqueens (“задача Advisor Lite – инструменты: 1 Advisor Lite Samples • 5 примеров • Nqueens (“задача о расстановке ферзей”) • Сколько существует решений задачи для заданного N? • N=8, 4. 4 () млрд. комбинаций, 92 решения. • N=13 – по умолчанию

Advisor Lite – инструменты: 2 ШАГ 2 – Выбираем кандидатов для распараллеливания • Закон Advisor Lite – инструменты: 2 ШАГ 2 – Выбираем кандидатов для распараллеливания • Закон Амдала: прирост прозиводительности за счёт распараллеливания (масштабирование) ограничено долей последовательных вычислений в алгоритме. • Если доля последовательный вычислений 25% то максимальный прирост 4 раза (100/25). • Вывод: для лучшего масштабирования – ищем места, выполняющиеся дольше всего – hot spots.

Advisor Lite – инструменты: 2 • Не надо “угадывать” – надо измерять: • Профилирока Advisor Lite – инструменты: 2 • Не надо “угадывать” – надо измерять: • Профилирока кода • Release build.

Advisor Lite – инструменты: 2 • Найден hotspot - set. Queen 15 Advisor Lite – инструменты: 2 • Найден hotspot - set. Queen 15

Advisor Lite – инструменты: 2 16 Advisor Lite – инструменты: 2 16

Confirm set. Queen() importance from source view Double check call stack 17 Confirm set. Queen() importance from source view Double check call stack 17

Advisor Lite – инструменты: 3 ШАГ 3 – Моделируем параллельную программу (и потенциальный выигрыш) Advisor Lite – инструменты: 3 ШАГ 3 – Моделируем параллельную программу (и потенциальный выигрыш) • Итак, у нас есть кандидат для распараллеливания. • Моделирование параллельной программы – с помощью аннотаций: – SITE – объект распараллеливания – TASK – подзадачи, выполняемые одновременно – LOCK – механизм синхронизации • Используя аннотации – формируем структуру параллельной программы. 18

Advisor Lite – инструменты: 3 Add > New Item This header file contains our Advisor Lite – инструменты: 3 Add > New Item This header file contains our annotation definitions 19

Advisor Lite – инструменты: 3 Insert Annotations into n. Queens solve() 20 Advisor Lite – инструменты: 3 Insert Annotations into n. Queens solve() 20

Advisor Lite – инструменты: 3 • Необходимо убедиться, что мы выбрали верную структуру программы. Advisor Lite – инструменты: 3 • Необходимо убедиться, что мы выбрали верную структуру программы. • Моделирование производительности: каков потенциальный прирост? . 21

Advisor Lite – инструменты: 3 22 Advisor Lite – инструменты: 3 22

Advisor Lite – инструменты: 3 Что нужно иметь в виду? 1. Закон Амдала, Overhead. Advisor Lite – инструменты: 3 Что нужно иметь в виду? 1. Закон Амдала, Overhead. 2. Hot spots – не единственные кандидаты (оптимизируем не только число инструкций, но и их распределение) 3. Насколько удачный site? – Is the site Memory or I/O bound? [Not a good candidate] – What is the granularity of the tasks? – What is the load balancing? [How many cores? How many tasks? ] – What is the total speedup? 23

Are the Hot Spots the Only Candidates for Parallel Sites? Иллюстрация • 1 cook Are the Hot Spots the Only Candidates for Parallel Sites? Иллюстрация • 1 cook is making dinner on the stove in 4 pots. Profiling: stir_a_pot() function is the hot spot. • Hire 3 more cooks and parallelize the stirring loop in the body of stir_a_pot. But when a pot needs to be stirred, all 4 cooks try to stir the same pot, at the same time, probably getting in each other’s way. Result: no speedup! Solution: 1 cook for each pot, and the cook stirs that pot when stirring is needed. Thus parallelization is applied at a higher level than the hot spot. Илл ац юстр ия 24

Advisor Lite – инструменты: 3 1. Декомпозиция по данным: Одна операция над разными данными. Advisor Lite – инструменты: 3 1. Декомпозиция по данным: Одна операция над разными данными. Каждый блок данных – в отдельной задаче. ANNOTATE_SITE_BEGIN for (int i = 0; i != n; i++) { ANNOTATE_TASK_BEGIN process(a[i]); ANNOTATE_TASK_END } ANNOTATE_SITE_END 25

Advisor Lite – инструменты: 3 2. Функциональная декомпозиция: Работа делится на несколько независимых задач. Advisor Lite – инструменты: 3 2. Функциональная декомпозиция: Работа делится на несколько независимых задач. initialize(data); while (!done) { old_data = data; ANNOTATE_SITE_BEGIN ANNOTATE_TASK_BEGIN display_on_screen(old_data); ANNOTATE_TASK_END } – 26 ANNOTATE_TASK_BEGIN update(data); ANNOTATE_TASK_END ANNOTATE_SITE_END Масштабируемость? ?

Advisor Lite – инструменты: 4 ШАГ 4 – Моделируем проблемы синхронизации и исправляем их Advisor Lite – инструменты: 4 ШАГ 4 – Моделируем проблемы синхронизации и исправляем их 1. Debug configuration 2. Тестовый набор данных – надо выбрать меньший 27

Problem Set Details 28 Problem Set Details 28

Problem details are displayed 29 Problem details are displayed 29

Double click from the sources view to open the source in an editor window. Double click from the sources view to open the source in an editor window. 30

Advisor Lite – инструменты: 4 • Исправляем найденную проблему • Добавляем (моделируем) механизм синхронизации Advisor Lite – инструменты: 4 • Исправляем найденную проблему • Добавляем (моделируем) механизм синхронизации (критическую секцию) 31

Advisor Lite – инструменты: 4 Rebuild and retest your application with your existing regression Advisor Lite – инструменты: 4 Rebuild and retest your application with your existing regression testing. 32

Incidental Sharing 1. Incidental sharing: They do not need exactly the same spoon – Incidental Sharing 1. Incidental sharing: They do not need exactly the same spoon – they can each have their own spoon. Solution: In programming terms, the shared object can be privatized by using a copy for each task. You need to decide what initial value it receives, and what value (if any) to put into the shared object when the task completes. 33

Independent Updates 2. Independent updates: It does not matter what order they use the Independent Updates 2. Independent updates: It does not matter what order they use the spoon, but for some reason it is not possible for each to have their own spoon – so they have to take turns. Solution: Synchronize access to the shared object. Use a lock or mutex so that only one task can reference the object at a time. 34

True Dependence between Tasks 3. True dependence: The shared data accesses in different tasks True Dependence between Tasks 3. True dependence: The shared data accesses in different tasks must occur in the original sequential order, usually because values are passed from one task to another. This eliminates (most of) the parallelism, because the tasks cannot execute at the same time – they must stay in order. Solution: Chose the tasks or parallel site differently, or restructure, e. g. , combine the tasks that use the shared data. 35

True Dependence with Cake • The 2 cake layers are cooked, they need frosting True Dependence with Cake • The 2 cake layers are cooked, they need frosting on them – can the job be parallelized with the 2 bakers? – The tops can be frosted in parallel – Unfortunately there’s a true ordering dependency: they have to be stacked before the sides are frosted. • Is there a better way? 36

Реорганизация программы • Первоначальные требования – Торт на День Рождения. • Последовательная программа: выпечь Реорганизация программы • Первоначальные требования – Торт на День Рождения. • Последовательная программа: выпечь большой торт и посыпать глазурью. • ! Несколько модифицируем требования – выпекаем несколько кексов вместо одного торта. • Restructure for better parallelism: – Granularity has been improved: more small pieces (data parallel). – Cup cakes can be frosted in parallel, and scale to more than 2 bakers. – Amdahl is happier: cup cakes cook faster - reducing the serial portion of the process and yielding higher speed-up. 37

Advisor Lite – инструменты: 5 ШАГ 5 – Параллелизация аннотации –> parallel framework 38 Advisor Lite – инструменты: 5 ШАГ 5 – Параллелизация аннотации –> parallel framework 38

Подводя итоги. • Intel® Parallel Advisor Lite – методология по обеспечению масштабируемой параллелизации – Подводя итоги. • Intel® Parallel Advisor Lite – методология по обеспечению масштабируемой параллелизации – It enables you to work with your sequential program as you analyze and experiment with threading possiblities. – Amdahl’s Law is used for Performance Modeling to guide your selection of parallel sites and tasks. – Correctness Modeling finds potential data sharing problems that should be fixed before going parallel. • Ценность Advisor – Using Advisor Lite will improve your overall development time, reducing your cost of implementation. – Refactoring your serial application with Advisor Lite annotations lets you continue to use your existing test system. – It is easier to test and debug changes to your serial program • После того, как программа распараллелена – используйте Parallel Studio. 39

Использовавшиеся материалы • Intel® Parallel Advisor Lite: The Easy Way to Introduce Threading (Mark Использовавшиеся материалы • Intel® Parallel Advisor Lite: The Easy Way to Introduce Threading (Mark Davis, Ravi Vemuri, IDF 2009) • Advisor Lite Walkthrough (Paul Petersen & Advisor Team) • Webinar: Identify and Address Threading Opportunities (Caroline Davidson, May 2009) 40