2016-11-17 1 views
0

cudaEventRecord takes an event ID and a stream ID as parameters. La référence de l'API Runtime ne dit pas si le flux doit être associé au périphérique en cours - et je ne peux pas tester si c'est le cas car je n'ai qu'un seul GPU sur tout système auquel j'ai accès en ce moment.cudaEventRecord est-il affecté par l'identité du périphérique actuel?

Si l'on suppose qu'il doit être un cours d'eau sur l'appareil actuel:

  • ce qui se passe si elle obtient un flux sur un autre appareil?

Si l'on suppose qu'il peut être un flux sur un appareil:

  • ce qui arrive quand il obtient le (dispositif actuel) ID de flux par défaut? Après tout, les flux par défaut de tous les appareils ont le même ID (nul)?
  • Y at-il une différence de comportement selon que le périphérique est en cours ou non?
+1

des informations éventuellement pertinentes sont [ici] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#device-selection) –

+0

@RobertCrovella: Cela implique fortement la réponse à Ma première question est "non". Vois ma réponse. – einpoklum

Répondre

0

En combinant les informations de @Talonmies' answer et la Stream and Event Behavior section du CUDA C Programming Guide qui @RobertCrovella liée à son commentaire.

Le flux doit-il être associé au périphérique en cours?

Aucun, ce peut être n'importe quel périphérique. Cependant, l'enregistrement d'événement nécessite que le flux et l'événement soient associés au même périphérique.

Y a-t-il une différence de comportement selon que le périphérique du flux est actif ou non?

En général, non, mais ...

ce qui arrive quand il obtient le (dispositif actuel) ID de flux par défaut?

... le flux par défaut est une exception à cette règle. Étant donné que le flux par défaut de chaque périphérique a le même ID, l'ID nul cudaEventRecord indique va vérifier quel périphérique est actuellement défini pour déterminer quel flux enregistrer l'événement (et ce doit être le même périphérique l'événement est associé à).