From 92df355e69f36a2f851bb0969f74d3b8e7dc8a3b Mon Sep 17 00:00:00 2001 From: Anna Wellmann <a.wellmann@tu-braunschweig.de> Date: Fri, 3 Sep 2021 11:35:53 +0200 Subject: [PATCH] Use unique pointer to CudaMemoryManager in Parameter To avoid compiler errors, the destructor of Parameter must be defined in Parameter.cpp --- src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp | 4 +++- src/gpu/VirtualFluids_GPU/Parameter/Parameter.h | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp index 56bb66f1a..392afa3d4 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -55,6 +55,8 @@ Parameter::Parameter(const vf::basics::ConfigurationFile &configData, int number //initLBMSimulationParameter(); } +Parameter::~Parameter() = default; + void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) { if (configData.contains("NumberOfDevices")) @@ -2494,7 +2496,7 @@ void Parameter::setUseStreams() { bool Parameter::getUseStreams() { return this->useStreams; } -std::shared_ptr<CudaStreamManager> &Parameter::getStreamManager() { return this->cudaStreamManager; } +std::unique_ptr<CudaStreamManager> &Parameter::getStreamManager() { return this->cudaStreamManager; } void Parameter::findCornerNodesCommMultiGPU() { for (uint level = 0; level < parH.size(); level++) { diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h index 813287d9c..d8832fb71 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h @@ -327,6 +327,7 @@ class VIRTUALFLUIDS_GPU_EXPORT Parameter { public: Parameter(const vf::basics::ConfigurationFile &configData, int numberOfProcesses, int myId); + ~Parameter(); void initLBMSimulationParameter(); std::shared_ptr<LBMSimulationParameter> getParH(int level); @@ -856,12 +857,12 @@ private: // cuda streams bool useStreams { false }; - std::shared_ptr<CudaStreamManager> cudaStreamManager; + std::unique_ptr<CudaStreamManager> cudaStreamManager; public: void setUseStreams(); bool getUseStreams(); - std::shared_ptr<CudaStreamManager> &getStreamManager(); + std::unique_ptr<CudaStreamManager> &getStreamManager(); void findCornerNodesCommMultiGPU(); void findCornerNodesXY(int level); -- GitLab