Architecture Overview#
The nvalchemi.dynamics module provides a composable framework for
running batched molecular-dynamics (MD) and optimization workflows on
GPUs. It is built around four core ideas:
One base class, two extension points — subclass
BaseDynamicsand override onlypre_update/post_update.A pluggable hook system — observe or modify every stage of the integration step via the
Hookprotocol.Composable convergence criteria —
ConvergenceHooklets you combine multiple criteria with AND semantics and automatically migrate samples between stages.Operator-based composition — fuse stages on a single GPU with
+or distribute across GPUs with|.
┌──────────────────────────────────────────────────────┐
│ BaseDynamics │
│ │
│ ┌─────────┐ ┌──────────┐ ┌────────────┐ │
│ │pre_update│→ │ compute │→ │post_update │ │
│ └─────────┘ └──────────┘ └────────────┘ │
│ ↑ ↑ ↑ │
│ BEFORE/AFTER BEFORE/AFTER BEFORE/AFTER │
│ _PRE_UPDATE _COMPUTE _POST_UPDATE │
│ │
│ ← BEFORE_STEP AFTER_STEP → │
│ ON_CONVERGE → │
└──────────────────────────────────────────────────────┘
Inheritance hierarchy#
object
└── _CommunicationMixin # inter-rank buffers & isend/irecv
└── BaseDynamics # step loop, hooks, compute()
└── FusedStage # single-GPU multi-stage fusion
DistributedPipeline # multi-GPU orchestrator (standalone)
Every BaseDynamics subclass inherits
communication capabilities automatically — no extra mixins required.
Quick-start#
from nvalchemi.dynamics import DemoDynamics
from nvalchemi.dynamics.hooks import LoggingHook, NaNDetectorHook
# 1. Wrap your model
dynamics = DemoDynamics(
model=my_model,
n_steps=10_000,
dt=0.5,
hooks=[LoggingHook(frequency=100), NaNDetectorHook()],
)
# 2. Run
dynamics.run(batch)
Single-GPU multi-stage (relax → MD):
fused = optimizer + md_dynamics # uses the + operator
fused.run(batch) # one forward pass per step
Multi-GPU pipeline (2 ranks):
pipeline = optimizer | md_dynamics # uses the | operator
with pipeline:
pipeline.run() # each rank runs its stage
For a detailed walkthrough of how data flows through buffers, communication channels, and sinks — including the back-pressure mechanism and sample lifecycle — see Buffers & Data Flow.
Key concepts#
Concept |
Description |
|---|---|
|
Coordinates a |
|
A |
|
Nine insertion points covering every phase of a dynamics step. |
|
Composable convergence detector with AND semantics and
optional |
|
Composes N dynamics on one GPU with a shared forward pass. Each sub-stage processes only samples matching its status code. |
|
Maps one |
|
Pluggable storage for graduated / snapshotted samples:
|
|
Bin-packing sampler for inflight batching: graduated samples are replaced on the fly without rebuilding the batch. |
|
Required pre-allocation capacities for inter-rank communication buffers. See Buffers & Data Flow. |