Trouver de la valeur max dans CUDA

Je suis en train d'écrire un code CUDA pour trouver la valeur max
pour l'ensemble donné de nombres.

Supposons que vous disposez de 20 numéros, et le noyau est en cours d'exécution sur 2 blocs de 5 threads. Supposons maintenant le 10 threads comparer les 10 premières valeurs en même temps, et thread 2 trouve une valeur max, de sorte que le thread 2 est la mise à jour de la valeur maxi de la variable dans la mémoire globale. Tandis que le thread 2 est la mise à jour, ce qui va se passer pour les autres threads (1,3-10) en comparaison à l'aide de l'ancienne valeur?

Si je verrouiller la variable globale à l'aide de atomicCAS(), le fils (1,3-10) comparer à l'aide de la vieille valeur max? Comment puis-je résoudre ce problème?

OriginalL'auteur kar | 2011-03-10