首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
专题开发/技术/项目
英特尔多核软件开发
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于intel 和 vs 两个编译器,对OpenMp的效率
[已结贴,结贴人:youxia000]
加为好友
发送私信
在线聊天
youxia000
无剑无我
等级:
可用分等级:
中农
总技术专家分:
481
总技术专家分排名:
33281
揭帖率:
100.00%
发表于:
2008-08-22 09:58:00
楼主
如果我只是要使用openmp ,哪么采用这两种编译器生成的程序,在效率上有什么差别么,那个更好些?比较vs 08 sp1 和 intel 的10.1.022
另外intel的编译器除了根据cpu对编译做了优化,还有其他的方面优化么,是否还支持其他的功能
还有个 intel 推的 thread block 和omp 可以同时用么他们是什么关系
对thread block不是很了解
问题点数:
50
回复次数:
14
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-25 11:12:03
1
楼 得分:
50
引用楼主 youxia000 的帖子:
如果我只是要使用openmp ,哪么采用这两种编译器生成的程序,在效率上有什么差别么,那个更好些?比较vs 08 sp1 和 intel 的10.1.022
在Windows操作系统上,ICC很早以前的版本就已经支持OpenMP了,而VC++是从2005版本才开始的。性能上的差别,很容易自己比较得出。来回转换使用VC++的Project,或者Intel C++的Project,不受任何限制。命令行上就更简单了。 另外,可能在不远的将来,开发人员不需要考虑如何在两个 OpenMP RTL 之间选择了。原因暂时保密,请原谅。
引用楼主 youxia000 的帖子:
另外intel的编译器除了根据cpu对编译做了优化,还有其他的方面优化么,是否还支持其他的功能
Intel编译器对特定CPU的优化,通常我们称作“向量化”,其实就是尽可能多得采用处理器支持的SIMD指令。其它方面的优化,其实联机帮助手册中,已经有很详细的说明,比如对循环的优化,IPO优化,PGO优化,等等。。。
引用楼主 youxia000 的帖子:
还有个 intel 推的 thread block 和omp 可以同时用么他们是什么关系
对thread block不是很了解
论坛置顶的文章中,有Intel软件工具的技术文章,可以找到介绍TBB (Thread Building Block)的文章
http://topic.csdn.net/u/20080328/10/6ba0957d-3c5d-4fda-ae86-2b92c2a0e62f.html
简单的说,实现多线程化的方式,采用在程序代码中插入OpenMP原语(#pragma omp xxxx)的方式,是比较简单,渐进,同时和操作系统无关。所有的工作都是由编译器自动完成的。当然它对原有串行代码的改动量比较小,如果原来的算法支持数据并行,那么OpenMP比较合适
而TBB可以理解为提供了多线程化方法的C++类,它隐藏了不同操作系统之间thread实现的底层API和调用机制。多线程开发是通过调用TBB类的方法来实现,这样就能保证代码的跨平台,可移植性。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
youxia000
无剑无我
等级:
可用分等级:
中农
总技术专家分:
481
总技术专家分排名:
33281
发表于:
2008-08-26 09:10:43
2
楼 得分:
0
非常感谢如此详细的回答,测试了下,单线程就是不用omp的时候 intel 的远大于 MS的,这个就是你说的向量化了
而使用omp后,他们的相差不是很大了包含上随机的误差,他俩在我的测试例子上大概10%的相差,没明显看出那个更好,不过你说不用考虑他们之间的选择那就好了,起码选择时候省事了,我想统一后的还是能包含向量化这个技术吧
那个文章看了下,目前没有移植,跨平台需求,omp简单,够用,
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-28 12:48:45
3
楼 得分:
0
引用 2 楼 youxia000 的回复:
而使用omp后,他们的相差不是很大了包含上随机的误差,他俩在我的测试例子上大概10%的相差,没明显看出那个更好,不过你说不用考虑他们之间的选择那就好了,起码选择时候省事了,我想统一后的还是能包含向量化这个技术吧
向量化是针对指令级的优化,而OpenMP是线程级的优化,两者可以同时进行
要注意到,线程本身的创建和维护也是有开销的,还可能引入负载不均衡等性能问题,这些可能会部分抵消其它的优化效果
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ollydbg23
jordan
等级:
可用分等级:
富农
总技术专家分:
520
总技术专家分排名:
31466
发表于:
2008-08-28 13:25:59
4
楼 得分:
0
回答的真不错,受益匪浅。
在intel compiler 的CHM文档里面,对于编译器可以做何等优化,的确写得非常详细,楼主可以仔细看看,而且它还提供了测试的一些代码。
另外一个问题,我个人感觉,就是intel编译器的编译速度比较慢(我用的是9.1的编译器,环境是VC6)
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-28 14:44:07
5
楼 得分:
0
引用 4 楼 ollydbg23 的回复:
在intel compiler 的CHM文档里面,对于编译器可以做何等优化,的确写得非常详细,楼主可以仔细看看,而且它还提供了测试的一些代码。
是的,如果愿意读一读Intel编译器的联机文档,会发现其中提供了很多优化的方法和建议。 另外,在V10.0以后的版本,安装目录下还提供了很多sample code
另外,如果还知道如何生成和阅读Intel编译器的优化报告,然后对代码进行适当的改动,往往能使性能大幅提高
引用 4 楼 ollydbg23 的回复:
另外一个问题,我个人感觉,就是intel编译器的编译速度比较慢(我用的是9.1的编译器,环境是VC6)
呵呵,你提到的不是一个新问题。 原因在于,Intel编译器采用了相当多的优化算法,编译时间会有所增加。从v8.x, v9.x 到目前的v10.x,一直都在努力做到提高性能的同时,尽量不增加编译时间,但难度很大。 另外一个是,生成的可执行程序的体积也会变大,好在目前看来硬盘空间不是成为很大的问题。
此外,当您的代码还在开发和调试的阶段,尚未成型,有些比较耗时的高级优化功能(如IPO,PGO等)并不建议使用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-28 15:01:19
6
楼 得分:
0
补充说明一下,采用
OpenMP
的代码,也同样是与操作系统和硬件平台无关的。因为如何创建,维护和销毁线程的工作,完全是由编译器自动完成的. 这样就可以保证了代码的跨平台,可移植. 线程的数量, 缺省等于系统中的CPU或者核(Core)的总数
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ollydbg23
jordan
等级:
可用分等级:
富农
总技术专家分:
520
总技术专家分排名:
31466
发表于:
2008-08-28 15:11:53
7
楼 得分:
0
引用 6 楼 intel_iclifort 的回复:
补充说明一下,采用OpenMP的代码,也同样是与操作系统和硬件平台无关的。因为如何创建,维护和销毁线程的工作,完全是由编译器自动完成的. 这样就可以保证了代码的跨平台,可移植. 线程的数量, 缺省等于系统中的CPU或者核(Core)的总数
谢谢,你回答的如此详细和热情。
我怀疑您是否就是intel公司的员工,主要负责在csdn答疑解惑?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-28 15:44:05
8
楼 得分:
0
引用 7 楼 ollydbg23 的回复:
我怀疑您是否就是intel公司的员工,主要负责在csdn答疑解惑?
呵呵,看来我们的ID还不够明显。看看这里
http://subject.csdn.net/IntelMulti-core/
,你就全明白了。
很高兴能在CSDN中的“英特尔多核软件开发”子论坛中,和大家一起交流和分享。
欢迎您也多多参与,发些帖子提问也好,回答更好。我们会不定期地举办“最有技术价值的发帖”的评选活动。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
speme
speme
等级:
可用分等级:
贫农
总技术专家分:
77
总技术专家分排名:
109960
发表于:
2008-08-28 21:50:05
9
楼 得分:
0
不过,用intel的编译器会不在AMD的机子上运行比较慢?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-08-29 10:29:16
10
楼 得分:
0
引用 9 楼 speme 的回复:
不过,用intel的编译器会不在AMD的机子上运行比较慢?
您试过拿相同的代码,用不同厂家的最新版本编译器(Microsoft,Intel,PGI...),在AMD的机子上生成可执行程序,谁的性能最好吗?
好像还是用Intel的编译器更快些,呵呵。 前提是你要用对,用好编译器的优化选项
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
youxia000
无剑无我
等级:
可用分等级:
中农
总技术专家分:
481
总技术专家分排名:
33281
发表于:
2008-08-29 11:19:07
11
楼 得分:
0
多谢,找到了chm的文档和 例子了
之前都没注意,呵呵
用了几天感觉,intel的编译是要慢一点,不过在同使用omp的情况下还是intel的好,如果没有用omp,intel的好的就更明显了
我想可能是 向量化的好处吧,在问问 如果单核上 向量化还能有这么明显么,他是否也利用了多核来做单线程的程序
ps:intel公司不限制上网么,你们是领导要求的来回答问题,还是个人行为,4个三角要多少分啊
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ollydbg23
jordan
等级:
可用分等级:
富农
总技术专家分:
520
总技术专家分排名:
31466
发表于:
2008-08-30 20:59:06
12
楼 得分:
0
呵呵,这个我也很有兴趣想了解一下,大侠们讲解一下。。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
intel_iclifort
iclifort
等级:
可用分等级:
富农
总技术专家分:
1668
总技术专家分排名:
12555
发表于:
2008-09-03 11:29:14
13
楼 得分:
0
引用 11 楼 youxia000 的回复:
用了几天感觉,intel的编译是要慢一点,不过在同使用omp的情况下还是intel的好,如果没有用omp,intel的好的就更明显了
我想可能是 向量化的好处吧,在问问 如果单核上 向量化还能有这么明显么,他是否也利用了多核来做单线程的程序
我前面提到过,向量化是CPU指令级别的优化,只要使用的处理器(核)支持相应的SIMD指令,就会有非常好的效果的。这种类型的优化,和你的系统中有几个核,几个处理器无关的。
而OpenMP可以看成是线程级别的优化,即你原先的代码可能是串行的(或者单线程的),通过很少的改动,不用考虑线程创建维护的细节,就被编译器自动生成多个线程并发执行了。这样运行在多处理器(核)的系统上,性能就会对应的提升(当然不是线性的),在单核上运行也完全没有问题。
各种优化功能组合起来使用,不一定是 1+1>2。可能需要通过多次试验,找到最适合你应用的那几个。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
youxia000
无剑无我
等级:
可用分等级:
中农
总技术专家分:
481
总技术专家分排名:
33281
发表于:
2008-09-03 16:40:33
14
楼 得分:
0
哦,虽然不是一个层上的优化
但还是都要最终的影响性能的,
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友