xref: /petsc/src/sys/objects/device/impls/host/hostdevice.hpp (revision d71ae5a4db6382e7f06317b8d368875286fe9008)
10e6b6b59SJacob Faibussowitsch #ifndef HOSTDEVICE_HPP
20e6b6b59SJacob Faibussowitsch #define HOSTDEVICE_HPP
30e6b6b59SJacob Faibussowitsch 
40e6b6b59SJacob Faibussowitsch #if defined(__cplusplus)
50e6b6b59SJacob Faibussowitsch   #include "../impldevicebase.hpp" /*I "petscdevice.h" I*/
60e6b6b59SJacob Faibussowitsch 
7*d71ae5a4SJacob Faibussowitsch namespace Petsc
8*d71ae5a4SJacob Faibussowitsch {
90e6b6b59SJacob Faibussowitsch 
10*d71ae5a4SJacob Faibussowitsch namespace device
11*d71ae5a4SJacob Faibussowitsch {
120e6b6b59SJacob Faibussowitsch 
13*d71ae5a4SJacob Faibussowitsch namespace host
14*d71ae5a4SJacob Faibussowitsch {
150e6b6b59SJacob Faibussowitsch 
160e6b6b59SJacob Faibussowitsch class Device : public ::Petsc::device::impl::DeviceBase<Device> {
170e6b6b59SJacob Faibussowitsch public:
180e6b6b59SJacob Faibussowitsch   PETSC_DEVICE_IMPL_BASE_CLASS_HEADER(base_type, Device);
190e6b6b59SJacob Faibussowitsch 
200e6b6b59SJacob Faibussowitsch   PETSC_NODISCARD static PetscErrorCode initialize(MPI_Comm, PetscInt *, PetscBool *, PetscDeviceInitType *) noexcept;
210e6b6b59SJacob Faibussowitsch 
220e6b6b59SJacob Faibussowitsch private:
230e6b6b59SJacob Faibussowitsch   PETSC_CXX_COMPAT_DECL(constexpr PetscDeviceType PETSC_DEVICE_IMPL_()) { return PETSC_DEVICE_HOST; }
240e6b6b59SJacob Faibussowitsch 
250e6b6b59SJacob Faibussowitsch   PETSC_NODISCARD static PetscErrorCode get_attribute_(PetscInt, PetscDeviceAttribute, void *) noexcept;
260e6b6b59SJacob Faibussowitsch };
270e6b6b59SJacob Faibussowitsch 
280e6b6b59SJacob Faibussowitsch } // namespace host
290e6b6b59SJacob Faibussowitsch 
300e6b6b59SJacob Faibussowitsch } // namespace device
310e6b6b59SJacob Faibussowitsch 
320e6b6b59SJacob Faibussowitsch } // namespace Petsc
330e6b6b59SJacob Faibussowitsch 
340e6b6b59SJacob Faibussowitsch #endif // __cplusplus
350e6b6b59SJacob Faibussowitsch 
360e6b6b59SJacob Faibussowitsch #endif // HOSTDEVICE_HPP
37