This repository contains implementations of convolution operations using OpenMPI to demonstrate the efficiency of parallel computing. The code is organized into several C programs that perform channel-wise and kernel-wise convolutions, optimized with BLAS for enhanced performance.
Channel-wise Convolution: Distributes image channels across MPI nodes.
Kernel-wise Convolution: Distributes convolution kernels across MPI nodes.
Performance Comparison: Python scripts to compare execution times and efficiency.
MPI (Message Passing Interface)
BLAS (Basic Linear Algebra Subprograms)
To run the programs, clone this repository and use the provided shell scripts:
git clone https://github.com/ardacekic/openMPIConv
cd openMPIConv
You can use WindowConvolution to generate results for Basic Window Convolution Version cd WindowConvolution python3 pipe_window.py
You can use Im2ColBLASConvolution to generate results for BLAS optimized Version
cd WindowConvolution
python3 pipe_window.py
In each file you can change pipe script to use for different channel-kernel-processes options also you can change kernel and input sizes as well.
Default input size 64x64xC and kernel size Nx3x3xC, stride 1, padding 0 assumed for Densest Layer of Resnet50
Blas Optimized Version of MPI vs Python(PyTorch) Metrics
Window Convolution Version of MPI vs Python(PyTorch) Metrics
![]()
Window Convolution Version of MPI vs Python(PyTorch) Metrics Densest Layer
![]()
Blas Optimized Version of MPI vs Python(PyTorch) Metrics Densest Layer
![]()
Blas Optimized Version of MPI vs Python(PyTorch) Metrics Densest Layer Speedup
![]()
Window Convolution Version of MPI vs Python(PyTorch) Metrics Densest Layer Speedup
![]()
Contributions are welcome. Please fork the repository and submit pull requests with your enhancements.