CUDA: в сокращении деформации и изменчивом ключевом слове

После прочтения вопроса и его ответа из следующего
ССЫЛКА

У меня все еще есть вопрос, который остается в моей памяти. Из моего фона в C / C ++; Я понимаю, что с помощьюvolatile имеет свои недостатки. В ответах также указывается, что в случае CUDA оптимизации могут заменить общий массив регистрами для хранения данных, еслиvolatile Ключевое слово не используется.

Я хочу знать, с какими проблемами производительности можно столкнуться при расчете (сумме) снижения. например

__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];
    }
}

Я использую в уменьшении деформации. Так как все потоки с помощью WarP синхронизированы, поэтому я считаю, что нет необходимости использоватьsyncthreads() построить.

Я хочу знать, удалит ли ключевое словоvolatile испортить мою сумму (из-за оптимизации cuda)? Могу ли я использовать такое сокращение безvolatile ключевое слово.

Поскольку я использую эту функцию сокращения несколько раз,volatile Ключевое слово может привести к снижению производительности?

Ответы на вопрос(1)

Ваш ответ на вопрос