cuda编程,不同系统问题

是这样,代码本身就是CUDA的语法,本来就没有想着能够具有可移植性。
只是希望代码本身能够具有CUDA本身的可兼容足以啊。
那些PTX指令应该都具有自动兼容吧,WARP等概念都具有版本兼容吧,这些足够了!

:L归根结底这俩问题不都是同一个问题么。。。无非就是非合并访问引起了global的多次访问,而有效数据带宽又太低,所以还是要合并访问来提高有效数据带宽~

显然不是!田园你说的不对。

你说需要神马32*400个周期那是不对的。

考虑场景:每个线程在跨距>32B的情况下,读取4B数据,同时bypass L1, 在一种固定的L2 port宽度为32B, 固定延迟为400个周期(指SM的基本频率,不是SP的频率算的)的假想卡上。

为1个warp完成128B的数据读取。果断总延迟(到warp里的最后一个线程要求的数据就绪),是400 + 32, 而不是400 * 32, 所以你的说法是错的,而ICE的说法比较客观(略微增加).

你闭口不谈你之前的说法,却在一味的赞同ICE的说法(有效利用的带宽是128B / (32B/次 * 32次) = 12.5%)。不是勇敢的讨论行为。

另:对此文给出的场景下的有效带宽的计算方式,和profiler的计算公式以及报告结果是吻合的。无需置疑。

我不是对你的批判。而只是对真理的渴求。对的就是对的。错的就是错的。
只有这样,我和你才能一起进步。

EDIT: 将文中的“某卡”改成“假想卡", 以便拒绝某对我的不存在完全正好400周期恒定不变的卡的型号的要求。

songyong2您的回复和针对的ICE的帖子毫无关系!!你在说什么!你确信你看过ICE此帖子了么?

举个例子, 我也回复一下您的帖子:

回复:“请问您的显卡能够游泳吗?您的显卡能比菲尔普斯更有夺冠呼声么?”

神马?您看不懂?这就对了。这就是我如何感觉您的回帖的。

我建议您仔细看看ICE大在说神马,再引用,再回复。不要浪费您的网络的流量。随意粘帖或者敲入一堆内容无利于您键盘。

嘟嘟。望三思!

OK,有机会向您请教CPU优化问题。
:handshake

嗯嗯。不过我只懂某一家的CPU(无法提供其名称)。

而且我建议您不要在此论坛询问。这里是CUDAZone China!

假设没有Cache的情况下,如果warp内32个线程全部都从不同段取数据的话,那不是需要访问32次global memory?而单次global memory的访问延迟都是400-800个cycle,那32次怎么会是400+32?

因为不是第一次访存400周期完成以后才开始第二次访存,导致每次都是完全不重合的400周期。

这部分资料在哪,我以前还真没注意过这个问题~看看去~:L

因为是流水线的。

见过快递公司大车卸包裹么?

车在仓库门口,一个人在车上,一个人在车下,中间还有一帮人传递,最后一个人在仓库门口。他们接力传递,从车上往仓库里扔。

假设车上那个人每10秒捡起一个包裹,而这1个包裹从车上仍下,经过多次倒手,扔进仓库里,历时1分钟,
那么800个包裹需要多久?

是 1分钟每包裹 * 800个包裹吗?是800分钟吗?如果是,劳动检察部分可以来调理快递公_司了,因为已经超过了法定工作时间。

但实际上不是,实际上这800个包裹,因为接力流水传递,只需要800 * 10/60 + 1 = 134分钟即可。
他们只干了2个小时。而不是13个小时还多。

请田园三思。

这个应该跟带宽有关吧?应该是乘个系数吧?
400+32*coef
嗯,系数似乎正好是1.

请问这个和带宽有什么关系呢?为何系数恰好是1?

仅仅属于个人理解,不知对错,望评判:
我想数据请求有个带宽的概念吧?不是那么顺畅一个周期一个吧?
而且如果内核函数本身访存密度较高,这个系数就不是1了,而是跟代码访存密度有关与当前GPU状态有关大于1的一个值。

如上纯属个人瞎想胡猜,还望指教!

谢谢各位的帮忙!
要有好的建议,希望大家继续提出来

建议你看看张舒的那本书的那个例子。

可能跟你的需求不见得一样,但可以借鉴。
另外你的需求说得不是很清楚。