1*0e6b6b59SJacob Faibussowitsch #ifndef HOSTDEVICE_HPP 2*0e6b6b59SJacob Faibussowitsch #define HOSTDEVICE_HPP 3*0e6b6b59SJacob Faibussowitsch 4*0e6b6b59SJacob Faibussowitsch #if defined(__cplusplus) 5*0e6b6b59SJacob Faibussowitsch #include "../impldevicebase.hpp" /*I "petscdevice.h" I*/ 6*0e6b6b59SJacob Faibussowitsch 7*0e6b6b59SJacob Faibussowitsch namespace Petsc { 8*0e6b6b59SJacob Faibussowitsch 9*0e6b6b59SJacob Faibussowitsch namespace device { 10*0e6b6b59SJacob Faibussowitsch 11*0e6b6b59SJacob Faibussowitsch namespace host { 12*0e6b6b59SJacob Faibussowitsch 13*0e6b6b59SJacob Faibussowitsch class Device : public ::Petsc::device::impl::DeviceBase<Device> { 14*0e6b6b59SJacob Faibussowitsch public: 15*0e6b6b59SJacob Faibussowitsch PETSC_DEVICE_IMPL_BASE_CLASS_HEADER(base_type, Device); 16*0e6b6b59SJacob Faibussowitsch 17*0e6b6b59SJacob Faibussowitsch PETSC_NODISCARD static PetscErrorCode initialize(MPI_Comm, PetscInt *, PetscBool *, PetscDeviceInitType *) noexcept; 18*0e6b6b59SJacob Faibussowitsch 19*0e6b6b59SJacob Faibussowitsch private: 20*0e6b6b59SJacob Faibussowitsch PETSC_CXX_COMPAT_DECL(constexpr PetscDeviceType PETSC_DEVICE_IMPL_()) { return PETSC_DEVICE_HOST; } 21*0e6b6b59SJacob Faibussowitsch 22*0e6b6b59SJacob Faibussowitsch PETSC_NODISCARD static PetscErrorCode get_attribute_(PetscInt, PetscDeviceAttribute, void *) noexcept; 23*0e6b6b59SJacob Faibussowitsch }; 24*0e6b6b59SJacob Faibussowitsch 25*0e6b6b59SJacob Faibussowitsch } // namespace host 26*0e6b6b59SJacob Faibussowitsch 27*0e6b6b59SJacob Faibussowitsch } // namespace device 28*0e6b6b59SJacob Faibussowitsch 29*0e6b6b59SJacob Faibussowitsch } // namespace Petsc 30*0e6b6b59SJacob Faibussowitsch 31*0e6b6b59SJacob Faibussowitsch #endif // __cplusplus 32*0e6b6b59SJacob Faibussowitsch 33*0e6b6b59SJacob Faibussowitsch #endif // HOSTDEVICE_HPP 34