1eec1927676b28668c4c6767d351ed24.ppt
- Количество слайдов: 40
Intel® Parallel Advisor Lite: The Easy Way to Introduce Threading UNN seminar. Zakhar Matveev. 24 Dec. 2009.
Advisor Lite - знакомство • Что позволяет делать? – эффективно и быстро распараллелить программу. • Что это такое? – методология (whatif) + набор инструментов – Методология старая, опробованная, успешная A Methodology and set of tools that help you find add scalable parallelism easily.
Advisor Lite - знакомство • Доступен для свободного скачивания whatif. intel. com • Требует предустановленной Parallel Studio. • Является add-in для MSVS 2005/2008.
Advisor Lite - знакомство • Parallel Studio = 4 шага к созданию параллельной программы. • Advisor – первый шаг : проектирование параллелизма. . .
Advisor Lite - методология • Работа с последовательным кодом: упор на моделирование. • PRO: – Легче отлаживать программу, не возникает реальных проблем синхронизации – Корректные результаты – Чем дольше работаем с последовательной версией – тем лучше. • Параллелизация на последнем этапе.
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. Ищем кандидатов для распараллеливания в ски т и ч епоследовательной программе (Choose Parallel ма Авто Task). 3. Моделируем стрктуру и потенциальный выигрыш на последовательной программе (Annotate Sources + Model Performance) 4. Решаем потенциальные проблемы синхронизации ки и ч е с последовательной программе (Model на ат втом А Correctness) 5. Преобразуем последовательную программу в параллельную.
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 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 – инструменты: 1 1 этап: открытие workflow diagram 11
Advisor Lite – инструменты: 1 Advisor Lite Samples • 5 примеров • Nqueens (“задача о расстановке ферзей”) • Сколько существует решений задачи для заданного N? • N=8, 4. 4 () млрд. комбинаций, 92 решения. • N=13 – по умолчанию
Advisor Lite – инструменты: 2 ШАГ 2 – Выбираем кандидатов для распараллеливания • Закон Амдала: прирост прозиводительности за счёт распараллеливания (масштабирование) ограничено долей последовательных вычислений в алгоритме. • Если доля последовательный вычислений 25% то максимальный прирост 4 раза (100/25). • Вывод: для лучшего масштабирования – ищем места, выполняющиеся дольше всего – hot spots.
Advisor Lite – инструменты: 2 • Не надо “угадывать” – надо измерять: • Профилирока кода • Release build.
Advisor Lite – инструменты: 2 • Найден hotspot - set. Queen 15
Advisor Lite – инструменты: 2 16
Confirm set. Queen() importance from source view Double check call stack 17
Advisor Lite – инструменты: 3 ШАГ 3 – Моделируем параллельную программу (и потенциальный выигрыш) • Итак, у нас есть кандидат для распараллеливания. • Моделирование параллельной программы – с помощью аннотаций: – SITE – объект распараллеливания – TASK – подзадачи, выполняемые одновременно – LOCK – механизм синхронизации • Используя аннотации – формируем структуру параллельной программы. 18
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 • Необходимо убедиться, что мы выбрали верную структуру программы. • Моделирование производительности: каков потенциальный прирост? . 21
Advisor Lite – инструменты: 3 22
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 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. Декомпозиция по данным: Одна операция над разными данными. Каждый блок данных – в отдельной задаче. 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. Функциональная декомпозиция: Работа делится на несколько независимых задач. 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 – Моделируем проблемы синхронизации и исправляем их 1. Debug configuration 2. Тестовый набор данных – надо выбрать меньший 27
Problem Set Details 28
Problem details are displayed 29
Double click from the sources view to open the source in an editor window. 30
Advisor Lite – инструменты: 4 • Исправляем найденную проблему • Добавляем (моделируем) механизм синхронизации (критическую секцию) 31
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 – 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 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 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 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
Подводя итоги. • 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 Davis, Ravi Vemuri, IDF 2009) • Advisor Lite Walkthrough (Paul Petersen & Advisor Team) • Webinar: Identify and Address Threading Opportunities (Caroline Davidson, May 2009) 40


