Source code for gnrs.parallel
"""
This module provides parallel processing utilities for Genarris.
This source code is licensed under the BSD-3 license found in the
LICENSE file in the root directory of this source tree.
"""
from __future__ import annotations
__author__ = ["Yi Yang", "Rithwik Tom"]
__email__ = "yiy5@andrew.cmu.edu"
__group__ = "https://www.noamarom.com/"
import logging
import random
import numpy as np
from mpi4py import MPI
logger = logging.getLogger("parallel")
comm = None
rank = None
size = None
is_master = None
base_seed = None
[docs]
def init_parallel(comm_in: MPI.Comm, seed: int = 42) -> None:
"""
Initialize parallel environment with MPI communicator.
Args:
comm_in: MPI communicator object
seed: Random seed
"""
global comm, rank, size, is_master, base_seed
comm = comm_in
rank = comm.Get_rank()
size = comm.Get_size()
is_master = rank == 0
base_seed = seed
rank_seed = base_seed + rank
random.seed(rank_seed)
np.random.seed(rank_seed)