Il existe de nombreuses méthodes pour mesurer le surdébit de changement de contexte de la CPU. Il semble qu'il dispose de peu de ressources pour mesurer le surcoût de changement de contexte du GPU. Le changement de contexte CPU et les GPU sont assez différents.Mesure de la surcharge du changement de contexte dans le processeur graphique
La planification GPU est basée sur la planification de distorsion. Pour calculer la surcharge du changement de contexte GPU, j'ai besoin de connaître l'heure de la déformation avec le changement de contexte et la déformation sans changement de contexte, et faire la soustraction pour obtenir le temps système.
Je suis confus sur la façon de mesurer le temps de déformation avec le changement de contexte? Est-ce que quelqu'un a des idées à mesurer?
CUDA a plusieurs niveaux de changement de contexte. Coût de faire le commutateur de contexte complet de GPU est 25-50μs. Le coût de lancement du bloc de thread CUDA est de 100s de cycles. Le coût de lancement des déformations CUDA est inférieur à 10 cycles. Le coût pour basculer entre les warps alloués à un programmateur Warp est de 0 cycles et peut arriver à chaque cycle. Le coût de la préemption CDP SW sur CC> = 3.5 est plus élevé et varie en fonction de la charge de travail du GPU. –
Merci beaucoup. Selon le livre blanc de Fermi, "le pipeline de Fermi est optimisé pour réduire le coût d'un changement de contexte d'application à moins de 25 microsecondes". Est-ce 25 microsecondes le commutateur de contexte GPU complet comme vous l'avez dit? Je suis confus au sujet du coût de basculer entre les chaînes. Supposons que warp A accède à la mémoire globale, et qu'il y ait des centaines de cycles de latence. À ce moment, le planificateur Warp bascule une autre distorsion pour rendre les ALU occupées. Est-ce que le commutateur de distorsion a un cycle de 0 ou est-il possible qu'il ait un certain nombre de cycles pour que le programmateur fasse la commutation de distorsion. – LongY
Il n'y a pas de changement de contexte pour les déformations. Lorsqu'un bloc est pixellisé en warps, les warps sont affectés à un ordonnanceur Warp et tous les registres sont alloués. Le planificateur Warp maintient une liste de warps éligibles (non calées). À chaque cycle d'horloge, il peut émettre à partir de n'importe quel warp éligible avec 0 overhead. Il n'y a pas de données à changer de contexte. Toutes les ressources matérielles ont déjà été affectées à la distorsion, il n'y a donc pas de données à changer. –