OpenMP (по Бахтину) (Лекции), страница 4

PDF-файл OpenMP (по Бахтину) (Лекции), страница 4 Суперкомпьютерное моделирование и технологии (63990): Лекции - 11 семестр (3 семестр магистратуры)OpenMP (по Бахтину) (Лекции) - PDF, страница 4 (63990) - СтудИзба2020-08-25СтудИзба

Описание файла

Файл "OpenMP (по Бахтину)" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "суперкомпьютерное моделирование и технологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 4 страницы из PDF

Функциональная отладка OpenMP-программ Отладка эффективности OpenMP-программ28 октябряМосква, 2011Технология параллельного программирования OpenMP84 из 142Система поддержки выполнения OpenMP-программВнутренние переменные, управляющие выполнениемOpenMP-программы (ICV-Internal Control Variables).Задание/опрос значений ICV-переменных.Функции работы со временем.28 октябряМосква, 2011Технология параллельного программирования OpenMP85 из 142Internal Control VariablesДля параллельных областей: nthreads-var thread-limit-var dyn-var nest-var max-active-levels-varДля циклов: run-sched-var def-sched-varДля всей программы: stacksize-var wait-policy-var28 октябряМосква, 2011Технология параллельного программирования OpenMP86 из 142Internal Control Variables. nthreads-varОпределяет максимально возможное количество нитей в создаваемойпараллельной области.Начальное значение: зависит от реализации.Существует одна копия этой переменной для каждой задачи.Значение переменной можно изменить:C shell:setenv OMP_NUM_THREADS 4,3,2Korn shell:export OMP_NUM_THREADS=16Windows:set OMP_NUM_THREADS=16void omp_set_num_threads(int num_threads);Узнать значение переменной можно:int omp_get_max_threads(void);28 октябряМосква, 2011Технология параллельного программирования OpenMP87 из 142Internal Control Variables.

thread-limit-varОпределяет максимальное количество нитей, которые могут бытьиспользованы для выполнения всей программы.Начальное значение: зависит от реализации.Существует одна копия этой переменной для всей программы.Значение переменной можно изменить:C shell:setenv OMP_THREAD_LIMIT 16Korn shell:export OMP_THREAD_LIMIT=16Windows:set OMP_THREAD_LIMIT=16Узнать значение переменной можно:int omp_get_thread_limit(void)28 октябряМосква, 2011Технология параллельного программирования OpenMP88 из 142Internal Control Variables. dyn-varВключает/отключает режим, в котором количество создаваемых нитей привходе в параллельную область может меняться динамически.Начальное значение: Если компилятор не поддерживает данный режим,то false.Существует одна копия этой переменной для каждой задачи.Значение переменной можно изменить:C shell:setenv OMP_DYNAMIC trueKorn shell:export OMP_DYNAMIC=trueWindows:set OMP_DYNAMIC=truevoid omp_set_dynamic(int dynamic_threads);Узнать значение переменной можно:int omp_get_dynamic(void);28 октябряМосква, 2011Технология параллельного программирования OpenMP89 из 142Internal Control Variables.

nest-varВключает/отключает режим поддержки вложенного параллелизма.Начальное значение: false.Существует одна копия этой переменной для каждой задачи.Значение переменной можно изменить:C shell:setenv OMP_NESTED trueKorn shell:export OMP_NESTED=falseWindows:set OMP_NESTED=truevoid omp_set_nested(int nested);Узнать значение переменной можно:int omp_get_nested(void);28 октябряМосква, 2011Технология параллельного программирования OpenMP90 из 142Internal Control Variables.

max-active-levels-varЗадает максимально возможное количество активных вложенных параллельныхобластей.Начальное значение: зависит от реализации.Существует одна копия этой переменной для всей программы.Значение переменной можно изменить:C shell:setenv OMP_MAX_ACTIVE_LEVELS 2Korn shell:export OMP_MAX_ACTIVE_LEVELS=3Windows:set OMP_MAX_ACTIVE_LEVELS=4void omp_set_max_active_levels (int max_levels);Узнать значение переменной можно:int omp_get_max_active_levels(void);28 октябряМосква, 2011Технология параллельного программирования OpenMP91 из 142Internal Control Variables. run-sched-varЗадает способ распределения витков цикла между нитями, если указанаклауза schedule(runtime).Начальное значение: зависит от реализации.Существует одна копия этой переменной для каждой задачи.Значение переменной можно изменить:C shell:setenv OMP_SCHEDULE "guided,4"Korn shell:export OMP_SCHEDULE "dynamic,5"Windows:typedef enum omp_sched_t {omp_sched_static = 1,omp_sched_dynamic = 2,omp_sched_guided = 3,omp_sched_auto = 4} omp_sched_t;set OMP_SCHEDULE=staticvoid omp_set_schedule(omp_sched_t kind, int modifier);Узнать значение переменной можно:void omp_get_schedule(omp_sched_t * kind, int * modifier );28 октябряМосква, 2011Технология параллельного программирования OpenMP92 из 142Internal Control Variables.

run-sched-varvoid work(int i);int main () {omp_sched_t schedules [] = {omp_sched_static, omp_sched_dynamic,omp_sched_guided, omp_sched_auto};omp_set_num_threads (4);#pragma omp parallel{omp_set_schedule (schedules[omp_get_thread_num()],0);#pragma omp parallel for schedule(runtime)for (int i=0;i<N;i++) work (i);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP93 из 142Internal Control Variables. def-sched-varЗадает способ распределения витков цикла между нитями по умолчанию.Начальное значение: зависит от реализации.Существует одна копия этой переменной для всей программы.void work(int i);int main () {#pragma omp parallel{#pragma omp forfor (int i=0;i<N;i++) work (i);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP94 из 142Internal Control Variables.

stack-size-varКаждая нить представляет собой независимо выполняющийся потокуправления со своим счетчиком команд, регистровым контекстом истеком.Переменная stack-size-var задает размер стека.Начальное значение: зависит от реализации.Существует одна копия этой переменной для всей программы.Значение переменной можно изменить:setenv OMP_STACKSIZE 2000500Bsetenv OMP_STACKSIZE "3000 k"setenv OMP_STACKSIZE 10Msetenv OMP_STACKSIZE "10 M"setenv OMP_STACKSIZE "20 m"setenv OMP_STACKSIZE "1G"setenv OMP_STACKSIZE 2000028 октябряМосква, 2011Технология параллельного программирования OpenMP95 из 142Internal Control Variables.

stack-size-varint main () {int a[1024][1024];#pragma omp parallel private (a){for (int i=0;i<1024;i++)for (int j=0;j<1024;j++)a[i][j]=i+j;}icl /Qopenmp test.cppProgram Exception – stack overflowLinux: ulimit -aulimit -s <stacksize in Кbytes>Windows: /F<stacksize in bytes>-Wl,--stack, <stacksize in bytes>setenv KMP_STACKSIZE 10msetenv GOMP_STACKSIZE 10000}setenv OMP_STACKSIZE 10M28 октябряМосква, 2011Технология параллельного программирования OpenMP96 из 142Internal Control Variables.

wait-policy-varПодсказка OpenMP-компилятору о желаемом поведении нитей во время ожидания.Начальное значение: зависит от реализации.Существует одна копия этой переменной для всей программы.Значение переменной можно изменить:setenv OMP_WAIT_POLICY ACTIVEIBM AIXsetenv OMP_WAIT_POLICY activeSPINLOOPTIME=100000setenv OMP_WAIT_POLICY PASSIVEYIELDLOOPTIME=40000setenv OMP_WAIT_POLICY passive28 октябряМосква, 2011Технология параллельного программирования OpenMP97 из 142Internal Control Variables. Приоритетыклаузавызов функциипеременная окруженияICVomp_set_dynamic()OMP_DYNAMICdyn-varomp_set_nested()OMP_NESTEDnest-varnum_threadsomp_set_num_threads()OMP_NUM_THREADSnthreads-varscheduleomp_set_schedule()OMP_SCHEDULErun-sched-varscheduledef-sched-varomp_set_max_active_levels()28 октябряМосква, 2011OMP_STACKSIZEstacksize-varOMP_WAIT_POLICYwait-policy-varOMP_THREAD_LIMITthread-limit-varOMP_MAX_ACTIVE_LEVELSmax-active-levels-varТехнология параллельного программирования OpenMP98 из 142Система поддержки выполнения OpenMP-программint omp_get_num_threads(void);-возвращает количество нитей в текущей параллельной области#include <omp.h>void work(int i);void test(){int np;np = omp_get_num_threads(); /* np == 1*/#pragma omp parallel private (np){np = omp_get_num_threads();#pragma omp for schedule(static)for (int i=0; i < np; i++)work(i);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP99 из 142Система поддержки выполнения OpenMP-программint omp_get_thread_num(void);-возвращает номер нити в группе [0: omp_get_num_threads()-1]#include <omp.h>void work(int i);void test(){int iam;iam = omp_get_thread_num(); /* iam == 0*/#pragma omp parallel private (iam){iam = omp_get_thread_num();work(iam);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP100 из 142Система поддержки выполнения OpenMP-программint omp_get_num_procs(void);-возвращает количество процессоров, на которых программа выполняется#include <omp.h>void work(int i);void test(){int nproc;nproc = omp_get_num_ procs();#pragma omp parallel num_threads(nproc){int iam = omp_get_thread_num();work(iam);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP101 из 142Система поддержки выполнения OpenMP-программint omp_get_level(void)- возвращает уровень вложенности для текущей параллельной области.#include <omp.h>void work(int i) {#pragma omp parallel{int ilevel = omp_get_level ();}}void test(){int ilevel = omp_get_level (); /*ilevel==0*/#pragma omp parallel private (ilevel){ilevel = omp_get_level ();int iam = omp_get_thread_num();work(iam);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP102 из 142Система поддержки выполнения OpenMP-программint omp_get_active_level(void)- возвращает количество активных параллельных областей(выполняемых 2-мя или более нитями).#include <omp.h>void work(int iam, int size) {#pragma omp parallel{int ilevel = omp_get_active_level ();}}void test(){int size = 0;int ilevel = omp_get_active_level (); /*ilevel==0*/scanf("%d",&size);#pragma omp parallel if (size>10){int iam = omp_get_thread_num();work(iam, size);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP103 из 142Система поддержки выполнения OpenMP-программint omp_get_ancestor_thread_num (int level)- для нити, вызвавшей данную функцию, возвращается номер нитиродителя, которая создала указанную параллельную область.omp_get_ancestor_thread_num (0) = 0If (level==omp_get_level()) {omp_get_ancestor_thread_num (level) == omp_get_thread_num ();}If ((level<0)||(level>omp_get_level())) {omp_get_ancestor_thread_num (level) == -1;}28 октябряМосква, 2011Технология параллельного программирования OpenMP104 из 142Система поддержки выполнения OpenMP-программint omp_get_team_size(int level);- количество нитей в указанной параллельной области.omp_get_team_size (0) = 1If (level==omp_get_level()) {omp_get_team_size (level) == omp_get_num _threads ();}If ((level<0)||(level>omp_get_level())) {omp_get_team_size (level) == -1;}28 октябряМосква, 2011Технология параллельного программирования OpenMP105 из 142Система поддержки выполнения OpenMP-программ.Функции работы со временемdouble omp_get_wtime(void);возвращает для нити астрономическое время в секундах, прошедшее снекоторого момента в прошлом.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее