This repository serves as an index for my assignments in the Parallel and Distributed Systems course, offered by the Department of Electrical and Computer Engineering at Aristotle University of Thessaloniki.
Each assignment is maintained as a separate repository with its own source code, documentation, and performance analysis.
Parallel implementations of the connected components problem for sparse graphs, focusing on shared-memory parallelism and performance benchmarking.
- Technologies: C, OpenMP, POSIX Threads, OpenCilk
- Repository: https://github.com/dimgerasimou/pds-hw1-connected-components
A distributed-memory connected components implementation designed for large-scale sparse graphs on HPC systems using MPI and OpenMP.
- Technologies: C, MPI, OpenMP, SLURM
- Repository: https://github.com/dimgerasimou/pds-hw2-mpi-connected-components
A single-GPU implementation of the connected components problem for large sparse graphs, using CUDA and an atomic Union-Find–based approach. Multiple kernel mappings are explored in addition to a CPU baseline for reproducible automated performance benchmarking.
- Technologies: C, CUDA, NVIDIA GPUs
- Repository: https://github.com/dimgerasimou/pds-hw3-cuda-connected-components
- Parallel graph algorithms
- Shared-memory parallelism
- Distributed-memory programming with MPI
- Hybrid MPI + OpenMP models
- Performance benchmarking and scalability analysis
- Execution on SLURM-managed HPC clusters
- GPU programming with CUDA
- Fine-grained parallelism and atomic synchronization on GPUs
Aristotle University of Thessaloniki • 2025 — 2026