是否可以使用较小的块在GPU全局内存上进行大的连续分配?



我需要动态分配很大一部分GPU全局内存,比如64 MB,这将花费很多时间;分配完成后,将开始对分配的空间进行拷贝。我想知道是否有可能将64 MB分配到较小的块中(例如1 MB),并在每个分配的块上启动异步副本?请注意,我希望最终分配的空间是连续的。

另一个问题,不存在异步cudaMalloc或类似的东西,对吗?

我想知道是否有可能在较小的块中分配64 MB(例如1 MB)并在每个分配的块上启动异步副本?请注意,我希望最终分配的空间是连续的。

不,不可能。您无法控制地址空间中的分配位置。没有办法请求位于特定地址或与另一个分配相邻的分配。在这方面,行为和功能与主机malloc非常相似,后者也没有这些功能。

另一个问题,不存在异步cudaMalloc或类似的东西,对吗?

没有"异步"版本的cudaMalloc。它通常会有阻塞行为,因为它正在修改GPU的地址映射。这种地址映射的修改必须在GPU上没有其他活动发生时发生(即没有内核执行,没有复制操作正在进行)。

相关内容

  • 没有找到相关文章

最新更新