static bool nvptx_close_device (struct ptx_device *ptx_dev) { if (!ptx_dev) return true; if (!fini_streams_for_device (ptx_dev)) return false; pthread_mutex_destroy (&ptx_dev->image_lock); if (!ptx_dev->ctx_shared) CUDA_CALL (cuCtxDestroy, ptx_dev->ctx); free (ptx_dev); return true; }
static void nvptx_close_device (struct ptx_device *ptx_dev) { CUresult r; if (!ptx_dev) return; fini_streams_for_device (ptx_dev); pthread_mutex_destroy (&ptx_dev->image_lock); if (!ptx_dev->ctx_shared) { r = cuCtxDestroy (ptx_dev->ctx); if (r != CUDA_SUCCESS) GOMP_PLUGIN_fatal ("cuCtxDestroy error: %s", cuda_error (r)); } free (ptx_dev); }