Add introduction in the README
Merge repositories
Problems from "Introduction to parallel and distributed programming" class, conducted by Maciej MrowiĊski, PhD in the winter semester of 2022 at Faculty of Physics, Warsaw University of Technology.
Each problem is described in ./doc/problem*.md
(in Polish) and solved in a separate
workspace using various programming tools.
Workspace: ./mandelbrot/
Maven project that generates an image of the Mandelbrot set.
Compile and run with
mvn clean compile exec:java
Build a distributable JAR (including dependencies) with
mvn clean compile package
The calcualtions have O(N^2) complexity, where N is the side length of the image. Different types of multithreading strategies are possible - visualized on the image below.
The plot is generated using
python3 doc/mandelbrot.py # requires Pandas and pyplot
Workspace: ./pms/
Rust implementation of a parallel mergesort algorithm.
Each merger for a given block size is done in parrallel using rayon.
A comparision with the Rust builitn [T]::sort()
can be performed by running
cargo test --release
The results for Ryzen 4500U hexa-core processor are presented below.
Workspace: ./rabbit-chat/
Simple python chat program with absoultely ZERO security (impersonation is as easy as choosing someone's nick).
Start the RabbitMQ server locally with docker compose up -d
.
usage: rabbit-chat [-h] [-r ROOM] [--host HOST] NICK
Simple line-based chat client using RabbitMQ.
Connects to the server and starts a chat by reading/writing to the specified queue (or
"global" if unspecified).
positional arguments:
NICK Nick used for indentification in chat
options:
-h, --help show this help message and exit
-r ROOM, --room ROOM Chatroom to join (default 'global')
--host HOST RabbitMQ host to connect to (default 'localhost')
Join a room and send some messages!
To exit, simpy Ctrl+C
.
Workspace: conway_cuda.ipynb
The notebook can be run in Google Colab if a local Nvidia GPU is not available.