diff --git a/source/EngineGpuKernels/CudaMemoryManager.cuh b/source/EngineGpuKernels/CudaMemoryManager.cuh index e74149671..a34a3f13e 100644 --- a/source/EngineGpuKernels/CudaMemoryManager.cuh +++ b/source/EngineGpuKernels/CudaMemoryManager.cuh @@ -40,7 +40,7 @@ public: } auto findResult = _pointerToSizeMap.find(reinterpret_cast(memory)); if (findResult != _pointerToSizeMap.end()) { - cudaFree(memory); + CHECK_FOR_CUDA_ERROR(cudaFree(memory)); _bytes -= sizeof(T) * findResult->second; _pointerToSizeMap.erase(findResult->first); } diff --git a/source/EngineGpuKernels/SimulationCudaFacade.cu b/source/EngineGpuKernels/SimulationCudaFacade.cu index 3eb3e028b..d046f4b82 100644 --- a/source/EngineGpuKernels/SimulationCudaFacade.cu +++ b/source/EngineGpuKernels/SimulationCudaFacade.cu @@ -91,6 +91,13 @@ _SimulationCudaFacade::~_SimulationCudaFacade() _cudaSimulationStatistics->free(); _cudaSelectionResult->free(); + _simulationKernels.reset(); + _dataAccessKernels.reset(); + _garbageCollectorKernels.reset(); + _renderingKernels.reset(); + _editKernels.reset(); + _statisticsKernels.reset(); + CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->cells); CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->particles); CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->auxiliaryData); @@ -98,8 +105,8 @@ _SimulationCudaFacade::~_SimulationCudaFacade() CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->numParticles); CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->numAuxiliaryData); - cudaDeviceReset(); - log(Priority::Important, "close simulation"); + CHECK_FOR_CUDA_ERROR(cudaDeviceReset()); + log(Priority::Important, "simulation closed"); } void* _SimulationCudaFacade::registerImageResource(GLuint image)