【问题标题】:how to find the storage device (CPU or GPU) of data?如何找到数据的存储设备(CPU 或 GPU)?
【发布时间】:2017-12-25 02:26:16
【问题描述】:

我写了一个在 GPU 上计算的函数,然后我得到了一些数据并将它们转换为 python numpy.ndarray 形式。有什么方法可以检查数据的存储设备(CPU或GPU)吗?

我使用minpy支持GPU并行化得到一个array.ndArray类型的数组,应该保存在GPU内存上,然后我使用asnumpy函数将其转换为numpy数组形式。现在我想知道是否有办法找到转换后的 numpy 数组数据在哪里。

【问题讨论】:

  • 这是一个奇怪的问题,因为 CPU 和 GPU 是处理器单元 (PU),而不是存储设备 (SD)。您能否提供一些上下文,也许是一些代码,用于您想要实现的最小、可重现的示例?
  • @PauloScardine 也许他们的意思是 GPU 上的视频内存?
  • 也许检查数据类型:arr.dtype,其中arr 是数据。
  • @juanpa.arrivillaga 你认为他想知道某个 Python 对象是存储在主板的 RAM 内存中还是存储在视频板的专用 RAM 内存中?这是一个很长的镜头,OP真的应该用一些上下文来更新这个问题。也许最重要的问题是:为什么 OP 关心这个?
  • @PauloScardine 我试图在我的解释中保持慈善。 OP 确实更新了,现在我认为这实际上可能是他们的意图。还不是特别清楚。

标签: python numpy gpu


【解决方案1】:

我认为这是不可能的。在您的情况下,我认为它存储在主机(cpu)上。较新版本的 Cuda (https://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/) 会透明地将内存从 gpu 转移到 cpu,反之亦然,具体取决于您是从 cpu 还是 gpu 访问内存。如果您从 cpu 访问存储在 gpu 上的内存,旧版本可能会给您带来访问冲突。我的猜测是,当您成功将数据转换为 numpy 数组时,它现在存储在主机 (cpu) 上。如果内存是用 Cuda 分配的,则检查原始指针可能会起作用。在这种情况下,cudaPointerGetAttributes 可以为您提供此信息。

如果您可以从 python/numpy 访问它,它肯定存储在主机 (cpu) 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多