游戏开发论坛

 找回密码
 立即注册
搜索
楼主: fromhell

跪求高手指导sse

[复制链接]

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-5-3 14:24:00 | 显示全部楼层

Re:跪求高手指导sse

原来的那个程序我只是用ICC编译了一下,速度从原来的25提高到了21,而且是在没有产生任何向量化的前提下(主要是源码编写原因,编译器无法使之向量化)

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-3 22:22:00 | 显示全部楼层

Re:跪求高手指导sse

ICC 是 Intel C++ Compiler吗?哪里带有Licence的下载?试用30天的不爽,我好像搜不到。。。

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-5 21:47:00 | 显示全部楼层

Re:跪求高手指导sse

无奈的是,我用了ICC编译了以后,不仅文件变大了,而且速度还变慢了一点(郁闷,可能我是赛扬CPU的关系)

不过我修改了一下算法的一个地方,速度竟然提高了一倍!

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-5-5 23:03:00 | 显示全部楼层

Re: Re:跪求高手指导sse

dandyboy: Re:跪求高手指导sse

无奈的是,我用了ICC编译了以后,不仅文件变大了,而且速度还变慢了一点(郁闷,可能我是赛扬CPU的关系)

不过我修改了一下算法的一个地方,速度竟然提高了一倍!

优化方式没选好吧,用PGO试试。
新的代码拿来看看如何?

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-6 01:57:00 | 显示全部楼层

Re:跪求高手指导sse

很简单,把每次先检查是否是质数的部分去掉就可以了,这种方法对于num不是很大的(大概<50000000)时候,还是很有效的提高效率了的,但是当num很大的时候,就有点问题了,所以把他去掉就OK了

//if(0 == _getisprime2(p, cursor))  //注释掉这一句
                                                        _setnotprime2(p, cursor);

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-6 02:07:00 | 显示全部楼层

Re:跪求高手指导sse

另外,我把代码从过滤质数的6K+1, 6K+5倍

扩展到了过来质数的30K+1, 30K+7, 30K+11, 30K+13, 30K+17, 30K+19, 30K+23, 30K+29倍,但是由于条件判断太多,代码也超乱,不好意思给你:)
开始还出现了错误的结果,后来理了一下,正确了,但效率有损,也许把程序逻辑变得复杂本来就不是一个好的选择,虽然理论上筛选的次数是变少了,总的来说提高没有想象的多,但是还是有的。

我本来还想扩展为210K+1, 210K+11, 210K+13........,210K+199的,不过,太乱了!

我整理一下会给你的,我现在在想办法优化结构(判断太多了,有点乱,还找不到一个结构清晰而已快速的优化方案)

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-6 02:15:00 | 显示全部楼层

Re:跪求高手指导sse

还是把代码传上来吧,很乱的,等稳定了以后整理一下,呵呵

其实一开始还可以把2,3,5,7,11,13的质数倍去掉,
现在是去掉2,3,5,7,11的质数倍。我想会更快一些,筛选是从13开始,改了以后可以从15开始筛。

http://www.77studio.net/files/Source_C7.zip

8

主题

62

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2004-5-6 06:56:00 | 显示全部楼层

Re:跪求高手指导sse

Timesms) Copy memory use memcpy.
110ms   50ms    51ms
105ms   56ms    49ms
106ms   50ms    46ms
108ms   51ms    46ms
105ms   51ms    48ms
107ms   50ms    44ms
109ms   48ms    47ms
107ms   52ms    45ms
106ms   48ms    45ms
108ms   49ms    50ms
106ms   51ms    48ms
112ms   49ms    51ms
108ms   51ms    46ms
108ms   49ms    47ms
103ms   48ms    49ms
106ms   50ms    44ms
108ms   50ms    48ms
107ms   48ms    52ms
106ms   49ms    45ms
108ms   48ms    47ms
Data Size:629145600Bytes
Data Size:600MBytes
Past Time:2143ms        998ms           948ms
memcpy:0293581000 Bytes/Second  _xmm_memcpy:0630406000 Bytes/Second     Qmemcpy:
0663655000 Bytes/Second

3

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2004-5-6 15:20:00 | 显示全部楼层

Re:跪求高手指导sse

hourousha:

服了,使用ICC (PGO)优化,提高了4秒多,未优化28.1s,优化后23.x秒

代码理论上还可以进一步优化

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-5-6 18:30:00 | 显示全部楼层

Re: Re:跪求高手指导sse

dandyboy: Re:跪求高手指导sse

hourousha:

服了,使用ICC (PGO)优化,提高了4秒多,未优化28.1s,优化后23.x秒

代码理论上还可以进一步优化

嗯,能够产生质变的还是算法优化,一方面是要减小运算量,一方面是改进结构使循环易于被编译器向量化。
不过ICC确实是一个非常优秀的编译器,很省事且效率很高。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 19:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表