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