2017-07-19 109 views
-3

我寫了一個計算在GPU上的函數,然後我得到了一些數據並將它們轉換爲python numpy.ndarray形式。有沒有一種方法可以檢查數據的存儲設備(CPU或GPU)?如何找到存儲設備(CPU或GPU)的數據?

我使用了支持GPU並行化的minpy來獲取應該保存在GPU內存中的array.ndArray類型的數組,然後我使用asnumpy函數將其轉換爲numpy數組形式。現在我想知道是否有方法可以找到轉換的numpy數組數據的位置。

+3

這是一個奇怪的問題,因爲CPU和GPU是處理器單元(PU),而不是存儲設備(SD)。你能提供一些背景知識,也許有一些代碼可以爲你想要達到的最小,可重現的例子? –

+0

@PauloScardine或許他們是指GPU上的視頻內存? –

+0

也許檢查數據類型:'arr.dtype',其中'arr'是數據。 – Divakar

回答

0

我不認爲這是可能的。在你的情況下,我認爲它存儲在主機(CPU)上。較新版本的Cuda(https://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/)會根據從cpu或gpu訪問內存的情況,將內存從gpu透明地移動到cpu或反之亦然。如果從cpu訪問存儲在GPU上的內存,舊版本可能會導致訪問衝突。我的猜測是,由於您已成功將數據轉換爲numpy數組,現在它存儲在主機(cpu)上。如果內存與Cuda分配,檢查原始指針可能會工作。在這種情況下cudaPointerGetAttributes可以給你這個信息。

如果您可以從python/numpy訪問它,它肯定存儲在主機(cpu)上。

相關問題