diff --git a/include/internal/fmpi_mpi.h b/include/internal/fmpi_mpi.h
index 5de44f6cd141b4975c17237778859e2b24e9547a..b77dbbe221f4d3cda87085f9b8f7c412f79205fc 100644
--- a/include/internal/fmpi_mpi.h
+++ b/include/internal/fmpi_mpi.h
@@ -243,6 +243,10 @@ int fmpi_mpi_world_reduce_in_place(
 int fmpi_mpi_dims_create(
     const struct fmpi_mpi_ctx * ctx, size_t * const dim_len, size_t dim_cnt
 );
+/*------------------------------------------------------------------------------
+    fmpi_mpi_world_size()
+------------------------------------------------------------------------------*/
+int fmpi_mpi_world_size(const struct fmpi_mpi_ctx * ctx);
 /*==============================================================================
     GUARD
 ==============================================================================*/
diff --git a/src/fmpi_mpi.c b/src/fmpi_mpi.c
index 1af313b5c27f6d83f7cea3dcfb760b3eaa3cfbce..d0499e9e00f1d21de8e240a308cf8451abe29ec7 100644
--- a/src/fmpi_mpi.c
+++ b/src/fmpi_mpi.c
@@ -336,3 +336,17 @@ int fmpi_mpi_dims_create(
     }
     return fmpi_mpi_check_error(ctx, err, "MPI_Dims_create");
 }
+/*------------------------------------------------------------------------------
+    fmpi_mpi_world_size()
+------------------------------------------------------------------------------*/
+int fmpi_mpi_world_size(const struct fmpi_mpi_ctx * const ctx)
+{
+    assert(ctx != NULL);
+    int size = FMPI_ERROR;
+    int err = MPI_Comm_size(ctx->world, &size);
+    err = fmpi_mpi_check_error(ctx, err, "MPI_Comm_size");
+    if(err != FMPI_SUCCESS) {
+        return err;
+    }
+    return size;
+}