Skip to content

Commit

Permalink
+ prevent cudaFree after cudaDeviceReset
Browse files Browse the repository at this point in the history
+ check included
  • Loading branch information
chrxh committed Aug 21, 2024
1 parent 1b7b339 commit 923705a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
2 changes: 1 addition & 1 deletion source/EngineGpuKernels/CudaMemoryManager.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public:
}
auto findResult = _pointerToSizeMap.find(reinterpret_cast<void*>(memory));
if (findResult != _pointerToSizeMap.end()) {
cudaFree(memory);
CHECK_FOR_CUDA_ERROR(cudaFree(memory));
_bytes -= sizeof(T) * findResult->second;
_pointerToSizeMap.erase(findResult->first);
}
Expand Down
11 changes: 9 additions & 2 deletions source/EngineGpuKernels/SimulationCudaFacade.cu
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,22 @@ _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);
CudaMemoryManager::getInstance().freeMemory(_cudaAccessTO->numCells);
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)
Expand Down

0 comments on commit 923705a

Please sign in to comment.