CUDA: na redução de urdidura e palavra-chave volátil

Depois de ler a pergunta e sua resposta a partir do seguinte
LIGAÇÃO

Ainda tenho uma pergunta em mente. Da minha formação em C / C ++; Eu entendo que usandovolatile tem seus deméritos. E também é apontado nas respostas que, no caso de CUDA, as otimizações podem substituir a matriz compartilhada por registradores para manter os dados sevolatile palavra-chave não é usada.

Quero saber quais seriam os problemas de desempenho que podem ser encontrados ao calcular a redução (soma). por exemplo.

__device__ void sum(volatile int *s_data, int tid)
{
    if (tid < 16)
    {
        s_data[tid] += s_data[tid + 16];
        s_data[tid] += s_data[tid +  8];
        s_data[tid] += s_data[tid +  4];
        s_data[tid] += s_data[tid +  2];
        s_data[tid] += s_data[tid +  1];
    }
}

Estou usando na redução de urdidura. Como todos os threads no warp estão sincronizados, acredito que não há necessidade de usarsyncthreads() construir.

Eu quero saber vai remover a palavra-chavevolatile estragar minha soma (devido a otimizações de cuda)? Posso usar uma redução como essa semvolatile palavra-chave

Desde que eu uso essa função de redução várias vezes,volatile palavra-chave causa alguma degradação no desempenho?

questionAnswers(1)

yourAnswerToTheQuestion