Я запускаю очень простое ядро < < < 1,512 >>> на CUDA Fermi GPU.Измерение Cuda петли
__global__ void kernel(){
int x1,x2;
x1=5;
x2=1;
for (int k=0;k<=1000000;k++)
{
x1+=x2;
}
}
Ядро очень простое, оно добавляет 10^6 и ничего не передает в глобальную память. Результат корректный, т. Е. После того, как цикл x1 (во всех его потоках 512 экземпляров) содержит 10^6 + 5
Я пытаюсь измерить время выполнения ядра. используя как визуальную студию параллельно nsight, так и nvvp. Nsight измеряет 2,5 микросекунды и nvvp меры 4 микросекунды.
Проблема заключается в следующем: я могу увеличить в основном размер цикла, например, до 10^8, и время остается постоянным. То же самое, если я сильно уменьшу размер петли. Почему это происходит?
Обратите внимание, что если я использую общую память или глобальную память внутри цикла, измерения отражают выполняемую работу (т. Е. Есть пропорциональность).