【问题标题】:cuda program kernel code in device memory space设备内存空间中的 cuda 程序内核代码
【发布时间】:2012-04-21 23:32:46
【问题描述】:

有什么办法可以查出,gpu(设备)内存中内核代码(执行)占用了多少内存? 如果我有 512 MB 设备内存,我怎么知道有多少可分配? 视觉分析器可以显示这些信息吗?

【问题讨论】:

  • 内核代码,AFAIK,永远不会驻留在设备数据内存中。
  • 当一个 c 程序被执行时,这发生在 ram 中。我认为可以安全地假设在 gpu 上执行的代码部分驻留在那里。我并不是要粗鲁,但我想要一个更广泛的答案。如果不在数据存储器中,那么在哪里?
  • 其实我不知道,但与 CPU 不同,GPU 显然是哈佛架构而不是冯诺依曼架构。

标签: c++ linux memory cuda


【解决方案1】:

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

您可以在my answer 中看到类似问题的更完整的设备内存消耗解释,

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2011-07-29
    • 2012-06-15
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多