A microcontroller based cluster computer for computing image convolutions. Designed and implemented to fulfill the final project requirement for "ECE 574: Cluster Computing" at the University of Maine, Orono. Read all about it here: Final project report (quite rushed).
TODO (you're pretty savvy, right? Just look at pico_cluster.png and check out which GPIO pins are used for what in the code eh?)
-
Install the rpi pico sdk somewhere on your computer: pico-sdk
-
Enter a linux environment (WSL)
-
mkdir build cd build export PICO_SDK_PATH=../relative/path/to/the/cloned/directory/named/pico-sdk cmake .. make
-
Copy the
head_pico.uf2
file to the head node pico -
Copy the
compute_pico.uf2
file to each compute pico
- Connect the head node to your PC with a microUSB cable.
- Execute ./client.py with an image to compute a convolution over.
Use the --help
command line argument for more in-depth usage.
For example, ./client.py assumes the first available serial connection is the head node, but you can specify it with the --port
argument.
Documentation related to the project is contained in docs/. docs/Journal.md contains notes and thoughts that I felt like committing to memory during the development of the project. docs/writeup/ contains a copy of the Overleaf project used to compile the final report. In theory I could compile this locally but I haven't bothered to learn to do that yet.