Como posso implementar uma função atômica personalizada envolvendo várias variáveis?

Eu gostaria de implementar essa função atômica no CUDA:

__device__ float lowest;   // global var
__device__ int  lowIdx;    // global var
float realNum;   // thread reg var
int index;       // thread reg var

if(realNum < lowest) {
 lowest= realNum;  // the new lowest
 lowIdx= index;    // update the 'low' index
}

Eu não acredito que eu possa fazer isso com qualquer uma das funções atômicas. Eu preciso bloquear alguns locais de memória global para algumas instruções. Posso implementar isso com o código PTXAS (assembly)?

questionAnswers(2)

yourAnswerToTheQuestion