numba_mpi.api.rank
MPI_Comm_rank() implementation
1"""MPI_Comm_rank() 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_rank = libmpi.MPI_Comm_rank 12_MPI_Comm_rank.restype = ctypes.c_int 13_MPI_Comm_rank.argtypes = [_MpiComm, ctypes.c_void_p] 14 15 16@numba.njit() 17def rank(): 18 """wrapper for MPI_Comm_rank(), in case of failure returns 0""" 19 value = np.empty(1, dtype=np.intc) 20 status = _MPI_Comm_rank(_mpi_addr(_MPI_Comm_World_ptr), value.ctypes.data) 21 if status != 0: 22 value[0] = 0 23 return value[0]
@numba.njit()
def
rank():
17@numba.njit() 18def rank(): 19 """wrapper for MPI_Comm_rank(), in case of failure returns 0""" 20 value = np.empty(1, dtype=np.intc) 21 status = _MPI_Comm_rank(_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_rank(), in case of failure returns 0