Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.

HPC Solver for the Ball Tree algorithm implemented using OpenMP and MPI. Implemented in C achieving a final grade of 19/20 for the CPD course on the 2nd semester of 2020/2021.

Notifications You must be signed in to change notification settings

jeduardobras/hpc-ball-alg-solver

This branch is 7 commits ahead of MVBarros/Paralel-Distributed-Computing-Project:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3406fa5 · May 2, 2024
May 20, 2021
May 18, 2021
May 18, 2021
May 5, 2021
May 2, 2024
May 4, 2021

Repository files navigation

This project implements a parallel Ball Tree construction algorithm in a Distributed-Memory environment. The implementation focuses on problem decomposition, synchronization concerns, and load balancing to improve performance.

Contributors

Overview

The project aims to efficiently construct a Ball Tree data structure in a distributed memory setting. The algorithm splits the point set among available processes, enabling the handling of larger problem instances that do not fit on a single machine.

Key Features

  • Problem decomposition for distributing workload among processes
  • Synchronization mechanisms for efficient parallel computation
  • Load balancing strategies to optimize performance

Benchmark Results

The parallel implementation shows significant speedup compared to the sequential version, with a 36% improvement for larger inputs. The speedup scales with the number of processes up to a certain point, after which communication overhead limits further gains.

How to Run

  1. Clone the repository to your local machine.

  2. Compile the project using the provided Makefile. make

  3. Run the executable with the desired input parameters. mpirun -np <num_processes> ./ball_tree_construction <input_file>

Example: mpirun -np 4 ./ball_tree_construction input_data.txt

  1. View the output results and performance metrics.

Source Files

  • ball_tree_construction.cpp: Main source code file for the Ball Tree construction algorithm.
  • Makefile: Makefile for compiling the project.
  • input_data.txt: Sample input data file.

Dependencies

  • OpenMPI
  • C/C++ compiler

Additional Information

For more details on the project implementation, performance analysis, and algorithm insights, refer to the full report g29report.pdf.

About

HPC Solver for the Ball Tree algorithm implemented using OpenMP and MPI. Implemented in C achieving a final grade of 19/20 for the CPD course on the 2nd semester of 2020/2021.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 86.7%
  • Python 7.5%
  • Shell 4.3%
  • Makefile 1.5%