En réduisant le Nombre de Registres Utilisés dans CUDA Noyau

J'ai un noyau qui utilise 17 registres, en la réduisant à 16 m'apporterait 100% d'occupation. Ma question est: existe-il des méthodes qui peuvent être utilisées pour réduire le nombre de registres utilisés, à l'exclusion de la réécriture complète de mon algorithmes de manière différente. J'ai toujours supposé que le compilateur est beaucoup plus malin que je suis, donc par exemple, j'ai souvent l'usage de variables supplémentaires pour plus de clarté seul. Je suis mal dans cette réflexion?

Note: je ne sais à propos de l' --max_registers (ou quelle que soit la syntaxe est le drapeau, mais l'utilisation de la mémoire locale serait plus nuisible que 25% de baisse du taux d'occupation (je devrais tester ce)

Curieusement, j'ai juste essayé maxrregcount=16 et il a en fait réduit le nombre de registres j'ai été en utilisant à 15 et pas de la mémoire locale a été utilisée. Mais c'est en fait devenu plus lent! Comment cela fonctionne?
essayez de profil de votre application. Compilateur peut ainsi introduire des manigances.
Le taux d'occupation est supérieur à 15 registres comme je l'avais prédit et tout le reste est le même, sauf le nombre d'instructions augmente avec l'un registre inférieur comte. à partir de 3,9 à 4,3 mètres de
qu'en est nombre de branches/divergence au cours de l'exécution?
Seulement 8 ans de retard à la fête, mais la raison pour laquelle il a obtenu plus lent est probablement parce que le compilateur a commencé à faire des rematerialisation. Il a évité à l'aide de plusieurs registres juste le calcul de la valeur, encore et encore chaque fois que cela était nécessaire.

OriginalL'auteur zenna | 2010-02-17