xref: /petsc/src/sys/objects/device/impls/host/hostdevice.hpp (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
20e6b6b59SJacob Faibussowitsch 
30e6b6b59SJacob Faibussowitsch #include "../impldevicebase.hpp" /*I "petscdevice.h" I*/
40e6b6b59SJacob Faibussowitsch 
5d71ae5a4SJacob Faibussowitsch namespace Petsc
6d71ae5a4SJacob Faibussowitsch {
70e6b6b59SJacob Faibussowitsch 
8d71ae5a4SJacob Faibussowitsch namespace device
9d71ae5a4SJacob Faibussowitsch {
100e6b6b59SJacob Faibussowitsch 
11d71ae5a4SJacob Faibussowitsch namespace host
12d71ae5a4SJacob Faibussowitsch {
130e6b6b59SJacob Faibussowitsch 
140e6b6b59SJacob Faibussowitsch class Device : public ::Petsc::device::impl::DeviceBase<Device> {
150e6b6b59SJacob Faibussowitsch public:
160e6b6b59SJacob Faibussowitsch   PETSC_DEVICE_IMPL_BASE_CLASS_HEADER(base_type, Device);
170e6b6b59SJacob Faibussowitsch 
18089fb57cSJacob Faibussowitsch   static PetscErrorCode initialize(MPI_Comm, PetscInt *, PetscBool *, PetscDeviceInitType *) noexcept;
190e6b6b59SJacob Faibussowitsch 
200e6b6b59SJacob Faibussowitsch private:
PETSC_CXX_COMPAT_DECL(constexpr PetscDeviceType PETSC_DEVICE_IMPL_ ())210e6b6b59SJacob Faibussowitsch   PETSC_CXX_COMPAT_DECL(constexpr PetscDeviceType PETSC_DEVICE_IMPL_()) { return PETSC_DEVICE_HOST; }
220e6b6b59SJacob Faibussowitsch 
23089fb57cSJacob Faibussowitsch   static PetscErrorCode get_attribute_(PetscInt, PetscDeviceAttribute, void *) noexcept;
240e6b6b59SJacob Faibussowitsch };
250e6b6b59SJacob Faibussowitsch 
260e6b6b59SJacob Faibussowitsch } // namespace host
270e6b6b59SJacob Faibussowitsch 
280e6b6b59SJacob Faibussowitsch } // namespace device
290e6b6b59SJacob Faibussowitsch 
300e6b6b59SJacob Faibussowitsch } // namespace Petsc
31