并行计算—OpenMP—for指令法求和

怼烎@ 2022-07-14 23:27 330阅读 0赞
  1. // OpenMP1.cpp : 定义控制台应用程序的入口点。
  2. //使用for指令方法进行求和。
  3. #include "stdafx.h"
  4. #include <omp.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #include <windows.h>
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10. omp_set_num_threads(2);
  11. long long sum=0;
  12. long long sumtmp[2];
  13. clock_t t1=clock();
  14. #pragma omp parallel
  15. {
  16. long i;
  17. long id=omp_get_thread_num();
  18. long long temp=0l;
  19. #pragma omp for
  20. for(i=1;i<=1000000000;i++)
  21. temp+=i;
  22. sumtmp[id]=temp;
  23. }
  24. for(long i=0;i<2;i++)
  25. sum+=sumtmp[i];
  26. clock_t t2=clock();
  27. printf("sum=%lld\n",sum);
  28. printf("parallel time=%d\n",(t2-t1));
  29. sum=0;
  30. t1=clock();
  31. for(long i=1;i<=1000000000;i+=1)
  32. sum=sum+i;
  33. t2=clock();
  34. printf("sum=%lld\n",sum);
  35. printf("serial time=%d\n",(t2-t1));
  36. system("pause");
  37. return 0;
  38. }

运行结果:

Center

分析:

加速比:2262/1154=1.960

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读