我写了一个在GPU上计算的函数,然后我得到了一些数据并将它们转换为python numpy.ndarray形式。有没有一种方法可以检查数据的存储设备(CPU或GPU)?
我使用minpy支持GPU并行化来获取应该保存在GPU内存中的array.ndArray类型的数组,然后我使用asnumpy函数将其转换为numpy数组形式。现在我想知道是否有一种方法可以找到转换的numpy数组数据的位置。
答案 0 :(得分:0)
我认为这是不可能的。在你的情况下,我认为它存储在主机(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)上。