2017-07-19 2 views
-3

J'ai écrit une fonction calculée sur GPU, puis j'ai récupéré des données et les ai transformées en forme python numpy.ndarray. Y at-il une méthode que je peux vérifier le périphérique de stockage (CPU ou GPU) des données? J'ai utilisé la parallélisation GPU prenant en charge minpy pour obtenir un tableau avec le type array.ndArray qui devrait être sauvegardé dans la mémoire GPU, puis j'ai utilisé la fonction de asnumpy pour le convertir en un tableau numpy. Maintenant, j'aimerais savoir s'il y a un moyen de trouver où se trouvent les données de tableau numpy transformées.comment trouver le périphérique de stockage (CPU ou GPU) de données?

+3

Ceci est une question étrange car CPU et GPU sont des unités de traitement (PU), pas de périphériques de stockage (SD). Pouvez-vous donner un peu de contexte, peut-être du code pour un exemple minimal et reproductible de ce que vous voulez réaliser? –

+0

@PauloScardine peut-être qu'ils signifient la mémoire vidéo sur le GPU? –

+0

Peut-être vérifier le type de données: 'arr.dtype', où' arr' est la donnée. – Divakar

Répondre

0

Je ne pense pas que ce soit possible. Dans votre cas, je pense qu'il est stocké sur l'hôte (cpu). Les versions plus récentes de Cuda (https://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/) mélangent de manière transparente la mémoire du processeur vers le processeur ou vice versa, selon que vous accédez à la mémoire depuis le processeur ou le processeur. Les versions plus anciennes vous donneraient probablement une violation d'accès si vous accédez à la mémoire stockée sur le GPU à partir du CPU. Ma conjecture est que comme vous avez converti avec succès les données dans un tableau numpy, il est maintenant stocké sur l'hôte (CPU). La vérification du pointeur brut pourrait fonctionner si la mémoire était allouée avec Cuda. Dans ce cas, cudaPointerGetAttributes pourrait vous donner cette information.

Si vous pouvez y accéder à partir de python/numpy, il est certainement stocké sur l'hôte (cpu).