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 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 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