このコードを見てください:
#include <stdio.h>
#include <omp.h>
int main()
{
long i, j;
#pragma omp for
for(i=0;i<=100000;i++)
{
for(j=0;j<=100000;j++)
{
if((i ^ j) == 5687)
{
//printf("%ld ^ %ld\n", i, j);
break;
}
}
}
}
したがって、結果:
robotex@robotex-work:~/Projects$ gcc test.c -fopenmp -o test_openmp
robotex@robotex-work:~/Projects$ gcc test.c -o test_noopenmp
robotex@robotex-work:~/Projects$ time ./test_openmp
real 0m11.785s
user 0m11.613s
sys 0m0.008s
robotex@robotex-work:~/Projects$ time ./test_noopenmp
real 0m13.364s
user 0m13.253s
sys 0m0.008s
robotex@robotex-work:~/Projects$ time ./test_noopenmp
real 0m11.955s
user 0m11.853s
sys 0m0.004s
robotex@robotex-work:~/Projects$ time ./test_openmp
real 0m15.048s
user 0m14.949s
sys 0m0.004s
どうしたの?OpenMP プログラムが遅いのはなぜですか? どうすれば修正できますか?
OS Ubuntuを搭載した複数のコンピューター(職場のIntel Core i5、自宅のIntel Core2Duo T7500)でテストしましたが、常に同じ結果が得られました.OpenMPはパフォーマンスを大幅に向上させません.
ウィキペディアの例もテストしましたが、同じ結果が得られました。