Такая ситуация
- execTime -= cutGetTimerValue( timer);
- //запускаю 9 керналов подряд
- execTime += cutGetTimerValue( timer);
- cutilSafeCall( cudaMemcpy( updateds, d_updateds, 1 * sizeof(int),
- cudaMemcpyDeviceToHost) );
Получается время исполнения(значение execTime)
0.086315 мс
если же
- execTime -= cutGetTimerValue( timer);
- //запускаю 9 керналов подряд
- cutilSafeCall( cudaMemcpy( updateds, d_updateds, 1 * sizeof(int),
- cudaMemcpyDeviceToHost) );
- execTime += cutGetTimerValue( timer);
то получается
8.067453613 мс
Как бы получается что копирование 1 элемента из глобальной памяти занимает ооооочень много времени. Однако
- execTime -= cutGetTimerValue( timer);
- //запускаю 9 керналов подряд
- cutilSafeCall( cudaMemcpy( updateds, d_updateds, 1 * sizeof(int),
- cudaMemcpyDeviceToHost) );
- cutilSafeCall( cudaMemcpy( flags, d_flags, 12 * sizeof(int),
- cudaMemcpyDeviceToHost) );
- execTime += cutGetTimerValue( timer);
execTime = 8.082438 мс
Исходя из этих данных получается что коприрование d_updateds( 1 элемент) занимает 8мс а d_flags(12 элементов) 0,015 мс
Что -то тут не так :-)