2014-06-17 2 views
4

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?

+2

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. –

+0

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

+1

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. –

Répondre

1

Je ne pense pas qu'il est vraiment logique de parler de "surcharge" de changement de contexte sur un GPU.

Sur une CPU, le changement de contexte est fait dans le logiciel, par une fonction dans le noyau appelée "scheduler". Le planificateur est du code ordinaire, une séquence d'instructions machine que le processeur doit exécuter, et le temps passé à exécuter le planificateur est le temps non dépensé pour effectuer un travail "utile". Un GPU, en revanche, effectue un changement de contexte dans le matériel, sans planificateur, et il est assez rapide que lorsqu'une tâche rencontre un blocage de pipeline, une autre tâche peut être effectuée pour utiliser les étapes du pipeline qui seraient autrement tourner au ralenti. C'est ce que l'on appelle la «latence de dissimulation» - les retards dans une tâche sont masqués par les progrès réalisés dans d'autres tâches. Les commutateurs de contexte permettent en réalité plus de travail utile à effectuer dans un laps de temps donné.

Pour plus d'informations, voir this answer J'ai écrit une question connexe sur SuperUser.

+0

Merci beaucoup. Le GPU utilise le changement de contexte pour cacher la latence afin d'avoir plus de débit. Pour être plus précis, je veux mesurer le temps nécessaire pour passer d'une tâche à une autre. Supposons que la tâche A (ou warp A) ait un décrochage de pipeline ou un accès mémoire long, GPU planifie la tâche B (ou warp B) pour masquer la latence causée par la tâche A. Ma question est comment mesurer le temps nécessaire au changement de tâche A à la tâche B. Le temps de commutation du contexte a certainement une certaine valeur même s'il est très petit. C'est ce que je veux mesurer. – LongY

+1

Le temps de changement de contexte est zéro lorsqu'il est mesuré en cycles d'horloge gpu. –

+1

Le temps de "changement de contexte" intéressant pour les GPU est entre les contextes CUDA, pas les contextes de threads. – ArchaeaSoftware

Questions connexes