1*0e6b6b59SJacob Faibussowitsch #include "hostdevice.hpp" 2*0e6b6b59SJacob Faibussowitsch 3*0e6b6b59SJacob Faibussowitsch namespace Petsc { 4*0e6b6b59SJacob Faibussowitsch 5*0e6b6b59SJacob Faibussowitsch namespace device { 6*0e6b6b59SJacob Faibussowitsch 7*0e6b6b59SJacob Faibussowitsch namespace host { 8*0e6b6b59SJacob Faibussowitsch 9*0e6b6b59SJacob Faibussowitsch PetscErrorCode Device::initialize(MPI_Comm comm, PetscInt *defaultDeviceId, PetscBool *defaultView, PetscDeviceInitType *defaultInitType) noexcept { 10*0e6b6b59SJacob Faibussowitsch PetscFunctionBegin; 11*0e6b6b59SJacob Faibussowitsch // the host is always id 0 12*0e6b6b59SJacob Faibussowitsch *defaultDeviceId = 0; 13*0e6b6b59SJacob Faibussowitsch // the host is always "lazily" initialized 14*0e6b6b59SJacob Faibussowitsch *defaultInitType = PETSC_DEVICE_INIT_LAZY; 15*0e6b6b59SJacob Faibussowitsch 16*0e6b6b59SJacob Faibussowitsch PetscOptionsBegin(comm, nullptr, "PetscDevice host Options", "Sys"); 17*0e6b6b59SJacob Faibussowitsch PetscCall(base_type::PetscOptionDeviceView(PetscOptionsObject, defaultView, nullptr)); 18*0e6b6b59SJacob Faibussowitsch PetscOptionsEnd(); 19*0e6b6b59SJacob Faibussowitsch PetscFunctionReturn(0); 20*0e6b6b59SJacob Faibussowitsch } 21*0e6b6b59SJacob Faibussowitsch 22*0e6b6b59SJacob Faibussowitsch PetscErrorCode Device::get_attribute_(PetscInt, PetscDeviceAttribute attr, void *value) noexcept { 23*0e6b6b59SJacob Faibussowitsch PetscFunctionBegin; 24*0e6b6b59SJacob Faibussowitsch switch (attr) { 25*0e6b6b59SJacob Faibussowitsch case PETSC_DEVICE_ATTR_SIZE_T_SHARED_MEM_PER_BLOCK: *static_cast<std::size_t *>(value) = 64000; break; 26*0e6b6b59SJacob Faibussowitsch default: PetscUnreachable(); 27*0e6b6b59SJacob Faibussowitsch } 28*0e6b6b59SJacob Faibussowitsch PetscFunctionReturn(0); 29*0e6b6b59SJacob Faibussowitsch } 30*0e6b6b59SJacob Faibussowitsch 31*0e6b6b59SJacob Faibussowitsch } // namespace host 32*0e6b6b59SJacob Faibussowitsch 33*0e6b6b59SJacob Faibussowitsch } // namespace device 34*0e6b6b59SJacob Faibussowitsch 35*0e6b6b59SJacob Faibussowitsch } // namespace Petsc 36