MPIPartition
A python module for MPI volume decomposition and particle distribution
Free software: MIT license
Documentation: https://argonnecpac.github.io/MPIPartition
Repository: https://github.com/ArgonneCPAC/MPIPartition
Features
Cartesian partitioning of a cubic volume (arbitrary dimensions) among MPI ranks
Equal area decomposition of the spherical shell (S2) among MPI ranks
distributing particle-data among ranks to the corresponding subvolume / surface segment
overloading particle-data at rank boundaries (“ghost particles”)
Installation
Installing from the PyPI repository:
pip install mpipartition
Installing the development version from the GIT repository
git clone https://github.com/ArgonneCPAC/mpipartition.git
cd mpipartition
python setup.py develop
Requirements
These packages will be automatically installed if they are not already present:
Basic Usage
Check the documentation for an in-depth explanation / documentation.
# this code goes into mpipartition_example.py
from mpipartition import Partition, distribute, overload
import numpy as np
# create a partition of the unit cube with available MPI ranks
box_size = 1.
partition = Partition()
if partition.rank == 0:
print(f"Number of ranks: {partition.nranks}")
print(f"Volume decomposition: {partition.decomposition}")
# create random data
nparticles_local = 1000
data = {
"x": np.random.uniform(0, 1, nparticles_local),
"y": np.random.uniform(0, 1, nparticles_local),
"z": np.random.uniform(0, 1, nparticles_local)
}
# distribute data to ranks assigned to corresponding subvolume
data = distribute(partition, box_size, data, ('x', 'y', 'z'))
# overload "edge" of each subvolume by 0.05
data = overload(partition, box_size, data, 0.05, ('x', 'y', 'z'))
This code can then be executed with mpi:
mpirun -n 10 python mpipartition_example.py
A more applied example, using halo catalogs from a HACC cosmological simulation (in the GenericIO data format):
from mpipartition import Partition, distribute, overload
import numpy as np
import pygio
# create a partition with available MPI ranks
box_size = 64. # box size in Mpc/h
partition = Partition(3) # by default, the dimension is 3
# read GenericIO data in parallel
data = pygio.read_genericio("m000p-499.haloproperties")
# distribute
data = distribute(partition, box_size, data, [f"fof_halo_center_{x}" for x in "xyz"])
# mark "owned" data with rank (allows differentiating owned and overloaded data)
data["status"] = partition.rank * np.ones(len(data["fof_halo_center_x"]), dtype=np.uint16)
# overload by 4Mpc/h
data = overload(partition, box_size, data, 4., [f"fof_halo_center_{x}" for x in "xyz"])
# now we can do analysis such as 2pt correlation functions (up to 4Mpc/h)
# or neighbor finding, etc.
Metadata
Release files for mpipartition 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mpipartition-1.5.0.tar.gz | 18.3 kB | Without provenance | Details for mpipartition-1.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mpipartition-1.5.0-py3-none-any.whl | Python 3 | none | any | Details for mpipartition-1.5.0-py3-none-any.whl |
Total release size: 42.2 kB
Release files / mpipartition-1.5.0.tar.gz
| Download URL | mpipartition-1.5.0.tar.gz |
|---|---|
| Size | 18.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5d8e1cfce04dc54e986dc04a8bed5319a69d2eeb26fabe1440089eabf29b0f8
|
|
BLAKE2b-256 checksum How to use checksums |
e4b06ce9dc49717defa946d04bb15e4f078fead98dcfaa00140701d9abb72b54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1012-azure
|
Release files / mpipartition-1.5.0-py3-none-any.whl
| Download URL | mpipartition-1.5.0-py3-none-any.whl |
|---|---|
| Size | 23.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b50d834a19da7cdf8221e9aa1bb1f351fd54dba75998276864a6a133cf4510f0
|
|
BLAKE2b-256 checksum How to use checksums |
f5799cfafc8eb58272df88586fc465d462ab975cfabbcb0b12ffba6563143be1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.11.12 Linux/6.11.0-1012-azure
|
Security for mpipartition 1.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.