DDStore

DDStore logo

Efficient distributed data loading for distributed data-parallel (DDP) training.

Each rank holds a shard of the dataset in memory; any rank reads any sample by global index through one-sided remote memory access (MPI RMA or libfabric RDMA), without coordination.

  • Batched reads: get_batch() reads a whole batch in one call.

  • GPUDirect RDMA: data can live in, and be read straight into, GPU memory (details).

  • PyTorch integration: pyddstore.torch: DistDataset (any map-style dataset), WindowedDataset (multi-row samples), ThreadDataLoader (threads; safe with MPI and GPU buffers). PyTorch’s DataLoader with forked workers also works (methods 1 and 2).

  • Thread-safe reads, a read-time profiler, and a split mode (method=2) where one job reads data published by another.

  • MPI optional: methods 1 and 2 also run without MPI (DDSTORE_MPI=0), launched by srun.

DDStore architecture