_CUDA_ path is now gas-agnostic, not depending on DryAir.
All the existing gpu routines on _CUDA_ path now use device GasMixture, TransportProperties, Fluxes and RiemannSolver.
All derived classes of BoundaryCondition remain in the host, not being instantiated in the device. In order to minimize the instantiation in the device and corresponding development time, their functions are duplicated in their own interp***_gpu functions, instead of a MFEM_HOST_DEVICE counterpart.
For WallBC, only computeGeneralWallFlux is translated into gpu path, as it can replace all the other wall types.
Any arrays defined in the device are now defined with the compile-time constant integer, stored in the namespace gpudata in src/dataStructures.hpp.
Known limitations
Due to the issue #145 , _HIP_ path remains unsupported for plasma.
In some places for ComputeViscousFluxes and ComputeBdrViscousFluxes, radius is not implemented and thus axisymmetric case is not yet supported in gpu. These places are marked with the comment // TODO(kevin): implement radius..
This PR does not extend gpu capability for plasma GasMixture and TransportProperties, such as:
PerfectMixture
ConstantTransport
ArgonMinimalTransport and ArgonMixtureTransport
This PR refactored the existing gpu routines only. The components that require a new gpu routine are:
ConstantPressureGradient
AxisymmetricSource
SourceTerm
MASA_forcings?
and all the associated classes.
InletBC and OutletBC have a limited gpu capability, only for subsonicReflectingDensityVelocity and subsonicReflectingPressure, respectively. Other BC types are not yet supported (in fact both for cpu and gpu).
This PR comes after PR #146 .
_CUDA_
path is now gas-agnostic, not depending onDryAir
._CUDA_
path now use deviceGasMixture
,TransportProperties
,Fluxes
andRiemannSolver
.BoundaryCondition
remain in the host, not being instantiated in the device. In order to minimize the instantiation in the device and corresponding development time, their functions are duplicated in their owninterp***_gpu
functions, instead of aMFEM_HOST_DEVICE
counterpart.WallBC
, onlycomputeGeneralWallFlux
is translated into gpu path, as it can replace all the other wall types.gpudata
insrc/dataStructures.hpp
.Known limitations
_HIP_
path remains unsupported for plasma.ComputeViscousFluxes
andComputeBdrViscousFluxes
,radius
is not implemented and thus axisymmetric case is not yet supported in gpu. These places are marked with the comment// TODO(kevin): implement radius.
.GasMixture
andTransportProperties
, such as:PerfectMixture
ConstantTransport
ArgonMinimalTransport
andArgonMixtureTransport
ConstantPressureGradient
AxisymmetricSource
SourceTerm
MASA_forcings
? and all the associated classes.InletBC
andOutletBC
have a limited gpu capability, only forsubsonicReflectingDensityVelocity
andsubsonicReflectingPressure
, respectively. Other BC types are not yet supported (in fact both for cpu and gpu).