设备内存空间中的 cuda 程序内核代码
Posted
技术标签:
【中文标题】设备内存空间中的 cuda 程序内核代码【英文标题】:cuda program kernel code in device memory space 【发布时间】:2012-04-21 23:32:46 【问题描述】:有什么办法可以查出,gpu(设备)内存中内核代码(执行)占用了多少内存? 如果我有 512 MB 设备内存,我怎么知道有多少可分配? 视觉分析器可以显示这些信息吗?
【问题讨论】:
内核代码,AFAIK,永远不会驻留在设备数据内存中。 当一个 c 程序被执行时,这发生在 ram 中。我认为可以安全地假设在 gpu 上执行的代码部分驻留在那里。我并不是要粗鲁,但我想要一个更广泛的答案。如果不在数据存储器中,那么在哪里? 其实我不知道,但与 CPU 不同,GPU 显然是哈佛架构而不是冯诺依曼架构。 【参考方案1】:程序代码占用的内存很少。 CUDA 上下文的其余部分(本地内存、常量内存、printf 缓冲区、堆和堆栈)使用更多。 CUDA 运行时 API 包括 cudeGetMemInfo
调用,它将返回代码可用的空闲内存量。请注意,由于碎片和页面大小的限制,您将无法分配内存的每个最后一个空闲字节。最好的策略是从最大值开始,然后递归地尝试分配连续较小的分配,直到获得成功的分配。
您可以在my answer 中看到类似问题的更完整的设备内存消耗解释,
【讨论】:
以上是关于设备内存空间中的 cuda 程序内核代码的主要内容,如果未能解决你的问题,请参考以下文章