社区
英特尔边缘计算技术
帖子详情
OpenMP并行程序比串行程序慢
CToday
2013-05-28 04:14:17
我最近在做一个将GA算法用OpenMP框架并行化的程序,但在并行化后我发现我的并行程序跑的比串行程序还慢,当我把大部分for循环进行并行化处理后,发现并行程序比串行程序慢了一倍多,自己检查各并行域,没有发现存在数据竞争的情况,所以很郁闷(我使用的编译器是gcc)。在OpenMP并行化中,除了数据竞争外还有那些因素会影响程序的运行效率啊?小弟是OpenMP的新手,只了解些基本的OpenMP指令,对性能调优方面不是很通,求大牛们指点一二啊!谢谢了
...全文
1899
14
打赏
收藏
OpenMP并行程序比串行程序慢
我最近在做一个将GA算法用OpenMP框架并行化的程序,但在并行化后我发现我的并行程序跑的比串行程序还慢,当我把大部分for循环进行并行化处理后,发现并行程序比串行程序慢了一倍多,自己检查各并行域,没有发现存在数据竞争的情况,所以很郁闷(我使用的编译器是gcc)。在OpenMP并行化中,除了数据竞争外还有那些因素会影响程序的运行效率啊?小弟是OpenMP的新手,只了解些基本的OpenMP指令,对性能调优方面不是很通,求大牛们指点一二啊!谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fanyue1989
2014-01-30
打赏
举报
回复
openMP是最简单的多核/多线程并行方式,这种是data parallel.就是说每个核/线程完成的任务是一样的,如果每个核/线程需要相同的资源(data dependency)的话,并行度很低,但是核间通信消耗很高(communication overhead),这样就会比原来慢了。
beyondcj
2014-01-28
打赏
举报
回复
MagiSu
2014-01-26
打赏
举报
回复
引用 1 楼 lion_kangaxx 的回复:
OpenMP程序不是应该用mpic++来编译的么?我刚入门莫抛砖。
MPI和openmp是两回事。MPI是message passing interface,是用来进程间通信的。OpenMP是线程。
line_us
2014-01-25
打赏
举报
回复
怎么会这样呢。
huanglin03
2014-01-24
打赏
举报
回复
并不是所有的计算改成并行之后都比原来的串行快,比原来慢的情况多的是,都是不正确的并行化,并行计算有适用条件限制,在将串行计算改为并行计算之前就要考虑并行后的得失问题----并行也有开销啊
副组长
2014-01-23
打赏
举报
回复
有没有I/O等外部交换,很重要的瓶颈。
kfckaifengcai
2014-01-23
打赏
举报
回复
引用 6 楼 gordon3000 的回复:
有没有I/O等外部交换,很重要的瓶颈。
云满笔记
2014-01-23
打赏
举报
回复
今天论坛里怎么有那么多OpenMP的贴子
dfasri
2014-01-22
打赏
举报
回复
应该是出现 false sharing 了吧, 你循环的结构体数组是不是没有没有在结构体类型里面加个 CPU cacheline 大小对齐
frmqjqxrpqzg
2014-01-22
打赏
举报
回复
顶,
zsc09_leaf
2014-01-22
打赏
举报
回复
莫非是单核?? 或者你的for循环很小,创建线程的开销时间大于优化的时间
kwdhwyhs
2014-01-22
打赏
举报
回复
等等看
l4kangaxx
2014-01-15
打赏
举报
回复
OpenMP程序不是应该用mpic++来编译的么?我刚入门莫抛砖。
OpenMP
并行
程序
设计
openmp
快速入门,简单的介绍了
openmp
的用法,一目了然
OpenMP
并行计算
程序
设计基础
OpenMP
是由The Board of the
OpenMP
Architecture Review Board(ARB)提出的一套用于共享内存并行系统的多线程
程序
设计标准。目前,
OpenMP
仅支持C、C++和Fortran语言。由于
OpenMP
是一种共享存储的标准,所以在非共享存储系统上不能使用,如集群(Cluster)(目前在非共享存储系统上并行主要采用MPI)。简而言之,
OpenMP
就是一种多线程
程序
设计的标准,适合在个人计算机上进行并行计算。它提供了对并行算法的抽象描述,
程序
员只需在源代码中加入专用的pragma来指明,编译器将自动将
程序
进行并行。 主要内容: 一、一个简单的
OpenMP
例子 1 二、
OpenMP
概述 5 三、并行数目与并形体对运行效率的影响 8 四、求π例子 13 五、循环结构的并行 17 1、范围条件 17 2、shedule条件 22 3、threadprivate指令 24 六、分段并行 25 七、嵌套并行 29 八、
OpenMP
中的常用函数 33 1、设置线程数目 33 2、获取线程数目 33 3、获取最多线程数目 33 4、返回线程ID 33 5、获取
程序
可用的处理器数目 33 6、获取时间 34 7、是否处于并行中 34 九、同步 35 1、互斥同步 39 2、事件同步 42
MPI与
OpenMP
并行计算的实验报告及源
程序
MPI与
OpenMP
的一些并行计算代码和实验报告
MPI和
openMP
并行计算-冒泡排序
MPI和
openMP
并行计算-冒泡排序
实现(
串行
,
openmp
、mpi、
openmp
+mpi)快速排序算法,并作出时间对比图
题目描述:实现一种或多种并行排序算法。 要求: (1)使用MPI、
OpenMP
、MPI+
OpenMP
编写上述
并行
程序
。 (2)使用VTune等工具对
程序
进行瓶颈分析和优化。 (3)提交
程序
源代码、变量和语句的详细说明。 (4)在实验报告中通过图表说明CPU
串行
程序
和三种
并行
程序
在各种规模的运行时间。 (5)(选做)在实验报告中通过图表说明三种
并行
程序
使用不同的数据分配方法在各种规模的运行时间。 设计思路 步骤一: 主要采用快速排序实现(
串行
,
openmp
、mpi、
openmp
+mpi)排序算法,所需环境为VS2019+
openmp
+mpi,cmd命令 (1)完成了CPU
串行
程序
和三种
并行
程序
在各种规模的运行,并作出时间对比图 (2)完成了
串行
,
openmp
使用不同的数据分配方法在数组规模为400万的运行,并作出时间对比图。 步骤二: 用vs工具对
程序
进行瓶颈分析 自己写的作业,真实跑出来的,环境配置需要自己弄哦!!个人感觉写的也算是比较全的 预览:https://img-blog.csdnimg.cn/b97cc6cec08b4fd9ba79abe446037f86.png
英特尔边缘计算技术
568
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章