You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jason J. Gullickson 6ffc0f23cc WIP: Handle a dynamic number of graphs. 4 months ago
hpl Added HPL setup good for 10Gflops with 5 nodes. 5 months ago
keyboard Cleanup. 6 months ago
raintop WIP: Handle a dynamic number of graphs. 4 months ago Journal updates. 4 months ago Journal updates and beginnings of admin tool. 5 months ago
requirements.txt Beginning to experiment with IPython. 6 months ago

RAIN PSP Software

This is where the base operating system image will live. I'm still trying to figure out exactly how to put that together as there will be distinct images for cluster nodes vs. the front-end, and ideally the cluster node images will require zero configuration.

In addition to the base O/S, the front-end image will include development and management tools for the system.

Firmware for custom hardware may live here as well, but I'm not 100% sure about that yet.

Operating System

The operating system currently consists of Debian-based distros (Raspbian for the Rpi0W front-end, Armbian for the rest of the cluster). Right now it looks like the user environment will be based on IPython as this provides both a rich terminal-based user interface as well as tooling for parallel computing.

New node setup

  1. Burn Amrbian image to SD
  2. Boot and locate pine64so's IP address using DHCP server
  3. ssh root@new.node.ip.addr (password: 1234)
  4. Complete Armbian setup (root password, new user, etc.)
  5. Use armbian-config to configure
    • Personal -> Hostname -> set hostname (i.e. rain-psp-0.local)
    • System -> Avahi -> enable
    • System -> CPU -> set min to min, max to max and mode to ondemand
    • Set static IP (do this last because it will break the ssh connection)
  6. ssh-copy-id -i ~/.ssh/ user@new-host-name.local
  7. ssh new-host-name.local
  8. Edit /etc/default/armbian-ramlog and increase SIZE=50 to SIZE=100
  9. Install packages
    • sudo apt update
    • sudo apt install -y libnss-mdns libnss-mymachines openmpi-bin openmpi-common libopenmpi-dev libatlas-base-dev gfortran
  10. Install HPL
    • From new node:
      • mkdir -p ~/hpl/bin/aarch64-linux
    • From head node:
      • `cd ~/hpl/bin/aarch64-linux``
      • scp * new-host-name.local:/home/jason/hpl/bin/aarch64-linux/
  11. Add new node to machinefile



RAIN-PSP uses a custom keyboard with a PLANCK layout. The keyboard is constructed from CHERRY-MX Blue switches wired into a matrix and connected directly to the Raspberry Pi ZeroW head node (connection details are covered in the hardware README).

QMK Kernel Module

The current implmentation uses a modified version of the QMK Kernel Module project. This code lives in the qmk_kernel_module directory. This consists primarilly of a modified Makefile and a keyboard overlay specific to the RAIN-PSP keyboard.

Layer 1

keyboard layer 1

Layer 2

keyboard layer 2

Building this is currently somewhat complicated and discussed at length in the journal. It involves rebuilding the Linux kernel among other things so I'm hoping to avoid making people do this but I haven't decided on the best way to go about that.

matrix-keyboard kernel driver

Originally, the keyboard was driven by the matrix-keyboard kernel driver using a custom device tree overlay. This code can be found in the matrix-keyboard directory.

Building and installing the matrix-keyboard driver keyboard overlay

  • cd keyboard\matrix-keyboard
  • dtc -W no-unit_address_vs_reg -I dts -O dtb -o rainpspkbd.dtbo rainpspkbd.dts
  • sudo cp rainpspkbd.dtbo /boot/overlays/
  • sudo dtoverlay rainpspkbd

At this point you should see the keyboard listed by using the sudo lsinput command.