void THCudaShutdown(THCState* state) { THCRandom_shutdown(state); THCudaBlas_shutdown(state); free(state->blasState); free(state->rngState); free(state->deviceProperties); int prevDev = -1; THCudaCheck(cudaGetDevice(&prevDev)); for (int dev = 0; dev < state->numDevices; ++dev) { THCudaCheck(cudaSetDevice(dev)); /* Free Torch-defined streams (0 is the default stream) */ for (int stream = 1; stream <= state->numUserStreams; ++stream) { THCudaCheck(cudaStreamDestroy(state->streamsPerDevice[dev][stream])); } free(state->streamsPerDevice[dev]); } free(state->streamsPerDevice); THCudaCheck(cudaSetDevice(prevDev)); }
void THCudaShutdown(THCState* state) { THCRandom_shutdown(state); free(state->blasState); free(state->rngState); THCudaBlas_shutdown(state); }