如何找到数据的存储设备(CPU或GPU)?



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

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

我认为这是不可能的。在您的情况下,我认为它存储在主机 (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(上。

最新更新