Skip to content

lorenzovarese/basics-of-hpc

Repository files navigation

🚀 Basics of High Performance Computing (HPC)

Welcome to "Basics of High Performance Computing"! This repository is an aggregation of projects and studies focusing on various aspects of HPC. It serves as a resource for understanding and implementing efficient computational methods in high-performance environments.

How to Navigate this Repository

To get the most out of this repository, we recommend the following steps:

  1. 📁 Choose a Project: Start by selecting a project folder that aligns with your interests or learning goals.
  2. 📚 Review the Report: Each project comes with a detailed report (pX_report.pdf) that provides insights into the project's objectives, methodologies, and results.
  3. 🔍 Dive into the Code: Explore the code within each project to understand the practical application of HPC concepts.

Project Overview

🧮 Project 1: Memory Hierarchies and Matrix-Matrix Multiplications

  • Objective: Investigate the impact of memory hierarchies on the performance of matrix-matrix multiplication algorithms.
  • Key Concepts: Cache optimization, blocking techniques.

🧵 Project 2: Parallel Programming using OpenMP

  • Objective: Implement parallel algorithms using OpenMP and analyze the performance gains.
  • Key Concepts: Parallel loops, synchronization, workload distribution.

🌐 Project 3: Parallel Space Solution of a Nonlinear PDE using OpenMP

  • Objective: Solve a nonlinear partial differential equation (PDE) in parallel using OpenMP.
  • Key Concepts: Numerical methods for PDEs, parallel numerical algorithms.

📡 Project 4: Parallel Programming using the Message Passing Interface (MPI)

  • Objective: Explore MPI for implementing scalable parallel algorithms.
  • Key Concepts: Process communication, data distribution, MPI programming model.

🌊 Project 5: Parallel Nonlinear PDE Solution using MPI

  • Objective: Solve a nonlinear PDE using MPI, focusing on distributed computing aspects.
  • Key Concepts: Distributed memory computing, parallel solution of PDEs, performance analysis.