https://github.com/ghonimo/linear-equations-solver-with-parallel-lu-decomposition-ece588
A system of linear equations solver with a parallel LU Decomposition algorithm implemented using Pthreads at its core. C/C++ implementations with and without pivoting. Thoroughly documented and benchmarked on an intel linux system and a macbook pro with Apple Silicon M3pro chip. This project was developed as a project at Portland State University
https://github.com/ghonimo/linear-equations-solver-with-parallel-lu-decomposition-ece588
apple-silicon benchmark decomposition hpc hyperthreading intel linear lu lu-decomposition m3-chip m3pro matrix matrix-factorization matrix-generation parallel-computing parallel-programming portland-state-university pthreads solver
Last synced: over 1 year ago
JSON representation
A system of linear equations solver with a parallel LU Decomposition algorithm implemented using Pthreads at its core. C/C++ implementations with and without pivoting. Thoroughly documented and benchmarked on an intel linux system and a macbook pro with Apple Silicon M3pro chip. This project was developed as a project at Portland State University
- Host: GitHub
- URL: https://github.com/ghonimo/linear-equations-solver-with-parallel-lu-decomposition-ece588
- Owner: Ghonimo
- Created: 2024-02-17T09:15:16.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-23T19:53:20.000Z (about 2 years ago)
- Last Synced: 2025-01-08T08:45:56.532Z (over 1 year ago)
- Topics: apple-silicon, benchmark, decomposition, hpc, hyperthreading, intel, linear, lu, lu-decomposition, m3-chip, m3pro, matrix, matrix-factorization, matrix-generation, parallel-computing, parallel-programming, portland-state-university, pthreads, solver
- Language: C
- Homepage:
- Size: 107 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Parallel Matrix Solver 🚀
Welcome to the Parallel Matrix Solver project! This project is designed to solve large systems of linear equations using LU Decomposition, leveraging the power of parallel computing to speed up computations. Perfect for educational purposes and anyone interested in exploring the efficiency of parallel algorithms.
## Project Directory Structure 📚
Dive into the heart of our Parallel Matrix Solver project. Here's how everything is organized:
### Source Code 🧬
`src/` - This is where the magic happens! Our source code directory includes both serial and parallel implementations of the LU Decomposition algorithm.
- `parallel_solver.c`: Embark on a journey with our parallel version, optimized with Pthreads for concurrency.
- `sequential_solver.c`: The classic approach to LU Decomposition. Perfect for understanding the basics and performance comparison.
- `...`: Other variations and utilities to explore different implementations of LU Decomposition.
### Headers 📑
`include/` - All our project-wide declarations live here.
- `matrix.h`: Essential definitions and function prototypes for matrix operations.
### Documentation 📖
`docs/` - Need guidance? Our docs have got you covered!
- `setup.md`: Get up and running with detailed setup instructions.
- `usage.md`: Learn how to wield our solver with comprehensive usage instructions.
- `...`: Additional documentation and design logs for our project.
### Benchmarks 📈
`benchmarks/` - Curious about performance? Check out our benchmarks!
- `results.md`: Dive into detailed performance analysis and see how our parallel implementation stacks up against the serial one.
### Matrices 🧩
`matrices/` - Sample matrices for testing and getting a feel of the solver's prowess.
- `...`: A variety of matrices to challenge and benchmark our solver.
### Solutions 🏁
`matrices_solution/` - Wondering if you got it right? Here are the solutions for our sample matrices.
- `...`: Solutions for all provided sample matrices to verify your results.
### Utilities 🔧
`utilities/` - Our utility belt for benchmarking and matrix generation.
- `...`: Tools to help you generate matrices, run benchmarks, and more.
```
## Prerequisites
* A C compiler (GCC, Clang, etc.)
* Pthreads library
## Setup
1. Clone the repository:
```bash
git clone git@github.com:Ghonim/ECE588_Parallel_Matrix.git
```
2. Navigate to the project directory:
```bash
cd ECE588_Parallel_Matrix
```
[Setup Instructions](docs/setup.md)
[Usage Instructions](docs/usage.md)
## Building the Project
The project includes a Makefile for easy compilation of the source code into executable binaries. You can use the following commands to build the project:
- To build all versions of the solver (sequential, parallel, and parallel with pivoting):
```bash
make all
```
- To build specific versions of the solver, use one of the following commands:
For the sequential version:
```bash
make sequential
```
- For the parallel version without pivoting:
```bash
make parallel
```
- For the parallel version with pivoting:
```bash
make pivoting
```