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.
To get the most out of this repository, we recommend the following steps:
- 📁 Choose a Project: Start by selecting a project folder that aligns with your interests or learning goals.
- 📚 Review the Report: Each project comes with a detailed report (
pX_report.pdf
) that provides insights into the project's objectives, methodologies, and results. - 🔍 Dive into the Code: Explore the code within each project to understand the practical application of HPC concepts.
- Objective: Investigate the impact of memory hierarchies on the performance of matrix-matrix multiplication algorithms.
- Key Concepts: Cache optimization, blocking techniques.
- Objective: Implement parallel algorithms using OpenMP and analyze the performance gains.
- Key Concepts: Parallel loops, synchronization, workload distribution.
- Objective: Solve a nonlinear partial differential equation (PDE) in parallel using OpenMP.
- Key Concepts: Numerical methods for PDEs, parallel numerical algorithms.
- Objective: Explore MPI for implementing scalable parallel algorithms.
- Key Concepts: Process communication, data distribution, MPI programming model.
- Objective: Solve a nonlinear PDE using MPI, focusing on distributed computing aspects.
- Key Concepts: Distributed memory computing, parallel solution of PDEs, performance analysis.