The presentation can be downloaded here.
C/C++
#pragma omp directive [clause, …]
Fortran
!$OMP directive [clause, …] C$OMP directive [clause, …] *$OMP directive [clause, …]
Parallel Regions
Main OpenMP directive
#pragma omp parallel
#pragma omp parallel
{
printf( "hello world from thread %d of %d\n",
omp_get_thread_num(),
omp_get_num_threads() );
}
"omp parallel [smth]"
(рис 7.1)
Fork-join model
(рис 7.2)
#pragma omp for Each thread gets its own amount of data – #pragma omp section Each section will be executed in a separate thread – #pragma omp single #pragma omp sections [ clause [ clause ] ... ] new-line
{
[#pragma omp section new-line ]
structured-block1
[#pragma omp section new-line
structured-block2 ]
}
#pragma omp parallel
#pragma omp sections nowait
{
thread1_work();
#pragma omp section
thread2_work();
#pragma omp section
thread3_work();
#pragma omp section
thread4_work();
}
#pragma omp for [ clause [ clause ] ...
Following loop will be executed in parallel (the iterations will be divided by the
#pragma omp parallel private(f)
{
f=7;
#pragma omp for
for (i=0; i<20; i++)
a[i] = b[i] + f * (i+1);
} /* omp end parallel */
(рис 7.3)
Available definitions:
private( list ) reduction( operator: list ) schedule( type [ , chunk ] ) nowait (для #pragma omp for)
At the end of the loop all threads will be synchronized unless"
schedule defines iteration space
private ( list ) Each of the listed variables will have the local copy for each exection threadshared ( list ) All the thread will share the same instance of the variablefirstprivate ( list ) All the local copies will be initialized by master thread valuelastprivate ( list ) The resulting master thread value will be taken from the last thread executed
(рис 7.4)
All the variables are shared by default, except the local variables inside a function calls and the loop iterators
int x;
x = 0; // Initialize x to zero
#pragma omp parallel for firstprivate(x) // Copy value
// of x
// from master
for (i = 0; i < 10000; i++) {
x = x + i;
}
printf( "x is %d\n", x ); // Print out value of x
/* Actually needs lastprivate(x) to copy value back out to master */
schedule( type [ ,
static: Every thread gets fixed amount of datadynamic: Amount of data will depend on the thread guided: Threads will get runtime: Schedule type will be defined at runtime
(рис 7.5) Loop scheduling
int omp_get_num_threads(void); int omp_get_thread_num(void); …
cnt = 0;
f=7;
#pragma omp parallel
{
#pragma omp for
for (i=0; i<20; i++) {
if (b[i] == 0) {
#pragma omp critical
cnt ++;
} /* endif */
a[i] = b[i] + f * (i+1);
} /* end for */
} /*omp end parallel */
(рис 7.6)
OpenMP Homepage: http://www.openmp.org/
Introduction to OpenMP - tutorial from WOMPEI 2000 http://www.llnl.gov/computing/tutorials/workshops/workshop/openMP
Writing and Tuning OpenMP Programs on Distributed Shared Memory Machines http://www.sao.nrc.ca/~gabriel/openmp
R.Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald, R. Menon:
Parallel programming in OpenMP.
Academic Press, San Diego, USA, 2000, ISBN 1-55860-671-8
R. Eigenmann, Michael J. Voss (Eds):
OpenMP Shared Memory Parallel Programming.
Springer LNCS 2104, Berlin, 2001, ISBN 3-540-42346-X
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.