2016-12-12 5 views
2

Sur mon ordinateur, l'appel à cudeMemPrefetchAsync dans le code ci-dessous renvoie 10 (cuda error invalid device) plutôt que 0. L'installation est un ordinateur portable Alienware 17 exécutant Windows 10 avec un GPU NVidia GTX 1080 et Intel HD Graphics 530 intégré. 376.19 de NVidia (pilote mobile)).bug cudaMemPrefetchAsync sur GTX 1080 (Pascal)?

J'ai compilé pour compute_61, sm_61. Un autre utilisateur a essayé d'exécuter le même code sur une architecture Pascal (Titan X) et il a renvoyé 0 correctement. J'ai également testé cela en mode Debug et Release avec le même résultat. Des idées?

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 

int main() 
{ 
    int* data; 
    size_t len = 10; 
    cudaError_t err = cudaSetDevice(0); 
    err = cudaMallocManaged(reinterpret_cast<void **>(&data), len, cudaMemAttachGlobal); 
    err = cudaMemPrefetchAsync(data, len, 0, 0); 
} 
+0

Juste pour être plus sûr - vous obtenez l'erreur de périphérique non valide seulement après l'appel 'cudaMemAttachGlobal', pas avant, non? – einpoklum

Répondre

1

Il est connu bug confirmé par un employé NVIDIA pour ambience système Windows (voir au post botton, je

D'autre part, il y a des rapports que le code comme le vôtre fonctionnent très bien sous Linux SO, ou avec des cartes Maxwell

Je n'ai pas le même issue de vous, mais jusqu'à maintenant pas de solutions, même en utilisant CUDA 9.0 RC Mon conseil est d'utiliser l'approche de la mémoire régulière pour le moment, car il y a plus d'un an de déclaration, mais pas de correctif