OpenMP (по Бахтину) (Лекции), страница 6
Описание файла
Файл "OpenMP (по Бахтину)" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "суперкомпьютерное моделирование и технологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 6 страницы из PDF
Клауза scheduleКлауза schedule:schedule(алгоритм планирования[, число_итераций])Где алгоритм планирования один из: schedule(static[, число_итераций]) - статическое планирование; schedule(dynamic[, число_итераций]) - динамическое планирование; schedule(guided[, число_итераций]) - управляемое планирование; schedule(runtime) - планирование в период выполнения; schedule(auto) - автоматическое планирование (OpenMP 3.0).#pragma omp parallel for schedule(static)for(int i = 1; i <= 100; i++)A[i]=0.;28 октябряМосква, 2011Технология параллельного программирования OpenMP129 из 142Балансировка нагрузки нитей. Клауза schedule#pragma omp parallel for private(tmp) shared (a) schedule (runtime)for (int i=0; i<N-2; i++)for (int j = i+1; j< N-1; j++) {tmp = a[i][j];a[i][j]=a[j][i];a[j][i]=tmp;}export OMP_SCHEDULE="static"export OMP_SCHEDULE="static,10"export OMP_SCHEDULE="dynamic"export OMP_SCHEDULE="dynamic,10"28 октябряМосква, 2011Технология параллельного программирования OpenMP130 из 142Отмена барьерной синхронизации по окончаниивыполнения цикла.
Клауза nowaitvoid example(int n, float *a, float *b, float *z, int n){int i;#pragma omp parallel{#pragma omp for schedule(static) nowaitfor (i=0; i<n; i++)c[i] = (a[i] + b[i]) / 2.0;#pragma omp for schedule(static) nowaitfor (i=0; i<n; i++)z[i] = sqrt(c[i]);}}28 октябряМосква, 2011Технология параллельного программирования OpenMP131 из 142Локализация данных#pragma omp parallel shared (var){<критическая секция>{var = …}}Модификация общей переменной в параллельной области должнаосуществляться в критической секции (critical/atomic/omp_set_lock).Если локализовать данную переменную (например, private(var)), томожно сократить потери на синхронизацию нитей.28 октябряМосква, 2011Технология параллельного программирования OpenMP132 из 142Переменная OMP_WAIT_POLICYПодсказка OpenMP-компилятору о желаемом поведении нитей во времяожидания.Значение переменной можно изменить:setenv OMP_WAIT_POLICY ACTIVEsetenv OMP_WAIT_POLICY activesetenv OMP_WAIT_POLICY PASSIVEIBM AIXsetenv OMP_WAIT_POLICY passiveSPINLOOPTIME=100000YIELDLOOPTIME=40000Sun Studiosetenv SUNW_MP_THR_IDLE SPINsetenv SUNW_MP_THR_IDLE SLEEPsetenv SUNW_MP_THR_IDLE SLEEP(2s)setenv SUNW_MP_THR_IDLE SLEEP(20ms)setenv SUNW_MP_THR_IDLE SLEEP(150mc)28 октябряМосква, 2011Технология параллельного программирования OpenMP133 из 142Оптимизация для DSM-систем#pragma omp parallel forfor (int i=1; i<N-1; i++ )for (int j=1; j<N-1; j++ ) {// first-touch algoritmtmp[i][j] = 0.;grid[i][j] = 1.
+ i + j;}for (int it=0;it<ITMAX; it++) {#pragma omp parallel forfor (int i=1; i<N-1; i++ )for (int j=1; j<N-1; j++ )tmp[i][j] = 0.25 * ( grid[i-1][j] +grid[i+1][j] + grid[i][j-1] + grid[i][j+1]);#pragma omp parallel forfor (int i=1; i<N-1; i++ )for (int j=1; j<N-1; j++ )grid[i][j] = tmp[i][j];}28 октябряМосква, 2011Технология параллельного программирования OpenMP134 из 142Intel Thread Profiler. Intel Vtune Amplifier XE 2011Предназначен для анализа производительности OpenMP-приложенийили многопоточных приложений с использованием потоков Win32 API иPOSIX.Визуализация выполнения потоков во времени помогает понять ихфункции и взаимодействие.Инструмент указывает на узкие места, снижающиепроизводительность.Инструментация программы:Linux: -g [-openmp_profile]Windows: /Zi [/-Qopenmp_profile], link with /fixed:no28 октябряМосква, 2011Технология параллельного программирования OpenMP135 из 142•••••Литература OpenMP Application Program Interface Version 3.1, July 2011.http://ww.openmp.org/mp-documents/OpenMP3.1.pdf Антонов А.С.
Параллельное программирование с использованиемтехнологии OpenMP: Учебное пособие.-М.: Изд-во МГУ, 2009.http://parallel.ru/info/parallel/openmp/OpenMP.pdf Э. Таненбаум, М. ван Стеен. Распределенные системы. Принципы ипарадигмы. – СПб. Питер, 2003 Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.:БХВ-Петербург, 2002. Презентацияftp://ftp.keldysh.ru/K_student/MSU2011/MSU2011_MPI_OpenMP2.pdf28 октябряМосква, 2011Технология параллельного программирования OpenMP141 из 142АвторБахтин Владимир Александрович, кандидат физико-математических наук,заведующий сектором Института прикладной математики им.
М.В. Келдыша РАН,ассистент кафедры системного программирования факультета вычислительнойматематики и кибернетики Московского университета им. М.В. Ломоносоваbakhtin@keldysh.ru28 октябряМосква, 2011Технология параллельного программирования OpenMP142 из 142.