找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 107|回复: 3

请问下 GPU的内存分配耗时间嘛

[复制链接]
发表于 2019-1-7 16:15:12 | 显示全部楼层 |阅读模式
GTC
答:
手册的原话:
(1)一般情况应用直接就即可
(2)非常频繁的较小的分配/释放过程,建议自行申请一次较大的显存,然后自行实现heap管理。

(或者如果分配大小是固定的。也可以简单的实现一个重用,而不是调用cudaMalloc之类的分配)
但是注意:
(1)第一次调用的Runtime API函数如果是显存分配, 往往需要较长时间
(2)有ECC的卡,初始化会更长时间(特别是Linux系统,如果你没有设定驱动驻留的话)。因为多了一个清理显存的过程。

不过第一次往往很多人都知道,不算计在内。

回复

使用道具 举报

发表于 2019-1-7 16:52:40 | 显示全部楼层
Jetson TX2
pickou 发表于 2019-1-7 16:23
说得比较全面了,确实是第一次调用Runtime API会很耗时,话说这个耗时会随着显存分配量的增长怎么变化呢, ...

如果某次cudaMalloc*()会触发隐式runtime初始化,则初始化的耗时无固定公式可以计算。NV也不公布相关信息。而后续的cudaMalloc往往较快。

但是一般的,人们也不关心这个时间(你应当关心的是后续的kernel运行之类的时间)。毕竟很少有人运行一个CUDA应用,每次启动后,就执行一个操作就立刻结束;然后再次启动,再次执行第二个操作,然后再次结束。它总是会持续的运行的。


这就如同你不会开机,打开Word(开机和打开Word的时间等于初始化了),输入一个字立刻保存关机。然后再次开机再次输入一个字再关机。正常你总是开机(1分钟),打开Word(3秒钟),打上5000个字,然后保存,关机的。随着你的输入的字数越多,则平均每个字折合的初始化时间(开机打开Word)的时间越少。

请楼主三思。

PS: 你不能通过上去分配一个小块闲置显存来消除这种隐式自动的Runtime初始化的。

回复 支持 1 反对 0

使用道具 举报

发表于 2019-1-7 16:23:53 | 显示全部楼层
Tesla P100
说得比较全面了,确实是第一次调用Runtime API会很耗时,话说这个耗时会随着显存分配量的增长怎么变化呢,我试了下,好像显存分配的越多,那就越耗时,感觉这个Runtime API的耗时不是固定的。那么能否通过一开始分配一个小的闲置的显存块来消除这种影响呢。
回复 支持 反对

使用道具 举报

发表于 2019-1-7 17:06:48 | 显示全部楼层
多谢,明白了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

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