2012-04-09 67 views
2

有没有什么办法可以找出有多少内存占用gpu(设备)内存中的内核代码(执行)? 如果我有512 MB的设备内存,我怎么知道有多少可用的分配? 可视化分析器显示此类信息吗?cuda程序内核代码在设备内存空间

+0

内核_code_,据我所知,从来没有存在于设备数据存储器。 – leftaroundabout 2012-04-09 15:58:56

+0

当一个c程序执行时,这发生在内存中。我认为可以安全地假设在gpu上执行的代码的一部分驻留在那里。我不是故意粗鲁,但我想要一个更广泛的答案。如果不在数据存储器中那么在哪里? – amanda 2012-04-09 16:04:28

+1

实际上我不知道,但是与CPU不同,GPU显然比冯诺依曼的哈佛架构要好。 – leftaroundabout 2012-04-09 16:19:40

回答

1

程序代码占用的内存很少。 CUDA上下文的其余部分(本地内存,常量内存,printf缓冲区,堆栈和堆栈)使用更多。 CUDA运行时API包括cudeGetMemInfo调用,它将返回可用于您的代码的可用内存量。请注意,由于碎片和页面大小限制,您将无法分配内存的每个最后一个空闲字节。最好的策略是从最大和递归的尝试开始分配连续较小的分配,直到获得成功的分配。

你可以看到设备内存消耗的更全面的解释在my answer沿着类似的路线前面一个问题,