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);
}
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