Je souhaite mapper un thread_id. C'est en C/CUDA mais c'est plus un problème algébrique que j'essaie de résoudre.Mappage d'un numéro de thread à une position (non séquentielle) dans un tableau
Ainsi, la cartographie que je suis en train de réaliser est le long des lignes:
- Threads 0-15: tableau de valeur lue [0]
- Threads 16-31: valeur lue [3]
- Fils 32-47: lire la valeur [0]
- Fils 48-63: lire la valeur [3]
- Fils 64-79: matrice de valeur lue [6]
- Fils 80-95: matrice de valeur lue [9 ]
- Threads 96-111: tableau de valeur lue [6]
- Threads 112-127: tableau de valeur lue [9]
et ainsi de suite ..
Notez que cette simplification du mapping, en réalité il y a plus de 128 threads mais la séquence est comme montrée et les threads seront toujours mappés à un multiple de trois.
Quelle formule puis-je utiliser pour que chaque thread puisse s'exécuter pour déterminer la position du tableau qu'il doit regarder?
Je voudrais utiliser une sorte de formule comme je l'ai dans l'exemple suivant et non une carte explicite ou des instructions if.
Pour illustrer la façon dont je l'ai résolu ce pour un autre cas qui a nécessité une cartographie différente, à savoir:
- Threads 0-31: tableau de valeur lue [0]
- Threads 32-63: valeur lue [3]
je le code
rintf(float(tid)/96.0)*3
Personnellement, je ne trouve aucune question –
Est-ce que c'est plus clair? – zenna