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

时间:2015-10-14 00:52:14

标签: cuda malloc gpu

我需要动态分配GPU全局内存的大部分,比方说64 MB,这需要花费很多时间;分配完成后,将开始向已分配空间发送副本。我想知道是否可以在较小的块(例如1 MB)中分配64 MB并在每个分配的块上启动异步复制?请注意,我希望最终分配的空间是连续的。

另一个问题,没有异步cudaMalloc或任何等效的东西,对吗?

1 个答案:

答案 0 :(得分:2)

  

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

不,这是不可能的。您无法控制分配所在的地址空间中的位置。无法请求位于特定地址的分配,或与另一分配相邻的分配。在这方面,行为和能力与主持人malloc非常相似,主持人cudaMalloc也没有这些能力。

  

另一个问题,没有异步cudaMalloc或任何等效的东西,对吗?

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