Это вопрос до this one.Когда я нацелен на 32-кратные архитектуры CUDA, я должен использовать warpSize?
Предположим, у меня есть CUDA ядра
template<unsigned ThreadsPerWarp>
___global__ foo(bar_t* a, const baz_t* b);
и я реализующий специализацию его для случая ThreadsPerWarp
быть 32 (это обходит действительную критику ответ Talonmies' на мой предыдущий вопрос.)
В теле этой функции (или других вызываемых из нее функций __device__
) - должен ли я использовать постоянное значение ThreadsPerWarp
? Или лучше использовать warpSize
? Или - будет ли это все равно компилятору с точки зрения генерируемого PTX?
Использование 'ThreadsPerWarp' должно быть лучше с точки зрения оптимизации. –
@RobertCrovella: Всегда и без каких-либо исключений? То есть у nvcc нет оптимизаторов, которые «замечают» 'warpSize' более четко, чем они' 32'? В конце концов, talonmies сказал в связанном вопросе, что сгенерированный PTX не принимает размер основы 32. – einpoklum
В [ответе, который вы указали] (http://stackoverflow.com/q/36047035/1593077) из @ talonmies, он заявил: «В то же время использование« warpSize »в коде предотвращает оптимизацию, поскольку формально это не константа времени компиляции». Я просто повторяю это (я согласен с этим, очевидно). Наверное, теперь вы просите доказательства того, что чего-то не существует - сложнее сделать. –