Actual source code: hostdevice.cxx

      1: #include "hostdevice.hpp"

      3: namespace Petsc
      4: {

      6: namespace device
      7: {

      9: namespace host
     10: {

     12: PetscErrorCode Device::initialize(MPI_Comm comm, PetscInt *defaultDeviceId, PetscBool *defaultView, PetscDeviceInitType *defaultInitType) noexcept
     13: {
     14:   PetscFunctionBegin;
     15:   // the host is always id 0
     16:   *defaultDeviceId = 0;
     17:   // the host is always "lazily" initialized
     18:   *defaultInitType = PETSC_DEVICE_INIT_LAZY;

     20:   PetscOptionsBegin(comm, nullptr, "PetscDevice host Options", "Sys");
     21:   PetscCall(base_type::PetscOptionDeviceView(PetscOptionsObject, defaultView, nullptr));
     22:   PetscOptionsEnd();
     23:   PetscFunctionReturn(PETSC_SUCCESS);
     24: }

     26: PetscErrorCode Device::get_attribute_(PetscInt, PetscDeviceAttribute attr, void *value) noexcept
     27: {
     28:   PetscFunctionBegin;
     29:   switch (attr) {
     30:   case PETSC_DEVICE_ATTR_SIZE_T_SHARED_MEM_PER_BLOCK:
     31:     *static_cast<std::size_t *>(value) = 64000;
     32:     break;
     33:   default:
     34:     PetscUnreachable();
     35:   }
     36:   PetscFunctionReturn(PETSC_SUCCESS);
     37: }

     39: } // namespace host

     41: } // namespace device

     43: } // namespace Petsc