Цель проста: составить график влияния размера блока на время выполнения с помощью CUDA. Можно ожидать, что для каждого размера блока, кратного 32, время выполнения будет наименьшим, а после умножения (например, 33, 65, 97, 129, ...) время выполнения должно увеличиться. Однако это не тот результат, который я получаю. Время выполнения просто уменьшается, а затем выравнивается.
Я использую CUDA runtime 10.0 на NVIDIA GeForce 940M.
Я пробовал несколько способов получить время выполнения. Тот, который рекомендован в документации CUDA, говорит, что должно работать следующее:
cudaEventCreate(&gpu_execution_start);
cudaEventCreate(&gpu_execution_end);
cudaEventRecord(gpu_execution_start);
kernel<<<n_blocks,blocksize>>> (device_a, device_b, device_out, arraysize);
cudaEventRecord(gpu_execution_end);
cudaEventSynchronize(gpu_execution_end);
Этот способ синхронизации, однако, генерирует ранее упомянутый результат.
Проблема заключается в сроках исполнения? Или конкретный графический процессор вызывает проблемы в результате, может быть?