英特尔优化大赛参赛选手经验分享

celineshi 2007-01-05 11:34:47
我就谈一下自己学到的OpenMP的知识:
1、OpenMP中设置线程的2种方法:
(1)使用 OpenMP 编译提示语句
#omp parallel num_threads(n)
n为下面并行语句块中的线程数

(2)使用 OpenMP API函数来设置环境变量,需要用到2个函数和1个头文件
#include <omp.h> //正确Intel编译器环境后应该可以找到这个头文件
int num_threads;
num_threads = omp_get_num_procs(); //这个函数取得CPU个数
omp_set_num_threads(num_threads); //设置线程后,遇到#omp parallel编译指示就能开启线程了
// 这里将CPU个数设为生成的线程数,可以检测到双核,当然可以根据需要自行设定

2、关于线程的优先级
OpenMP线程不像本地线程可以直接设定优先级,但是可以通过提高原进程的优先级来提高线程优先级
使用函数SetPriorityClass,相关内容在windows SDK中有说明。

作者:李子东
...全文
1702 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
housisong 2007-01-18
  • 打赏
  • 举报
回复
欢迎转载:)
celineshi 2007-01-18
  • 打赏
  • 举报
回复
非常感谢,希望其他选手也能将自己的心得和技巧分享出来,到时候我会将大家的文章发表到网站上供大家学习
m2213231 2007-01-18
  • 打赏
  • 举报
回复
欢迎转载:)
celineshi 2007-01-18
  • 打赏
  • 举报
回复
完全没有问题,呵呵,希望两位作者可以同意,我希望能将两位的作品发表在论坛、英特尔专区和csdn网站上,不知道是否可以?
IntelPerLib 2007-01-18
  • 打赏
  • 举报
回复
总结了一下优化中的经验,写了一个优化手册,希望可以帮助新手避免优化中遇到的麻烦。
下载地址 http://space.uwants.com/batch.download.php?aid=365474
-------------------------------

我也简单写了一篇,并行计算简介(不是一般的简:)和一个简单的多核CPU编程Demo;
http://blog.csdn.net/housisong/archive/2007/01/17/1485166.aspx
--------------------------------

楼上两篇都是非常好的文章. 尤其对对于新手.celineshi 是不是在以后可以宣传一下. 呵呵 :-)
aero_boy 2007-01-18
  • 打赏
  • 举报
回复
建议大家看看“并行编程模式”这本书,对并行的各方面有方法讲得非常到位。
housisong 2007-01-17
  • 打赏
  • 举报
回复
我也简单写了一篇,并行计算简介(不是一般的简:)和一个简单的多核CPU编程Demo;
http://blog.csdn.net/housisong/archive/2007/01/17/1485166.aspx
m2213231 2007-01-17
  • 打赏
  • 举报
回复
总结了一下优化中的经验,写了一个优化手册,希望可以帮助新手避免优化中遇到的麻烦。
下载地址 http://space.uwants.com/batch.download.php?aid=365474
请大家给我提意见 m2213232omp@yahoo.com.cn
谢谢:)
ProgrameMan 2007-01-10
  • 打赏
  • 举报
回复
关注
h2o0 2007-01-05
  • 打赏
  • 举报
回复
可以在系统的环境变量中进行设置,不需要在代码写明
Windows: set OMP_THREAD_NUMS=4
celineshi 2007-01-05
  • 打赏
  • 举报
回复
欢迎大家一同来交流,分享自己的经验
m2213231 2007-01-05
  • 打赏
  • 举报
回复
我的代码调整负载之后性能提高了40%,希望对大家有帮助
m2213231 2007-01-05
  • 打赏
  • 举报
回复
在用Thread Checker 分析线程负载之后如果有负载不平衡的状况的话可以通过schedule语句来调整负载状况,共有三种调整策略:static ,dynamic ,guided.

示例:
int p=0;
#pragma omp parallel reduction(+:p)
#pragma schedule (guided,1)
for(int i=0;i<100;++i){
++p;
}

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧