ParallelPCA is a program that implements a distributed algorithm for Principal Components Analysis. The two methodologies implemented are multithreading and message passing between multiple processes. The input and output is performed with grayscale images for visualization and simplicity, but can be easily applied to RGB images and other objects.
# PARALLEL_PCA=/path/to/clone/ParallelPCA
git clone https://github.com/rubenciranni/ParallelPCA.git $PARALLEL_PCA
The following packages are required to run the application:
cmake
mpi
pthreads
jpeg
lapacke
cblas
Inside any of the pthreads/
, mpi/
, serial/
directories:
mkdir build
cd build
cmake ..
make
./main <n_threads> <image path> <n_principal_components> <style (optional)>
mpirun -n <number of processes> ./main <image path> <number of components> <normalization style (optional)>
./main <image path> <n_components> <style (optional)>
We're a group of three hard-working university students at Sapienza University of Rome. ParallelPCA is a project that we have undertaken as part of our academic curriculum, specifically designed to fulfill the requirements of one of our examinations - Embedded and Multicore Systems Programming. For any clarifications or further information regarding the project, please feel free to reach out to us.
ParallelPCA is released under the MIT License.