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
Ключевое слово может привести к снижению производительности?