VS2010配置使用OpenMP

 一个简单的OpenMP例子

       首先启动VisualStudio 2010,新建一个C++的控制台应用程序,如下图所示:

       然后在项目解决方案资源管理器上选择项目名称,点击右键,选择“属性”,如下图所示:

       然后在属性页上左侧选择“配置属性”——“C/C++”——“语言”,然后在右侧“OpenMP支持”后选择“是(/openmp)”,如下图所示:

       在cpp文件中添加如下代码:

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2.   
  3. #include<omp.h>  
  4.   
  5. #include<iostream>  
  6.   
  7. usingnamespace std;  
  8.   
  9.   
  10. //循环测试函数  
  11. void test()  
  12. {  
  13. for(int i=0;i<10000;i++)  
  14. {  
  15.   
  16. }  
  17. }  
  18.   
  19.   
  20. int _tmain(int argc,_TCHAR* argv[])  
  21. {  
  22. cout<<"这是一个串行测试程序!\n";  
  23. double start = omp_get_wtime( );//获取起始时间  
  24.   
  25. for(int i = 0; i < 10000; i++)  
  26. {   
  27. test();  
  28. }  
  29.   
  30. double end = omp_get_wtime( );  
  31.   
  32. cout<<"计算耗时为:"<<end -start<<"\n";  
  33.   
  34. cin>>end;  
  35.   
  36. return 0;  
  37. }  

       以上代码中红色字体为添加的代码,以上程序是一个典型的串行程序,经过随机运行10次,其平均耗时约0.283273s(具体所耗时间跟测试计算机有密切的关系,测试电脑CPU采用Core I7 2630QM,4核)。

       下面将其转换成并行程序,只需要在for循环加上#pragma omp parallel for即可,如下代码(注意红色部分):

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2.   
  3. #include<omp.h>  
  4.   
  5. #include <iostream>  
  6.   
  7. using namespace std;  
  8.   
  9.   
  10. //循环测试函数  
  11. void test()  
  12. {  
  13. for(inti=0;i<10000;i++)  
  14. {  
  15.   
  16. }  
  17. }  
  18.   
  19. int _tmain(int argc, _TCHAR* argv[])  
  20. {  
  21. cout<<"这是一个并行测试程序!\n";  
  22.   
  23. doublestart = omp_get_wtime( );//获取起始时间  
  24.   
  25.   
  26. #pragma ompparallel for  
  27. for(inti = 0; i < 10000; i++)   
  28. {  
  29. test();  
  30. }  
  31.   
  32.   
  33. doubleend = omp_get_wtime( );  
  34.   
  35. cout<<"计算耗时为:"<<end -start<<"\n";  
  36.   
  37. cin>>end;  
  38.   
  39. return0;  
  40. }  
       同样,也经过10次随机的运行,其平均耗时约为0.06358044s,两种不同运行方式的比较结果如下表所示:

次数

串行

并行

1

0.283382

0.0746704

2

0.283654

0.0686404

3

0.283212

0.0536631

4

0.280234

0.0517737

5

0.283041

0.0717588

6

0.283126

0.0524264

7

0.281881

0.0580316

8

0.283301

0.0730386

9

0.284545

0.0745088

10

0.286353

0.0572926

平均值

0.283273

0.06358044

       两种运行方式的结果如下图所示:

       从上面的分析结果可见,采用OpenMP并行所耗时间仅为串行的22.44%,节约近4.5倍的时间。

相关程序源码下载地址:
http://download.csdn.net/detail/xwebsite/3843187
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值