このコードは、4 つの合計を計算するコードを高速化していません。その代わり、さらに時間がかかります。また、出力は期待どおりではありません。
#include <stdio.h>
#include <omp.h>
int main()
{
int i,j,k,l;
int sum = 0,sum1 = 0,sum2 = 0,sum3 = 0;
#pragma omp parallel
{
#pragma omp sections
{
#pragma omp section
{
printf("%d",omp_get_thread_num());
for(i = 0; i < 500000000; i++) sum = sum + 1;
}
#pragma omp section
{
printf("%d",omp_get_thread_num());
for(i = 0; i < 500000000; i++) sum1 = sum1 + 1;
}
#pragma omp section
{
printf("%d",omp_get_thread_num());
for(i = 0; i < 500000000; i++) sum2 = sum2 + 1;
}
#pragma omp section
{
printf("%d",omp_get_thread_num());
for(i = 0; i < 500000000; i++) sum3 = sum3 + 1;
}
}
}
printf("sum is %d %d %d %d", sum,sum1,sum2,sum3);
}
出力はsum is 218748707 222052401 239009041 196849489
ここでopenmpを使用する際の欠陥を教えてください。