xref: /petsc/src/sys/objects/device/impls/host/hostdevice.hpp (revision 089fb57c6fc1c43c66aab835b8f02b081bcf19ea)
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 
7d71ae5a4SJacob Faibussowitsch namespace Petsc
8d71ae5a4SJacob Faibussowitsch {
90e6b6b59SJacob Faibussowitsch 
10d71ae5a4SJacob Faibussowitsch namespace device
11d71ae5a4SJacob Faibussowitsch {
120e6b6b59SJacob Faibussowitsch 
13d71ae5a4SJacob Faibussowitsch namespace host
14d71ae5a4SJacob 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 
20*089fb57cSJacob Faibussowitsch   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 
25*089fb57cSJacob Faibussowitsch   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