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