Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

EduHPC-18 Peachy Assignment: Energy Storms Simulation

This repository contains the code and documentation for the project developed for the Embedded and Multicore Systems Programming coursework during my Bachelor's degree in Computer Science at Sapienza University of Rome.

Project Description

The project implements the EduHPC-18 Peachy Assignment. The goal is to optimize and parallelize a computational algorithm for the "Energy Storms" simulation. The computation is divided into three main phases: calculating the impacts of energy storms on a grid, a relaxation phase using a 1D stencil operation to simulate dissipation, and the detection of the global maximum energy peak. The problem requires applying strategies to drastically reduce computation times on multi-core and GPU architectures, while strictly guaranteeing bit-wise reproducible floating-point results compared to the baseline.

Repository Structure

  • 📄 handout.pdf: Contains the original EduHPC-18 Peachy Assignment prompt, outlining the rules and constraints of the simulation.
  • 📊 report.pdf: Detailed technical report. It documents the profiling process, architectural choices, and benchmark analysis (including weak and strong scalability, bandwidth saturation, and load balancing).
  • ⏳ energy_storms_seq.c & energy_storms_core.c: The starting sequential implementation (baseline).
  • 🖥️ energy_storms_mpi_omp.c & energy_storms_mpi_omp_core.c: Hybrid implementation for multi-node architectures. It uses MPI for distributed memory domain decomposition and OpenMP for thread-level parallelism within shared memory nodes.
  • 🚀 energy_storms_cuda.cpp & energy_storms_cuda_core.cu: Massively parallel implementation optimized for hardware accelerators using CUDA.
  • ⚙️ student.mk: Makefile containing the specific compilation flags required to correctly compile and link both the CUDA and MPI/OpenMP executables.

Performance and Benchmarks

The execution tests documented on the standard 20k cells dataset show substantial performance improvements and execution time reductions compared to the sequential baseline:

  • Sequential Baseline (SEQ): 7.40 s
  • Hybrid Version (MPI + OpenMP): 0.0455 s (Speedup of 162.6x)
  • Accelerated Version (CUDA): 0.0210 s (Speedup of 352.0x)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages