This repository contains a structured set of lab exercises in C and MPI that explore parallel programming, distributed systems, and core HPC concepts.
The labs progressively build understanding from basic data structures to advanced distributed communication patterns used in high-performance computing.
Through these labs, I learned and implemented:
- Point-to-point communication (
Send,Recv,Sendrecv) - Non-blocking communication (
Isend,Irecv,Waitall) - One-sided communication (MPI RMA with windows)
- Collective communication (
Reduce,Bcast) - Cartesian process topologies
- Halo / ghost-cell exchange
- Domain decomposition
- Communication vs computation overlap
- Parallel reductions
- Monte Carlo simulations
- Distributed aggregation patterns
- 1D heat equation solver
- Finite difference methods
- Stencil-based computations
- Binary Search Tree (BST)
- Recursion and iteration
- Tree traversal, validation, and deep copying
PDS_Labs/
│
├── Lab 1 → binary_search_tree.c
├── Lab 2 → mpi_heat_1d_rma.c
├── Lab 3 → mpi_heat_1d_nonblocking.c
├── Lab 4 → mpi_halo_exchange_sendrecv.c
├── Lab 5 → mpi_galton_board.c
├── Lab 6 → mpi_cartesian_reduce_blocking.c