GNU/Linux >> Tutoriels Linux >  >> Linux

Pénalité de performance CUDA lors de l'exécution sous Windows

L'envoi de commandes matérielles GPU via la pile WDDM entraîne une surcharge importante.

Comme vous l'avez découvert, cela signifie que sous WDDM (uniquement), les commandes GPU peuvent être "regroupées" pour amortir cette surcharge. Le processus de traitement par lots peut (probablement) introduire une certaine latence, qui peut être variable, en fonction de ce qui se passe d'autre.

La meilleure solution sous windows est de basculer le mode de fonctionnement du GPU de WDDM à TCC, ce qui peut se faire via le nvidia-smi commande, mais elle n'est prise en charge que sur les GPU Tesla et certains membres de la famille de GPU Quadro, c'est-à-dire pas GeForce. (Cela a également pour effet secondaire d'empêcher l'utilisation de l'appareil comme adaptateur d'affichage accéléré par Windows, ce qui peut être pertinent pour un appareil Quadro ou quelques anciens GPU Fermi Tesla spécifiques.)

AFAIK, il n'y a pas de méthode officiellement documentée pour contourner ou affecter le processus de traitement par lots WDDM dans le pilote, mais j'ai entendu officieusement, selon [email protected] dans ce lien la commande à émettre après l'appel du noyau cuda est cudaEventQuery(0); ce qui peut/devrait entraîner le "vidage" de la file d'attente batch WDDM vers le GPU.

Comme le souligne Greg, une utilisation intensive de ce mécanisme annulera l'avantage de l'amortissement et pourrait faire plus de mal que de bien.

MODIF : à partir de 2016, une nouvelle recommandation pour un vidage "à faible impact" de la file d'attente de commandes WDDM serait cudaStreamQuery(stream);

EDIT2 : En utilisant des pilotes récents sur Windows, vous devriez pouvoir placer les GPU de la famille Titan en mode TCC, en supposant que vous ayez un autre GPU configuré pour l'affichage principal. Le nvidia-smi l'outil vous permettra de changer de mode (en utilisant nvidia-smi --help pour plus d'informations).

Des informations supplémentaires sur le modèle de pilote TCC peuvent être trouvées dans le guide d'installation de Windows, y compris qu'il peut réduire la latence des lancements du noyau.

La déclaration sur le soutien de TCC est générale. Tous les GPU Quadro ne sont pas pris en charge. Le dernier déterminant de la prise en charge de TCC (ou non) sur un GPU particulier est le nvidia-smi outil. Rien ici ne doit être interprété comme une garantie de prise en charge de TCC sur votre GPU particulier.


Linux
  1. Suggérer l'installation de packages lors de l'exécution d'une commande non disponible

  2. .bash_profile n'est pas fourni lors de l'exécution de Su ?

  3. Inconvénient lors de l'utilisation d'un chroot dans le calcul haute performance ?

  4. Encodage d'un fichier Zip ?

  5. Impossible de supprimer le fichier, même lors de l'exécution en tant que root ?

Obtenez podman opérationnel sur Windows en utilisant Linux

Exécution de Linux virtuel à l'aide de qemu sous Windows

Quels sont ces processus Windows sous Linux ?

Examen de plusieurs ports lors de l'exécution de NetCat (nc)

Inviter l'utilisateur à se connecter en tant que root lors de l'exécution d'un script shell

Comportement étrange de l'historique bash lors de l'exécution de plusieurs sessions