Шаг 5.
Технология CUDA.
Основы CUDA runtime API

    На этом шаге мы рассмотрим CUDA runtime API.

    Далее мы будем использовать именно CUDA runtime API как более простой.

    Важным моментом работы c CUDA, на который следует сразу же обратить внимание, является то, что многие функции API - асинхронные, то есть управление возвращается еще до реального завершения требуемой операции.

    К числу асинхронных операций относятся:

    Для синхронизации текущей нити на CPU с GPU используется функция cudaThreadSynchronize, которая дожидается завершения выполнения всех операций CUDA, ранее вызванных с данной нити CPU:

   cudaError_t cudaThreadSynchronize(void);

    CUDA поддерживает синхронизацию через потоки (streams) - каждый поток задает последовательность операций, выполняемых в строго определенном порядке. При этом порядок выполнения операций между разными потоками не является строго определенным и может изменяться.

    Каждая функция CUDA runtime API (кроме запуска ядра) возвращает значение типа cudaError_t. При успешном выполнении функции возвращается значение cudaSuccess, в противном случае возвращает код ошибки.

    Получить описание ошибки в виде строки по ее коду можно при помощи функции cudaGetErrorString:

  char *cudaGetErrorString(cudaError_t code);

    Также можно получить код последней ошибки при помощи функции cudaGetLastError:

  cudaError_t cudaGetLastError();

    На следующем шаге мы рассмотрим получение информации об имеющихся GPU.




Предыдущий шаг Содержание Следующий шаг