Adresse de la fonction de l'appareil dans différents appareils?


0

Je voudrais passer l'adresse d'une fonction de périphérique à un noyau, ce qui peut être fait selon this post. Cependant, je me demande si, lorsque j'ai plusieurs appareils, les adresses sont spécifiques à un appareil donné? Dois-je garder une trace des adresses de chaque fonction sur différents appareils?

2

Oui, les adresses sont spécifiques à un périphérique donné. Il n'y a aucune garantie que les adresses seront les mêmes entre deux appareils. (Une simple modification du code dans la réponse à laquelle vous avez lié peut le prouver, sur un système avec 2 GPU non identiques.)

Si vous passez en revue divers mécanismes pour déterminer les adresses de fonction d'appareil ou les pointeurs de fonction, vous découvrirez qu'ils tous dépendent de la découverte sous une forme quelconque via le code de l'appareil. Il n'est pas possible de découvrir directement une adresse de fonction __device__ dans le code hôte.

Par conséquent, cela ne devrait pas vous poser de problème pour chaque périphérique, car la reconnaissance doit être effectuée appareil par appareil.

  0

Merci Robert! Quels sont les autres mécanismes de détermination des adresses auxquelles vous pensiez? 11 sept.. 152015-09-11 03:02:11

  0

[Cette réponse] (http://stackoverflow.com/questions/31057870/passing-host-function-as-a-function-pointer-in-global-or-device-function/31058123#31058123) liens vers quelques-uns exemples, autres que celui que vous avez déjà lié. 11 sept.. 152015-09-11 04:03:11

  0

Merci Robert! J'ai essayé plus d'expériences sur ceci et ai eu plus de questions ici http://stackoverflow.com/questions/32534593/behavior-of-pointer-to-device-functions. Si vous avez le temps, pourriez-vous jeter un coup d'œil? Je vous remercie! 12 sept.. 152015-09-12 02:35:10