同一个cuda程序在不同的电脑和显卡运行使用显存不一样

  • 8 replies
  • 1851 views
在VS2012上运行一个cuda程序,1080显卡使用的显存达到2400M,而在另一台电脑使用960M显卡,显存才使用600M,差距这么大是什么原因呢?

(无标题)
« 回复 #1 于: 十一月 12, 2017, 11:17:46 pm »
是什么时候的使用率   初始化的时候显存占有多少呢

(无标题)
« 回复 #2 于: 十一月 13, 2017, 10:44:11 am »
是什么时候的使用率   初始化的时候显存占有多少呢

程序运行的整个过程

*

sisiy

  • *****
  • 217
    • 查看个人资料
(无标题)
« 回复 #3 于: 十一月 15, 2017, 02:35:09 pm »
程序运行的整个过程

因为两种卡 SMX 数量不同,使用的显存数量会与 SMX 有关系

(无标题)
« 回复 #4 于: 十一月 15, 2017, 09:07:03 pm »
因为两种卡 SMX 数量不同,使用的显存数量会与 SMX 有关系

那这个硬件原因没办法改了吗?另外一个问题是我执行某个核函数,突然显存使用量急增几百M,但是这个核函数里只定义了一些数组,并没有几百M那么大。

Re:
« 回复 #5 于: 十月 13, 2020, 05:10:56 pm »
因为两种卡 SMX 数量不同,使用的显存数量会与 SMX 有关系

您好,想和您请教一下为什么使用的显存数量会与 SMX 有关系?他们之间是什么样的关系?假如一个cuda程序使用cudamalloc只申请了1gb的显存,那么在不同显卡上实际使用的显存数量会不一样吗?我在实际的应用中也遇到了类似的问题,望指教,十分感谢!

Re:
« 回复 #6 于: 十月 14, 2020, 01:04:43 pm »
因为两种卡 SMX 数量不同,使用的显存数量会与 SMX 有关系

你好, 我们在工作实践中, 并未发现cudaMalloc()的固定分配, 会随着SM数量而成正比的现象.

这是我们之前的工作失误, 实际的分配大小, 是程序员(你)完全可控的.
在程序员指定了要求的大小的情况下, 并不存在能自动扩大到SM倍数那么大小的情况.
这点NV的文档是正确无误的, 本论坛2017年冬的说法是错误的.

我为我同事的错误言论在此表示歉意.

Re:
« 回复 #7 于: 十月 14, 2020, 01:49:08 pm »
你好, 我们在工作实践中, 并未发现cudaMalloc()的固定分配, 会随着SM数量而成正比的现象.

这是我们之前的工作失误, 实际的分配大小, 是程序员(你)完全可控的.
在程序员指定了要求的大小的情况下, 并不存在能自动扩大到SM倍数那么大小的情况.
这点NV的文档是正确无误的, 本论坛2017年冬的说法是错误的.

我为我同事的错误言论在此表示歉意.
您好,如果排除cudaMalloc的原因,cufftPlan2d类似这种函数使用同一cuda版本编译在不同型号的显卡上运行会出现显存使用量不一致的问题吗,有这种可能存在吗?

Re:
« 回复 #8 于: 十月 14, 2020, 03:04:22 pm »
您好,如果排除cudaMalloc的原因,cufftPlan2d类似这种函数使用同一cuda版本编译在不同型号的显卡上运行会出现显存使用量不一致的问题吗,有这种可能存在吗?

(1)cuFFT的2D Plan, 可能会最大使用的存储器容量, 取决你指定的x/y大小, 和数据类型. 但最小会使用的数据量未知, 它是NV提供的黑箱.
(2)因为cuFFT是作为二进制的库提供的, 所以只存在链接的过程, 并不存在"同一版本的CUDA下编译"的问题. 而链接只能保证特定的cuFFT版本号. 至于cuFFT的指定版本, 在不同的显卡下使用的显存容量变化, 这个有可能不一样, 但最大取决于你的x, y和数据类型, 这个应当是固定的.