Презентация Среда программирования OpenMP. Синхронизация. (Лекция 2) онлайн

На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Среда программирования OpenMP. Синхронизация. (Лекция 2) абсолютно бесплатно. Урок-презентация на эту тему содержит всего 23 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Среда программирования OpenMP. Синхронизация. (Лекция 2)



Оцените!
Оцените презентацию от 1 до 5 баллов!
  • Тип файла:
    ppt / pptx (powerpoint)
  • Всего слайдов:
    23 слайда
  • Для класса:
    1,2,3,4,5,6,7,8,9,10,11
  • Размер файла:
    657.00 kB
  • Просмотров:
    85
  • Скачиваний:
    0
  • Автор:
    неизвестен



Слайды и текст к этой презентации:

№1 слайд
ЛЕКЦИЯ Среда программирования
Содержание слайда: ЛЕКЦИЯ 2 Среда программирования OpenMP. Синхронизация

№2 слайд
. Синхронизация в среде OpenMP
Содержание слайда: 1. Синхронизация в среде OpenMP

№3 слайд
. Пример использования
Содержание слайда: 2. Пример использования директивы atomic #include <stdio.h> #include <omp.h> int main(int argc, char *argv[]) { int count = 0; #pragma omp parallel { #pragma omp atomic count++; } printf("Число потоков: %d\n", count); }

№4 слайд
. Критические секции
Содержание слайда: 3. Критические секции

№5 слайд
. Пример использования
Содержание слайда: 4. Пример использования директивы critical #include <stdio.h> #include <omp.h> int main(int argc, char *argv[]) { int n; #pragma omp parallel { #pragma omp critical { n=omp_get_thread_num(); printf("Нить %d\n", n); } } }

№6 слайд
. Распределение вычислений
Содержание слайда: 5. Распределение вычислений между потоками

№7 слайд
. Директива master
Содержание слайда: 6. Директива master

№8 слайд
. Пример использования
Содержание слайда: 7. Пример использования директивы master #include <stdio.h> int main(int argc, char *argv[]) { int n; #pragma omp parallel private(n) { n=1; #pragma omp master { n=2; } printf("Первое значение n: %d\n", n); #pragma omp barrier #pragma omp master {n=3; } printf("Второе значение n: %d\n", n); } }

№9 слайд
. Директива single Если в
Содержание слайда: 8. Директива single Если в параллельной области какой-либо участок кода должен быть выполнен лишь один раз, то его нужно выделить директивами single:#pragma omp single [опция [[,] опция]...]. ОПЦИИ: private(список), firstprivate(список); copyprivate(список) – после выполнения нити, содержащей конструкцию single , новые значения переменных списка будут доступны всем одноименным частным переменным ( private и firstprivate ), описанным в начале параллельной области и спользуемым всеми её потоками (опция не может использоваться совместно с опцией nowait, переменные списка не должны быть перечислены в опциях private и firstprivate данной директивы single); nowait – после выполнения выделенного участка происходит неявная барьерная синхронизация параллельных потоков ( их дальнейшее выполнение происходит только тогда, когда все они достигнут данной точки), если в подобной задержке нет необходимости, опция nowait позволяет потокам, дошедшим до конца участка, продолжить выполнение без синхронизации с остальными.

№10 слайд
. Пример использования
Содержание слайда: 9. Пример использования директивы single #include <stdio.h> int main(int argc, char *argv[]) { #pragma omp parallel { printf("Сообщение 1\n"); #pragma omp single nowait { printf("Одна нить\n"); } printf("Сообщение 2\n"); } }

№11 слайд
. Информационные зависимости
Содержание слайда: 10. Информационные зависимости

№12 слайд
. Примеры информационной
Содержание слайда: 11. Примеры информационной зависимости

№13 слайд
. Информационная зависимость
Содержание слайда: 12. Информационная зависимость итераций

№14 слайд
. Пример информационной
Содержание слайда: 13. Пример информационной зависимости итераций

№15 слайд
. Разбиение на независимые
Содержание слайда: 14. Разбиение на независимые блоки. Директива section

№16 слайд
. Пример применения директивы
Содержание слайда: 15. Пример применения директивы sections #include <stdio.h> #include <omp.h> int main(int argc, char *argv[]) { int n; #pragma omp parallel private(n) { n=omp_get_thread_num(); #pragma omp sections {#pragma omp section {printf("Первая секция, процесс %d\n", n);} #pragma omp section {printf("Вторая секция, процесс %d\n", n);} #pragma omp section {printf("Третья секция, процесс %d\n", n);} } printf("Параллельная область, процесс %d\n", n); } }

№17 слайд
. Параллельные циклы
Содержание слайда: 16. Параллельные циклы

№18 слайд
. Требования к оператору
Содержание слайда: 17. Требования к оператору цикла for([целочисленный тип] i = инвариант цикла; i {<,>,=,<=,>=} инвариант цикла; i {+,-}= инвариант цикла) Эти требования введены для того, чтобы OpenMP мог при входе в цикл точно определить число итераций. Если директива параллельного выполнения стоит перед гнездом циклов, завершающихся одним оператором, то директива действует только на самый внешний цикл. Итеративная переменная распределяемого цикла по смыслу должна быть локальной, поэтому в случае, если она специфицирована общей, то она неявно делается локальной при входе в цикл. После завершения цикла значение итеративной переменной цикла не определено, если она не указана в опции lastprivate.

№19 слайд
. Возможные опции private
Содержание слайда: 18. Возможные опции: private(список) , firstprivate(список) , lastprivate(список) ; reduction(оператор:список) – задаёт оператор и список общих переменных; для каждой переменной создаются локальные копии в каждом потоке, локальные копии инициализируются соответственно типу оператора (для аддитивных операций – 0 или его аналоги, для мультипликативных операций – 1 или её аналоги), над локальными копиями переменных после завершения всех итераций цикла выполняется заданный оператор; оператор это: для языка Си – + , * , - , & , | , ^ , && , || , порядок выполнения операторов не определён, поэтому результат может отличаться от запуска к запуску; schedule(type[, chunk]) – опция задаёт, каким образом итерации цикла распределяются между потоками; collapse(n) — опция указывает, что n последовательных тесновложенных циклов ассоциируется с данной директивой, для циклов образуется общее пространство итераций, которое делится между потоками, если опция collapse не задана, то директива относится только к одному непосредственно следующему за ней циклу; nowait – в конце параллельного цикла происходит неявная барьерная синхронизация параллельно работающих нитей: их дальнейшее выполнение происходит только тогда, когда все они достигнут данной точки, опция nowait позволяет потокам, уже дошедшим до конца цикла, продолжить выполнение без синхронизации с остальными.

№20 слайд
. Использование директивы for
Содержание слайда: 19. Использование директивы for

№21 слайд
. Устранение зависимости по
Содержание слайда: 20. Устранение зависимости по данным

№22 слайд
. Использование опции
Содержание слайда: 21. Использование опции reduction

№23 слайд
. Сравнение последовательного
Содержание слайда: 22. Сравнение последовательного и параллельного варианта

Скачать все slide презентации Среда программирования OpenMP. Синхронизация. (Лекция 2) одним архивом: