numba_mpi.api.size

MPI_Comm_size() implementation

 1"""MPI_Comm_size() implementation"""
 2
 3import ctypes
 4
 5import numba
 6import numpy as np
 7
 8from numba_mpi.common import _MPI_Comm_World_ptr, _MpiComm, libmpi
 9from numba_mpi.utils import _mpi_addr
10
11_MPI_Comm_size = libmpi.MPI_Comm_size
12_MPI_Comm_size.restype = ctypes.c_int
13_MPI_Comm_size.argtypes = [_MpiComm, ctypes.c_void_p]
14
15
16@numba.njit()
17def size():
18    """wrapper for MPI_Comm_size(), in case of failure returns 0"""
19    value = np.empty(1, dtype=np.intc)
20    status = _MPI_Comm_size(_mpi_addr(_MPI_Comm_World_ptr), value.ctypes.data)
21    if status != 0:
22        value[0] = 0
23    return value[0]
@numba.njit()
def size():
17@numba.njit()
18def size():
19    """wrapper for MPI_Comm_size(), in case of failure returns 0"""
20    value = np.empty(1, dtype=np.intc)
21    status = _MPI_Comm_size(_mpi_addr(_MPI_Comm_World_ptr), value.ctypes.data)
22    if status != 0:
23        value[0] = 0
24    return value[0]

wrapper for MPI_Comm_size(), in case of failure returns 0