Сегмент данных
Главная нить (процесс)
main()
…
нить
Сег. стека
Сегмент стека
нить
Сег. стека
Нить
Нить
…
Fork
Join
Нити
Последовательные регионы
Hello!
Hello!
Hello!
Последовательный код
Параллельный код
#pragma omp parallel for reduction(+:sum)
for (i=0; i
}
Общие
Частные
Общие и частные переменные
Общие
Частные
Общие
Частные
Общие и частные переменные
void main()
{
int rank;
#pragma omp parallel
{
rank = omp_get_thread_num();
printf("%d\n", rank);
}
}
Общие и частные переменные
void main()
{
int rank;
#pragma omp parallel private (rank)
{
rank = omp_get_thread_num();
printf("%d\n", rank);
}
}
#pragma omp parallel
{
DoSomeJob1(omp_get_thread_num());
#pragma master
{
printf("Job #1 done\n");
}
DoSomeJob2(omp_get_thread_num());
#pragma master
{
printf("Job #2 done\n");
}
}
float dot_prod(float* a, float* b, int N) float dot_prod(float* a, float* b, int N)
{
float sum = 0.0;
#pragma omp parallel for shared(sum)
for (i=0; i
sum += a[i] * b[i];
}
return sum;
}
{
float sum = 0.0;
#pragma omp parallel for shared(sum)
for (i=0; i
}
return sum;
}
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть