2011-07-20 9 views
0

Selon ce, http://www.nvidia.co.uk/content/PDF/isc-2011/Ziegler.pdf, je comprends que les replays dans la littérature GPU signifient sérialisations. Mais quels sont les facteurs qui contribuent au nombre de sérialisations?décomposition des sérialisations GPU

Pour ce faire, j'ai fait quelques expériences. Profilé quelques noyaux et trouve le nombre de replays (= instructions émises - instructions exécutées). Parfois, le nombre de conflits bancaires est égal au nombre de replays. D'autres fois, le nombre de conflits bancaires est plus petit. Cela implique que le nombre de conflits bancaires est toujours un facteur. Et l'autre?

Selon les diapositives ci-dessus (à partir de diapositives 35), il y a quelques autres:

. Le cache d'instructions manque

. conflits de mémoire constante

À ma connaissance, il peut y avoir deux autres:

. Le nombre de divergences de branches. Puisque les deux chemins sont exécutés, il y a des replays. Mais je ne suis pas sûr si le nombre d'instructions émises est affecté par des divergences ou pas?

. Le nombre d'erreurs de cache. J'ai entendu dire que de longues demandes de mémoire de latence seront rejouées parfois. Mais dans mes expériences, les échecs de cache L1 sont souvent plus élevés que les replays.

Est-ce que quelqu'un peut confirmer que ces facteurs contribuent à la sérialisation? Qu'est-ce qui est incorrect et est-ce que je rate quelque chose d'autre?

Merci

Répondre

1

Pour autant que je sais divergence de branche contribue à la relecture d'instruction.

Je ne suis pas sûr du nombre d'erreurs de cache. Cela devrait être géré de manière transparente par le contrôleur de mémoire n'affectant pas l'instruction. La pire chose que je puisse penser est que le pipeline est arrêté jusqu'à ce que la mémoire soit correctement récupérée.

+0

Oui, je pense que les divergences font aussi partie des replays d'instructions. Mais quand j'ai vu, la somme des divergences et des conflits bancaires est plus grande que les replays! – Zk1001