1094fbe7bc7390841be6bf1a57663840.ppt
- Количество слайдов: 6
Параллельные вычисления Сергей Васильевич Федоров, Лекция № 3 Распараллеливание в рамках Win 32 API Открытый стандарт Open. MP 2. Компиляция, сборка и отладка в Intel Visual Fortran. Кодовый Сегмент, Сегмент данных, Стэк, Куча Процессы и Потоки, различие между ними. SIMD. 2. 1 MS Visual Studio и Распараллеливание в рамках Win 32 API: Критические секции, События, Семафоры, Mutex 2. 2 Открытый стандарт Open. MP. Отладка параллельного исполнения потоков с помощью Intel VTune. Обнаружение ошибок с помощью Intel Thread Checker. Оптимизация исполнения с помощью Intel Thread Profiler.
Сегментация виртуального адресного пространства Очереди, таблицы прерываний Cегменты Модуля, Вызов и выход из функции, … Кодовый сегмент, Read only Cегмент lданных, Процесс -Собственное адресное пространство, -Общие таблицы системных вызовов … СТЭК: Локальные переменные, Аргументы функций Отдельные для каждого потока SIMD Single Instructions Multiple Data КУЧА: общие данные для всех потоков Поток -Общее адресное пространство внутри процесса, -Собственный Стэк вызовов исполняемых процедур типы массивов, область видимости, размещение, очистка после выхода из программы явно заданные, Arr(-3: 10) неявно заданные, , allocatable: : Arr(: ) глобальные (модуль), сегмент данных, локальная (функция), СТЭК , функции локальная (функция), КУЧА, функции неявно заданные, , pointer: : Arr(: ) локальная (функция), глобальные (модуль), КУЧА, программы
Распараллеливание в рамках Win 32 API Базовое Распараллеливание с помощью Потоков в рамках одного процесса Инструменты синхронизации потоков (See MSDN Help) Критические секции, (Защита от одновременного доступа к коду) 1. Enter. Critical. Section, …. . КОД 2. Leave. Critical. Section События, (Асинхронная Защита от обобщенных событий) 1. Wait. For. Single. Object(event) 2. Pulse. Event – всем ждущим потокам Семафоры, (Ограничение одновременного использования ресурса) 1. Create. Semaphore(num) – по числу разреш. потоков 2. Wait. For. Single. Object(semaphor) - открыт или закрыт 3. Release. Semaphore – освобождение занятого ресурса Mutex (Защита от одновременного использования ресурса) 1. Create. Mutex – ассоциация с ресурсом по имени 2. Wait. For. Single. Object(mutex) - завладеет ресурсом или нет 3. Release. Mutex – освобождение занятого ресурса Mutex синхронизирует процессы, и защищает от взаимоблокировок (deadlock)
Параллельные вычисления Шаблонный пример решения линейного уравнения диффузии. Перенормировка координат, чтобы получить отображение с единичной нормой.
Параллельные вычисления DO iter = 1, iter. Max; logo =. true. forall (i=1: n, j=1: n, abs(0. 25*(T(i-1, j)+T(i+1, j)+T(i, j-1)+T(i, j+1))-T(i, j))>eps) T(i, j)=0. 25*(T(i-1, j)+T(i+1, j)+T(i, j-1)+T(i, j+1)); logo(i, j) =. false. end forall; if( all(logo) ) exit ENDDO double precision: : Ti 1, Tj 1(n), Tnew, Tj 1 new(n) ! Tj 1(: )=T(: , j-1), Ti 1=T(i-1, j) DO iter = 1, iter. Max ; Tj 1(: )=T(: , 0); logo =. true. DO j=1, n ; Ti 1=T(0, j) DO i=1, n Tnew= 0. 25*(Ti 1+T(i+1, j)+Tj 1(i)+T(i, j+1)) Ti 1 = T(i, j); Tj 1 new(i) = Tnew; logo(i, j) = abs(Tnew-T(i, j)). . le. eps ENDDO; Tj 1(: ) = T(: , j); T(: , j) = Tj 1 new(: ) ENDDO; if( all(logo) ) exit ENDDO
Параллельные вычисления Задача: решить нелинейное уравнение диффракции в условиях бистабильности однородных решений. Параметры Задачи: d=0. 06 - малый коэффициент диффузии поля, Ig=10 - интенсивноть насыщения активной среды, Ia=1 - интенсивноть насыщения пассивной среды, g 0=2. 11 - коэффициент усиления слабого сигнала, a 0=2. 00 - коэффициент поглощения слабого сигнала, Nx=Ny=128 - число точек по поространственным коорд-м, AX =AY= 50 - величина области счета, dx=AX/(NX-1), dt = 0. 1 - шаг по времени, wx=wy=12, I 0 = 7. 0