2010-10-11 5 views
1

dire que j'ai 64 threadds dans un noyaucuda fils inutilisés

__global__ void kernel(...) 
{ 
    int i = threadIdx.x; 
    ... ... 
    if (i < 32) 
    { 
     ... ... 
    } 
} 

essentiellement après un certain point, je ne vais pas utiliser des fils 32-63 plus. Qu'est-ce qu'ils vont faire alors? Est-ce qu'ils vont encore consommer de la puissance du processeur, ou ils sont juste morts.

+0

ils vont consommer du temps de processeur, tournant essentiellement à l'intérieur de la fonction de synchronisation. – Anycorn

+0

Il serait préférable d'utiliser une taille de bloc de 32 si vous le pouvez –

+0

Ils ne consommeront pas de temps processeur, une fois qu'ils atteignent la fin de la fonction, ils deviendront "morts" et ne prendront plus de cycles. – Tom

Répondre

3

Ils ne produiront tout simplement plus d'instruction à émettre et à exécuter. Disons "Dead".

0

Chaque thread d'une demi-chaîne (ou peut-être déformé en fonction de votre architecture) exécute la même instruction en même temps, de sorte que tous les autres threads de la demi-chaîne continuent à fonctionner, avec leur sortie supprimée. Toutes les autres demi-déformations (ou peut-être des déformations) sont renvoyées au système en tant que ressources.