Разница в создании контекста CUDA

Ве программа, которая использует три ядра. Чтобы получить ускорения, я делал фиктивную копию памяти, чтобы создать контекст следующим образом:

__global__ void warmStart(int* f)
{
    *f = 0;
}

который запускается раньше, чем ядра, я хочу время следующим образом:

int *dFlag = NULL;
cudaMalloc( (void**)&dFlag, sizeof(int) );
warmStart(dFlag);
Check_CUDA_Error("warmStart kernel");

Я также читал о других простейших способах создания контекста какcudaFree(0) или жеcudaDevicesynchronize(), Но использование этих вызовов API дает худшие времена, чем использование фиктивного ядра.

Время выполнения программы после форсирования контекста0.000031 секунды для фиктивного ядра и0.000064 секунд для обоих, cudaDeviceSynchronize () и cudaFree (0). В среднем было получено 10 отдельных исполнений программы.

Поэтому вывод яДостигнуто то, что при запуске ядра инициализируется то, что не инициализируется при создании контекста каноническим способом.

И что'Есть ли разница в создании контекста этими двумя способами, используя ядро и вызов API?

Я запускаю тест на GTX480, используя CUDA 4.0 под Linux.

Ответы на вопрос(1)

Ваш ответ на вопрос