社区
英特尔边缘计算技术
帖子详情
我的优化报告和源代码
housisong
2007-01-20 04:03:59
英特尔最近举办了一次多核平台编码优化大赛,我也参加了这次比赛;大赛代码提交阶段已经结束,所以也可以公开自己的优化过程;
源代码和详细的优化说明:
http://blog.csdn.net/housisong/archive/2007/01/20/1488465.aspx
我实现了很多个版本(包括很多失败的版本,还有很多想到的但没有空余时间去实现的方案;这部分的补充文章还没有完成),文章只介绍了我的提交过程中的优化的主线;
...全文
1032
22
打赏
收藏
我的优化报告和源代码
英特尔最近举办了一次多核平台编码优化大赛,我也参加了这次比赛;大赛代码提交阶段已经结束,所以也可以公开自己的优化过程; 源代码和详细的优化说明: http://blog.csdn.net/housisong/archive/2007/01/20/1488465.aspx 我实现了很多个版本(包括很多失败的版本,还有很多想到的但没有空余时间去实现的方案;这部分的补充文章还没有完成),文章只介绍了我的提交过程中的优化的主线;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyingdog
2007-01-21
打赏
举报
回复
为什么说对于我的代码应该有效?
的确像是在拼体力活。太累了。
housisong
2007-01-21
打赏
举报
回复
其实这次的竞赛还是比较简单的;
最优方案路径很多人可能都能一眼看出来; (我走了一个弯路,跑去用代码的复杂性换取内存的顺序读取,后来发现,这完全没有意义:) 不过对于flyingdog的代码应该有效)
还是喜欢那种有一定复杂性的题,允许自己设计算法的那种:) ,但问题也不能太过复杂(时间耗不起)
拼代码级的优化好像在干体力活,呵呵
huanyun
2007-01-21
打赏
举报
回复
感觉housisong(HouSisong) flyingdog(flyingdog)以及我自己的优化方式很像啊
都是_mm_rsqrt_ps一次float迭代 一次double迭代
^_^
甚至我和housisong(HouSisong)的线程任务分配都很相似是根据CPU个数动态计算的
赖勇浩
2007-01-21
打赏
举报
回复
vc6都支持的,只不过你需要下载相应的SP包而已。
flyingdog
2007-01-21
打赏
举报
回复
哦。intel的文档中有对应的函数形式我知道。
但是我一直以为这个是icc特有的。
没想到vc2005也支持。
sjjf
2007-01-21
打赏
举报
回复
mark
茶禅如水
2007-01-21
打赏
举报
回复
谢谢了,呵呵
flyingdog
2007-01-21
打赏
举报
回复
to zidongli
有关我的程序的并行化说明,请看
http://blog.csdn.net/flyingdog/archive/2007/01/21/1489183.aspx
huanyun
2007-01-21
打赏
举报
回复
试过啊 不过非常慢 4秒左右
很多时间都在线程切换上了
茶禅如水
2007-01-21
打赏
举报
回复
我的是单核的,1个进程跑2个线程,
用SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS);就死机了几乎,因为没反应了。
你的程序在我这上面只能跑1个线程,呵呵!
不知道是不是不能线程数多于cpu数
huanyun你有把你的程序改成3个或更多试验一下吗?
huanyun
2007-01-21
打赏
举报
回复
死机估计是线程调度的问题
我之前也没用这个 后来发现开的软件多了就慢好多
我就加上了 SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS);
一直也没有发现死机.
flyingdog
2007-01-21
打赏
举报
回复
但是我觉得整个r数组才20来K,对于L1 cache 32K来说,可以算好几乎所有的数据都在L1 cache中。而对于L1 cache的访问,酷睿 2每次访问128bit,延迟都是3周期,写入是2周期。写入可以进去store buffer,所以实际这种强度的写入不占用周期数。读取也因为浮点加和乘耗费了大量的周期,真的到要用数据的时候都已经准备好了。而且酷睿 2支持6条还是8条正向(指针增加)访问的cache 预取。
到是当一个核计算完r数组,另外一个核要用时。即数据在原来核的L1 cache中,并且是改写状态。在酷睿 2的cache结构上,那种访问想访问内存一样。需要几十个周期。
茶禅如水
2007-01-21
打赏
举报
回复
huanyun 和 housisong 都把那段pow汇编实现了,而flyingdog没有
在icc下pow可以自动向量化,是使用了SSE2,其实达到了同样的效果
我用Vtune看了flyingdog的程序,2个线程分配的极好!有什么经验啊?!
huanyun使用了SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS);
我用了这个参数,REALTIME_PRIORITY_CLASS
机器就死机了,实时用不好很危险啊!呵呵,不过你的程序很稳定,能介绍一下吗?
茶禅如水
2007-01-21
打赏
举报
回复
huanyun
housisong
flyingdog
学习了你们的代码,很有收获。
如果用icc来编译你们的代码,我想速度其实不差多少在0.0x,呵呵
不知有没有用vc8来编译你们的代码
huanyun
2007-01-21
打赏
举报
回复
转换
double r[DIMS][NPARTS];
double r[NPARTS][DIMS];
应该有一定效果吧!
我也花了不少时间在这上面
housisong
2007-01-20
打赏
举报
回复
"编译器:Visual Studio 2005支持
#include <emmintrin.h>
_mm_sub_pd
之类的?"
恩,vc2005编译器支持; icc也支持;
你查intel的汇编指令文档的时候,都会告诉你对应的函数调用形式;
housisong
2007-01-20
打赏
举报
回复
"可惜没看到你结合Intel提供的那些工具啊"
我的AMD CPU 啊:(
pipilu1984
2007-01-20
打赏
举报
回复
优化效果很不错
可惜没看到你结合Intel提供的那些工具啊
CruelYoung123
2007-01-20
打赏
举报
回复
学习
flyingdog
2007-01-20
打赏
举报
回复
问题:
编译器:Visual Studio 2005支持
#include <emmintrin.h>
_mm_sub_pd
之类的?
加载更多回复(2)
图书管理系统
源代码
(java版)
代码已
优化
,精简高效,适合初、中级学员学习参考,其功能图如下: 菜单栏 ——文件 ————退出 ——管理 ————图书管理 ——————图书入库 ——————图书编辑 ——————图书删除 ————借阅管理 ...
MATLAB 经典程序
源代码
大全
本资源经过数模之后总结的一些经典代码。其中函括 1、中国大学生数学建模竞赛题解 2、演示程序 3、微积分和微分方程 4、图形 5、随机模拟和统计分析 6、数学规划 7、数据拟合 8、离散
优化
9、方程求根 10、时间序列...
声波通信
源代码
(改进版)
该声波通信程序在上一个开源版本SinVoice版本的基础上,做了很多
优化
: * 1. 识别效率更高,几乎达到100%,完全可以达到商业用途标准,比chirp,支付宝,茄子快传等软件的识别效率更高。 * 2. 能支持更多复杂场景...
java源码包---java 源码 大量 实例
Java绘制图片火焰效果,
源代码
相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
51套经典企业网站源码(六)
0006绿色环保集团股份有限公司
优化
版 0007金属材料制品公司修正版源码 0008电气股份有限公司修正版源码 0009红色风格设备有限公司修正版源码 0010蓝色仪表配件有限公司
优化
版 0011装修公司网站系统修正版源码 0012...
英特尔边缘计算技术
566
社区成员
7,027
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章