![]() |
1
5
我发现了一篇文章,其中一位CS研究人员使用微基准测试在费米设备上对块调度器进行反向工程: http://cs.rochester.edu/~sree/fermi-tbs/fermi-tbs.html 我修改了他的代码,使其在我的GPU设备(GTX 1080,带有Pascal GP104 GPU)上运行,并随机化运行时。 方法
GTX 1080由4个图形处理集群(GPC)和5个流式多处理器(SM)组成。每个GPC都有自己的时钟,因此我使用了链接中描述的相同方法来确定哪些SMs属于哪个GPC,然后减去固定偏移量,将所有时钟值转换为相同的时区。 后果对于一维块网格,我发现块确实是按连续顺序启动的:
我们有40个块立即开始(每个短消息2个块*20个短消息),后续块在前一个块结束时开始。
对于二维网格,我发现相同的线性序列顺序
注:我在给这些情节贴标签时打了一个很糟糕的错别字。“threadIdx”的所有实例都应替换为“blockIdx”。
结论对于一维网格,这些结果与Pai博士在链接的writeup中报告的结果相匹配。然而,对于二维网格,我没有发现任何证据表明在块执行顺序中存在空间填充曲线,因此这可能在费米和帕斯卡之间的某个地方发生了变化。 当然,通常的基准测试警告适用,并且不能保证这不是特定于特定处理器模型的。 附录以下是显示随机运行时与固定运行时结果的曲线图,供参考:
事实上,我们在随机运行时中看到了这种趋势,这让我更加相信这是一个真正的结果,而不仅仅是基准测试任务的一个怪癖。 |
![]() |
2
2
是的,这肯定是有关联的(尽管当然不能保证)。
你最好在你的设备上试用一下。您可以使用
我使用了48K的共享内存来让结果更有趣——你应该用它的实际启动配置来代替你感兴趣的内核。
你看,确实有很强的相关性。 |
![]() |
Jacob Chang · 关于树约简中共享内存的问题 2 年前 |
![]() |
yuanyesjtu · CUDA gpu矢量[重复] 6 年前 |
![]() |
noobie2023 · 使用CUDA的前缀和 6 年前 |
![]() |
user3821901 · CUDA协作组:链接错误 6 年前 |
![]() |
Vandana · 将原始数据转换为推力中的复数向量 6 年前 |
![]() |
Farzad · 序列化CUfunction对象 6 年前 |
![]() |
Vandana · 在以下矩阵副本内核中合并访问 6 年前 |