From a6009ff51d09e1eb2ed4ffccb0bda4d1a177d578 Mon Sep 17 00:00:00 2001 From: Miroslav Stoyanov Date: Fri, 18 Oct 2024 16:49:36 -0400 Subject: [PATCH] fix bug when wavelet grids change the gpu context --- InterfacePython/TasmanianSG.py | 2 +- SparseGrids/tsgGridWavelet.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/InterfacePython/TasmanianSG.py b/InterfacePython/TasmanianSG.py index bcaf53780..09d9bd25a 100644 --- a/InterfacePython/TasmanianSG.py +++ b/InterfacePython/TasmanianSG.py @@ -2140,7 +2140,7 @@ def enableAcceleration(self, sAccelerationType, iGPUID = None): else: if ((iGPUID < 0) or (iGPUID >= self.getNumGPUs())): raise TasmanianInputError("iGPUID", "ERROR: invalid GPU ID number") - pLibTSG.tsgEnableAcceleration(self.pGrid, bytes(sAccelerationType, encoding='utf8'), iGPUID) + pLibTSG.tsgEnableAccelerationGPU(self.pGrid, bytes(sAccelerationType, encoding='utf8'), iGPUID) def getAccelerationType(self): ''' diff --git a/SparseGrids/tsgGridWavelet.cpp b/SparseGrids/tsgGridWavelet.cpp index cd16d465f..8733fa43f 100644 --- a/SparseGrids/tsgGridWavelet.cpp +++ b/SparseGrids/tsgGridWavelet.cpp @@ -395,6 +395,7 @@ void GridWavelet::buildInterpolationMatrix() const{ if (order == 1 and TasSparse::WaveletBasisMatrix::useDense(acceleration, num_points) and acceleration->useKernels()){ // using the GPU algorithm + acceleration->setDevice(); std::vector pnts(Utils::size_mult(num_dimensions, num_points)); getPoints(pnts.data()); GpuVector gpu_pnts(acceleration, pnts); @@ -1040,6 +1041,8 @@ void GridWavelet::updateAccelerationData(AccelerationContext::ChangeType change) case AccelerationContext::change_gpu_device: gpu_cache.reset(); gpu_cachef.reset(); + if (inter_matrix.getNumRows() > 0) + inter_matrix = TasSparse::WaveletBasisMatrix(); break; case AccelerationContext::change_sparse_dense: if ((acceleration->algorithm_select == AccelerationContext::algorithm_dense and inter_matrix.isSparse())