Делают ли cuDevicePrimaryCtxReset () и cudaDeviceReset () одно и то же?
Читая документы CUDA Runtime API и Driver API, кажется, что две функции:
CUresult cuDevicePrimaryCtxReset ( CUdevice dev );
__host__ cudaError_t cudaDeviceReset ( void );
сделать то же самое (до того, чтобы cudaSetDevice(dev)
перед вызовом API среды выполнения):
Уничтожьте все выделения и сбросьте все состояние в первичном контексте.
для первого и
Удалите все выделения и сбросьте все состояние на текущем устройстве в текущем процессе.
Действительно ли они делают то же самое? Или, возможно, есть тонкие различия, которые мне не хватает или которые не задокументированы? например, что-то связанное с потоками и процессами?
1 ответ
Изучив программу, с которой связана @RobertCrovella, кажется, cudaDeviceReset()
похоже, уничтожает все контексты для указанного устройства, удаляя их из стека контекстов.