本帖最后由 hyenax1950xtx 于 2012-9-29 15:15 编辑
hyenax1950xtx 发表于 2012-9-29 14:40 ![]()
单机就算过了1.5G,也不会这么轻易就爆带宽,最多性能下滑严重而已
就是多开网游会这样,不过我经常多开 ...
@flhssnake
debug过程进行的非常艰难,过程曲折但原因其实却很简单。
樟树提供的是经过4次甚至5次修改之后的代码,本来所有动作都没有变化,只有.cu中塞显存的方式,开放的控制方式以及输出结果的形式发生了变化,但却产生了3种完全不同的结果。
首先,在开始的代码中,测试结果反应没有任何带宽问题,无论单spacer还是多spacer分配,只要在塞满预定容量的显存之后再塞入64M数据,无论550Ti,660Ti还是670/680,在爆显存之前都没有任何的显存带宽下降,这个结果大家都看到了。
接下来,新版本的程序将写入方式变成了连续分配32M显存直至显存填满,在这个测试过程中出现了半带宽下降和不能解释的随机带宽下降,这个的结果大家也都看到了。
再后来,最终版本的程序在继续维持写入方式不变的前提下获得了后1/3显存区域出现1/3带宽的现象。但660Ti分配32M显存的次数只有29次,也就是说代码只用900多M显存就塞爆了2G的空间。我们姑且不论樟树以及我对内存存储图景的认识谁才是正确的,在这种情况下樟树是如何能够将待测数据塞进他所要塞进的那几颗显存“地址靠后”的颗粒(事实上这本身就没有可能做到,我们暂且先按照代码愿意的‘高位地址对应靠后的大容量颗粒’的事情存在而认为它可以做到吧,现在这种对应明显很明显并没有达成)的呢?
接下来,.cu中明确规定了低于512M显存的显卡将无法运行,但只有GT210却顺利完成了测试并且取得了明显不是PCIE带宽的结果,这结果我也公布了。在此基础上,1.5GB/192bit的非公版GTX460同样出现了后1/3区域显存带宽下降到1/3的情况,它也非对称了么。
我在QQ上询问樟树,获得的答案是“反正你测到那个结果就对了,GT210跑不正常我可不管。”
樟树对半带宽的解释是“因为测试进行的是copy,读写各半,读带宽跟写带宽有1:3的差距,我知道怎么做了”。然后接下来,呈现给我们的关于半带宽~1/3带宽的解释则变成了“之前地址被分配到了满带宽的区间,于是带宽只衰减了一半”。
还有更多的问题,比如你到最后在QQ上也没有给我说明atoi以及为什么会出现特定的带引号的step的含义,那个奇怪的头文件名在4.2.9的SDK中也不曾找到,那么多的if else其中还存在着明显没有发挥作用的部分,这些问题都没有答案。程序中开头定义的那个函数的真正内容也仅存在于.h中,我们无法看到。
因为这些情况,我需要重新debug程序,找出其中的问题以及这些问题的答案,改进可能的错误并且让这个实验呈现明确的普适性。但是你只提供了.cu。
换句话说,我们只知道程序规定我们做了些什么,这程序的真正在做什么,我无法洞悉。
因为我是代码苦手,所以按照时间最简原则,我索要.h直接进行debug明显是最快的方案。我不敢保证我得debug一定正确,但起码我可以知道你的程序究竟做了些什么,代码是不是确实按照你的想法进行着。但最终我并没有得到可以被编译的.h文件。樟树最开始以,lib不同或者环境不同等等不太靠谱的事为由而不提供.h,我想退而求其次获得流程图并以此外加.cu和描述来复现代码,结果同样未果。在经过一番努力争取之后,樟树最终提供了一组带lib和.h的文件,但这些文件至今为止在4.0和4.2.9的SDK下都无法编译……
目标式的测试过程和目标式的代码是两个不同的概念,一个测试如果在存在各种明确的bug,对各种显卡也不存在普适性,甚至存在各种有问题的代码,为的只是得到一个被寄予厚望的结果,即便这结果除了数字之外没有说得通的地方,这意味着什么呢?
本来我是打算以此为PCI的最后一贴,在彻底完成之后再向大家展现结果的,接着离开这个充满了苍蝇的地方的。我原本的计划是如果最终实在无法获得任何源代码或者可用的源代码,我就自行寻求帮助并复现整个过程,以便完成测试同时针对测试中出现的PCIE带宽等确定存在。这一过程非常缓慢,而且需要更大量的协助才能实现,所以我在获得最终结果之前都没有出现并且对之前的测试结果做更多的评价。
但现在,这最后一贴似乎要提前到来了。
整个测试的过程的奇特,对存储体系图景的展示以及各种人与人之间的冲突,在这贴中都已经被表现的淋漓尽致了。我不希望把所有人都想象成坏人,但苍蝇的一句“走好不送”,以及所要.h和流程图过程的各种恳求得不到回应,各种疑点解释的缺陷以及强烈的目的性,让我对整件事都有些失去信心了……
我感谢樟树并且一直在感谢他,所以即便每天写到后半夜之后还要强打精神跟各种error较劲,我也依旧在牺牲自己为数不多的时间努力dubug或者重新生成代码,以示我对樟树的尊重。但最终,这事情的结局几乎已经可以肯定将会是我重新编译一段新的“与樟树的目的相同过程也一样”的代码来复现各种现象了。
这种代码放上来,相信对于苍蝇们来说也是没有任何意义的,我现在能说出上面这些话,到时候苍蝇们不会全文替换然后照着嗡嗡么?
如果我最终完成了编译,我会把结果,对代码的理解以及可能存在的代码修改说明和意见交给樟树,如果没有完成编译,我同样会将我新生成的程序的全部内容以及测试结果交给樟树。至于他会怎么处理这些东西,那就与我无关了。还是那句话,我是代码苦手,所以这个过程也许会很慢,但我会做的。 |