Welcome to my project portfolio for Parallel Computing. This repository showcases my exploration of parallel programming techniques, optimizations, and performance analysis, developed as part of my self-study at Lipscomb University.
This portfolio is a collection of assignments, experiments, and optimizations crafted to deepen my understanding of parallel computing concepts.
- Learn parallel programming paradigms (e.g., OpenMP, SIMD).
- Optimize algorithms for speed and resource efficiency.
- Analyze performance bottlenecks (cache, memory, CPU utilization).
- Apply vectorization techniques using modern instruction sets (e.g., AVX2).
- Benchmark and compare sequential vs. parallel implementations.
A high-performance Gaussian blur implementation in C, achieving a 500x speedup over a naive box blur (kernel size 60) using AVX2 SIMD instructions. It leverages a separable two-pass approach with sliding windows, processing 8 pixels per cycle.
mkdir build
cd build
cmake ..
make
./blur_all <input_image> <output_image> <kernel_size>./blur_all ../images/input.png ../images/output.png 10See the Gaussian Blur README for full details.
Parallelized a matrix multiply, achieving a max 6.11% speedup on 11 threads.
- Languages: C (primary), Python(analysis)
- Parallel Frameworks: OpenMP for multi-threading, AVX2 for SIMD.
- Build System: CMake for cross-platform compatibility, Make.
- External Libraries: STB Image for image I/O.
- Hardware: 6-Core AMD Ryzen 5 3600 with AVX2 support, 16Gi DDR4 RAM.
git clone <repository-url>
cd ParallelDr. Dwayne Towell: For inspiring this deep dive into parallelism.