xref: /petsc/src/sys/objects/device/impls/host/hostdevice.cxx (revision 31d78bcd2b98084dc1368b20eb1129c8b9fb39fe)
10e6b6b59SJacob Faibussowitsch #include "hostdevice.hpp"
20e6b6b59SJacob Faibussowitsch 
3d71ae5a4SJacob Faibussowitsch namespace Petsc
4d71ae5a4SJacob Faibussowitsch {
50e6b6b59SJacob Faibussowitsch 
6d71ae5a4SJacob Faibussowitsch namespace device
7d71ae5a4SJacob Faibussowitsch {
80e6b6b59SJacob Faibussowitsch 
9d71ae5a4SJacob Faibussowitsch namespace host
10d71ae5a4SJacob Faibussowitsch {
110e6b6b59SJacob Faibussowitsch 
initialize(MPI_Comm comm,PetscInt * defaultDeviceId,PetscBool * defaultView,PetscDeviceInitType * defaultInitType)12d71ae5a4SJacob Faibussowitsch PetscErrorCode Device::initialize(MPI_Comm comm, PetscInt *defaultDeviceId, PetscBool *defaultView, PetscDeviceInitType *defaultInitType) noexcept
13d71ae5a4SJacob Faibussowitsch {
140e6b6b59SJacob Faibussowitsch   PetscFunctionBegin;
150e6b6b59SJacob Faibussowitsch   // the host is always id 0
160e6b6b59SJacob Faibussowitsch   *defaultDeviceId = 0;
170e6b6b59SJacob Faibussowitsch   // the host is always "lazily" initialized
180e6b6b59SJacob Faibussowitsch   *defaultInitType = PETSC_DEVICE_INIT_LAZY;
190e6b6b59SJacob Faibussowitsch 
200e6b6b59SJacob Faibussowitsch   PetscOptionsBegin(comm, nullptr, "PetscDevice host Options", "Sys");
210e6b6b59SJacob Faibussowitsch   PetscCall(base_type::PetscOptionDeviceView(PetscOptionsObject, defaultView, nullptr));
220e6b6b59SJacob Faibussowitsch   PetscOptionsEnd();
23*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
240e6b6b59SJacob Faibussowitsch }
250e6b6b59SJacob Faibussowitsch 
get_attribute_(PetscInt,PetscDeviceAttribute attr,void * value)26d71ae5a4SJacob Faibussowitsch PetscErrorCode Device::get_attribute_(PetscInt, PetscDeviceAttribute attr, void *value) noexcept
27d71ae5a4SJacob Faibussowitsch {
280e6b6b59SJacob Faibussowitsch   PetscFunctionBegin;
290e6b6b59SJacob Faibussowitsch   switch (attr) {
30d71ae5a4SJacob Faibussowitsch   case PETSC_DEVICE_ATTR_SIZE_T_SHARED_MEM_PER_BLOCK:
31d71ae5a4SJacob Faibussowitsch     *static_cast<std::size_t *>(value) = 64000;
32d71ae5a4SJacob Faibussowitsch     break;
33d71ae5a4SJacob Faibussowitsch   default:
34d71ae5a4SJacob Faibussowitsch     PetscUnreachable();
350e6b6b59SJacob Faibussowitsch   }
36*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
370e6b6b59SJacob Faibussowitsch }
380e6b6b59SJacob Faibussowitsch 
390e6b6b59SJacob Faibussowitsch } // namespace host
400e6b6b59SJacob Faibussowitsch 
410e6b6b59SJacob Faibussowitsch } // namespace device
420e6b6b59SJacob Faibussowitsch 
430e6b6b59SJacob Faibussowitsch } // namespace Petsc
44