Skip to content

University assignments in the field of Parallel Programming. Parallelism and Concurrency in Ada, Java, C++, C#, Python, OpenMP, MPI, OpenCL.

Notifications You must be signed in to change notification settings

valerii-martell/Parallel-Programming

Repository files navigation

Parallel-Programming

Codacy Badge

Programming assignments in university courses "Parallel Programming" and "Parallel Programming for Computer Systems". Several programs from my scientific practise.

Main stack of used technologies:

  1. Ada (semaphores, protected units, randezvous)
  2. Java (semaphores, synchronized, custom generalized monitors and barriers, volatile, fork-join concurrency)
  3. C# (semaphores, mutexes, volatile, monitors, locks, critical sections, parallel.for, parallel.foreach, parallel.invoke)
  4. Python (multiprocessing, threading)
  5. C++ (WinAPI threading)
  6. OpenMP via C++ (pragma omp parallel, for, reduce, locks, barriers, scheduling, etc.)
  7. MPI via C++ (basic multiprocessing, blocking send/receive, structuring, communicators, synchronization, etc.).
  8. OpenCL via C# and C++ (for CPU-GPU text recognition problem) Much deeper work with OpenMP and MPI was carried out on a separate course, repository: https://github.com/valerii-martell/High-Performance-Computing

Main problems considered:

  1. Thread/Process Synchronization Problem
  2. Mutual Exclusion Problem

Applied tasks, the parallel implementation of which is implemented:

  1. Vector-matrix arithmetic operations
  2. Search for minimum / maximum
  3. Merge sort
  4. Text recognition

The work of parallel systems is considered and emulated:

  1. (Scalable) Systems with Shared Memory
  2. (Scalable) Systems with Local Memory

Models of fixed and scalable systems are built, practical problems in them are solved.

The parallelism of different degree of granularity is considered, namely:

  1. Coarse-grained parallelism
  2. Medium-grained parallelism
  3. Fine-grained parallelism

The Fork-Join mechanism based on the Divide-and-Conquer algorithm is considered.

The basics of separate use of GPU and joint use of CPU and GPU for solving the practical problem of text recognition by an elementary neural network are considered.

Based on this, several scientific articles in international journals and theses in international conferences proceedings have been published. See my CV for details: https://www.overleaf.com/read/jbjyzwftsrsn https://github.com/valerii-martell/CV_LaTeX

About

University assignments in the field of Parallel Programming. Parallelism and Concurrency in Ada, Java, C++, C#, Python, OpenMP, MPI, OpenCL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published