xref: /petsc/src/sys/objects/device/impls/host/hostdevice.hpp (revision 0e6b6b5985dd9b1172860d21fb88bd3966bf7c54)
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