POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: 樟树
打印 上一主题 下一主题

非对称显存性能带宽讨论

  [复制链接]
41#
发表于 2012-9-20 23:18 来自手机 | 只看该作者
fengpc 发表于 2012-9-20 23:03 clamshell mode和mirror function是两个独立的功能,mirror function是用过显存的一个引脚的上拉和下拉来 ...

各位大婶继续,不过小弟觉得这标题就不像是要交流来的…
回复 支持 反对

使用道具 举报

42#
发表于 2012-9-20 23:44 | 只看该作者
楼主一直没明白月虫要说明的...
在两个空间里...........
回复 支持 反对

使用道具 举报

43#
发表于 2012-9-21 00:05 | 只看该作者
楼主可能进了一个牛角尖。
这组成192bit的3个64bit MC是可以独立操作的...而数据也不会是一整块不可分割的2GB..
这就为一段时间内的各种存取并行化提供了条件...
回复 支持 反对

使用道具 举报

44#
发表于 2012-9-21 00:19 | 只看该作者
不是一个层面的对话,有些时候让人觉得好笑。
回复 支持 反对

使用道具 举报

45#
 楼主| 发表于 2012-9-21 00:45 | 只看该作者
本帖最后由 樟树 于 2012-9-21 09:56 编辑

我专门借了一块GTX550Ti, 花了45分钟改代码做了我在一楼提到的测试
另外还花了十几分钟发帖,以示我对这个问题的重视。

附件为代码,修改自CUDA SDK 4.0 例子sdk bandwidth test.


测试环境为影驰四星黑将GTX550Ti, 192bit 1GB

测试方法:
预先分配一定显存,使被测速显存被分配在较靠后地址段上。
然后测试64MB显存device to device拷贝带宽
预先分配的显存大小通过以下方法修改:
修改参数为第187行int spacerSize = sizeof(unsigned char) * 1024 * 1024 * 640;
其中640为要修改的值 测试中取值1-800

观察到现象:
取值0-400时,测得带宽稳定在71GB/s

400-480时,测得带宽不稳定,25GB/s-71GB/s之间
取值480-670,稳定在25GB/s

670以上开始out of memory不能分配

分析:
1. 显示缓冲区等已占用部分显存,大小变化,对测试有一定干扰。
2. 显存从低地址向高地址分配。
3. 预先分配大小为1-400MB时,被测速64MB内存全部被分配到低地址段。此时更接近理论带宽(98.4GB/s),可作为实测峰值
3. 400-480MB时,带宽开始降低,这是由于被测速64MB一部分获得了较高带宽,另一部分带宽较低
4. 480-670MB时,带宽降低并稳定到实测峰值三分之一左右。此时被测速64MB全部被分配到较高地址段。
5. 670MB以上时开始无足够连续区域供分配

结论:
GTX550Ti四星黑将存在一定区域带宽只有理论值三分之一左右,并且应该在较高地址段。
从尺寸上看可能为最高256MB(192bit 1GB)

展望:
GTX660Ti上可能有相同现象,待证实。
实验代码开源,可复现。欢迎提供GTX660Ti数据。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

46#
发表于 2012-9-21 02:39 | 只看该作者
这数据提供出来了,都哑口无言不说话了
回复 支持 反对

使用道具 举报

47#
发表于 2012-9-21 06:10 | 只看该作者
hd4770  how about use the last 512M before using the first 1.5G to avoid your case?  发表于 2012-9-20 23:15
无用, 请你仔细理解里面的逻辑, 无论如何, 你至少有512M的数据是存在了64bit位宽对应的显存颗粒里面, 不管早取晚取, 只要取这些数据, 带宽就上不去.
回复 支持 反对

使用道具 举报

48#
发表于 2012-9-21 06:23 | 只看该作者
我真是给你跪了, 别动不动上纲上线的, 我再把例子解释一遍, 你真想讨论就好好讨论, 带点攻击性话语无所谓, 但是你别满篇都是悲天悯人的玩意. 你倒是给解释解释啥叫你所谓的随机并行连续存储? 然后再说说你这种所谓的存储模式是怎么让那些不处于对等地位的数据诡异的飘来飘去还可以不固定在同一个物理地址上的?
------
例子解释, 形象版, 再给你配个图:
假设我有两口井, 一口井(A)口径大, 可以让两个人同时往里倒水或者打水, 另一口(B)口径小, 只能让一个人同时往里倒水或者打水 (这里口径相当于显存颗粒本身的位宽)
但是两口井的最大容量都是100桶水.
这时候你开始往井A和井B里倒水, 无论你如何操作倒水方式 (比如你可以找100个人来排队倒水, 以尽量最大化倒水的速度), 你也只能在最开始的50次 (相当于50个周期) 做到3个人同时倒水, 但是剩下50次你只能往(B)里倒, 这时候无论你倒水水平多高, 你也做不到你所谓的3人同时倒水的最大能力. 难懂?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

49#
发表于 2012-9-21 06:29 | 只看该作者
在主楼中是32bit*4 (总量1G) 的颗粒搭配 16bit*4 (总量1g)的颗粒.
所以为什么楼主说你这个和你打的靶子是一样的 (没有本质区别) 呢? 不好好理解别人的话, 自己扯来扯去说不到地方上. 不知道你在想什么.

非对称搭配的问题在于显存颗粒本身, 根本就不是控制器的事 (就像48#中那样, 控制器的能力相当于 "派人打水的能力", 再强也没用), 你就算是让那64bit对应的颗粒可以让一百个MC来艹, 当显存容量被占满时, 里面照样是有512MB的数据不能很快的存取.
回复 支持 反对

使用道具 举报

westlee 该用户已被删除
50#
发表于 2012-9-21 07:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

51#
发表于 2012-9-21 08:47 | 只看该作者
本帖最后由 xiaxin222a 于 2012-9-21 08:51 编辑
westlee 发表于 2012-9-21 07:06
是71mb还是71g?

为啥从实际游戏测试来看,这个特点对550ti的游戏性能没有明显影响呢?

按照数据后面6位小数来看,应该是71G...
单就那256M区域带宽确有瓶颈,但实际应用中极难出现前面3/4内存空间锁死不更新只使用后256M的情况,宏观来看影响被淡化了吧..
回复 支持 反对

使用道具 举报

52#
发表于 2012-9-21 09:08 来自手机 | 只看该作者
xiaxin222a 发表于 2012-9-21 08:47 按照数据后面6位小数来看,应该是71G... 单就那256M区域带宽确有瓶颈,但实际应用中极难出现前面3/4内存 ...

同意      …
回复 支持 反对

使用道具 举报

53#
发表于 2012-9-21 10:13 | 只看该作者
楼主 我的公版660ti可能到 到时候我提供数据吧 不过现在我的卡 还在路上
回复 支持 反对

使用道具 举报

54#
发表于 2012-9-21 10:14 | 只看该作者
樟树 发表于 2012-9-21 00:45
我专门借了一块GTX550Ti, 花了45分钟改代码做了我在一楼提到的测试
另外还花了十几分钟发帖,以示我对这个 ...

你太认真了,人家既然不肯接受错误虚心学习,你笑笑就好了,以后不准再“喷”大神了哦
回复 支持 反对

使用道具 举报

55#
发表于 2012-9-21 10:21 | 只看该作者
xiaxin222a 发表于 2012-9-21 08:47
按照数据后面6位小数来看,应该是71G...
单就那256M区域带宽确有瓶颈,但实际应用中极难出现前面3/4内存 ...

+1  主要是楼主提供的代码 强制写入并锁死前面高位宽空间  ,排除高位宽的干扰来测试在极端情况下的本质情况
游戏中会实时刷新的,并且释放的 所以 目前这个本质没有暴露出来




回复 支持 反对

使用道具 举报

56#
 楼主| 发表于 2012-9-21 10:46 | 只看该作者
本帖最后由 樟树 于 2012-9-21 10:47 编辑
xiaxin222a 发表于 2012-9-21 08:47
按照数据后面6位小数来看,应该是71G...
单就那256M区域带宽确有瓶颈,但实际应用中极难出现前面3/4内存 ...

对...

在1024M都被使用的情况下,按照测试出来的值,全部访问一次需要的时间是(786/71 + 256/25, 而如果全部都能达到满带宽,需要时间为(1024/71),最差情况下大概仍然有70%的性能。而考虑到计算与访存间的并行,以及显存只有前面用完后才会分配到这一段,一般不会用满,实际情况应该好一些。

而在爆显存的情况下,得到的结果是(768/71+256/4),按照PCI-E一般单向实测带宽(4GB/s-5GB/s左右),此时最差性能是19%左右。

仅考虑显存因素,而且取理论值,实际情况具体数字应该有一定差别。
回复 支持 反对

使用道具 举报

57#
发表于 2012-9-21 10:57 | 只看该作者
本帖最后由 xiaxin222a 于 2012-9-21 10:58 编辑
樟树 发表于 2012-9-21 10:46
对...

在1024M都被使用的情况下,按照测试出来的值,全部访问一次需要的时间是(786/71 + 256/25, 而如 ...

爆显存的情况下,不是0.768/71+ 0.256/25+NG/6么?


回复 支持 反对

使用道具 举报

westlee 该用户已被删除
58#
发表于 2012-9-21 11:00 来自手机 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

59#
 楼主| 发表于 2012-9-21 11:04 | 只看该作者
xiaxin222a 发表于 2012-9-21 10:57
爆显存的情况下,不是0.768/71+ 0.256/25+NG/6么?

考虑只有768MB显存,其他需要过PCI-E
回复 支持 反对

使用道具 举报

60#
 楼主| 发表于 2012-9-21 11:10 | 只看该作者
westlee 发表于 2012-9-21 11:00
实际游戏,4aa下显存占有提升200m是很正常的情况,性能是99%,和你的理论数据差距极大,我不得不怀疑你 ...

提升200MB,但是仍然未爆显存时,说明使用的显存仍然在1024MB以下。
但是具体值是未知的,是不是在768MB以下,或者是否有其他因素成为瓶颈,都是未知的。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-4-26 04:13

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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