Ядро использует 54 регистра на поток с заполнением 0,33.Для отладки в нем есть оператор if:
if ( -1 == val ) // val is INT32
{
printf( "Invalid value!\n" );
}
Если я закомментирую этот оператор if, ядро использует 33 регистра на поток, а заполненность также увеличивается до 0,5.Но странная часть заключается в том, что это новое более компактное ядро на самом деле занимает на 15% больше времени!Все остальные параметры кода и запуска (блоки, потоки) являются постоянными.Кто-нибудь может объяснить, как могло произойти это снижение производительности?
Я использую CUDA 4.0 на GTX 580, с кодом, скомпилированным с возможностью CUDA 2.0.