fix hhd d_gpu bug if cuda=false

This commit is contained in:
TPP-G6
2026-01-28 10:23:00 +08:00
parent 5d56558447
commit c3fa34e66d
2 changed files with 11 additions and 7 deletions
+10 -6
View File
@@ -75,7 +75,14 @@ except ImportError:
class nHHD(object): class nHHD(object):
# constructor # constructor
def __init__(self, **kwargs): def __init__(self, cuda=True, **kwargs):
self.cuda = cuda
if self.cuda and CUPY_AVAILABLE:
self.stream1 = cp.cuda.Stream()
self.stream2 = cp.cuda.Stream()
else:
self.stream1 = None
self.stream2 = None
args = kwargs.keys() args = kwargs.keys()
@@ -104,9 +111,6 @@ class nHHD(object):
raise ValueError("nHHD Solver works only for 2 and 3 dimensions") raise ValueError("nHHD Solver works only for 2 and 3 dimensions")
self.psolver.prepare(False) self.psolver.prepare(False)
if CUPY_AVAILABLE:
self.stream1 = cp.cuda.Stream()
self.stream2 = cp.cuda.Stream()
# create the 3-component decomposition # create the 3-component decomposition
def decompose(self, vfield, verbose=0): def decompose(self, vfield, verbose=0):
@@ -447,12 +451,12 @@ class nHHD(object):
cp.get_default_memory_pool().free_all_blocks() cp.get_default_memory_pool().free_all_blocks()
def get_shear(self): def get_shear(self):
if not CUPY_AVAILABLE: if not self.cuda or not CUPY_AVAILABLE:
return self.h return self.h
return cp.asnumpy(self._h_gpu) return cp.asnumpy(self._h_gpu)
def get_normal(self): def get_normal(self):
if not CUPY_AVAILABLE: if not self.cuda or not CUPY_AVAILABLE:
return self.d return self.d
return cp.asnumpy(self._d_gpu) return cp.asnumpy(self._d_gpu)
+1 -1
View File
@@ -228,7 +228,7 @@ class Sensor:
# Initialize HHD solver # Initialize HHD solver
if self.__hhd is None: if self.__hhd is None:
self.__hhd = nHHD(grid=flow.shape[:2], spacings=(18, 18)) self.__hhd = nHHD(cuda=self.cuda, Qgrid=flow.shape[:2], spacings=(18, 18))
# Force computation # Force computation
if self.cuda and self.CUPY_AVAILABLE: if self.cuda and self.CUPY_AVAILABLE: