Parallel Execution#

MolSysMT leverages multi-core CPU architectures through parallel thread distribution and hardware vectorization.


Multi-Core Parallel Distribution#

Analytical kernels in MolSysMT divide independent structure tasks across available CPU cores using Rayon multi-threading:

  • Structure Parallelism: Large structure sequences are partitioned into independent work units executed concurrently across threads.

  • Thread Allocation: Thread pool sizing can be set globally for the entire session or overridden for specific function calls.

Global Configuration vs. Function Override#

import molsysmt as msm

# 1. Set global session default (use auto-detection with 8 threads)
msm.configure.set_parallelization(parallel='auto', num_threads=8)

# 2. Function call inheriting session configuration
distances = msm.structure.get_distances(system, selection='all')

# 3. Function call overriding parallelization for a single execution
distances = msm.structure.get_distances(system, selection='all', parallel=True, num_threads=4)

# 4. Force single-threaded execution
distances = msm.structure.get_distances(system, selection='all', parallel=False)

Hardware SIMD Vectorization#

In addition to multi-core thread distribution, inner numerical loops within MolSysMT’s compiled Rust kernels maintain sequential, memory-contiguous array layouts. This design allows compilers to generate SIMD (Single Instruction, Multiple Data) instructions, enabling CPUs to process multiple coordinate floats in parallel within a single clock cycle.