Build Your Own Super Computer with Raspberry Pis

Create a computer cluster using Raspberry Pi boards - everything from hardware, software, design and networks
Rating: 4.3 out of 5 (354 ratings)
26,145 students
Build Your Own Super Computer with Raspberry Pis
Rating: 4.3 out of 5 (354 ratings)
26,145 students
Build a super computer using multiple Raspberry Pi 2 B+ computers with Raspbian
Create a working Raspberry Pi from a basic Raspbian installation and customize it to your needs
Create and spool up slave Raspberry Pi nodes in a fraction of the time it takes to set up each one
Manage the Raspberry Pi computer cluster entirely using the Linux command line interface with comfort and ease
Install OpenMPI, compile and run multi-processor programs from the ground up
Learn the fundamentals for writing a multi-threaded program in C
Create a computer network using your home router, or expand to a production-level network with a managed switch
Export and mount drives and communicate between your Raspberry Pis all on the command line


  • Students will need to own a laptop or desktop with an internet connection and an SD Card Reader / Writer
  • Materials for this class can vary based on your ambitions, but the minimum required materials are: 2 or more Raspberry Pi computers, 2 or more ethernet cables, a router or network switch, 2 or more micro-USB power supplies (5 Volt, 1.5 to 2 Amps), a wired USB keyboard, 2 or more micro SD cards (8 or more GB), a monitor with an HDMI input, and an HDMI cable.

Have you ever wanted to build your own super computer? Do you want to write programs that can run simultaneously on as many computing nodes as you wish? Do you want to learn what it takes to combine the processing powers of two, four, eight or more Raspberry Pis and run simulations at a fraction of the time and cost of running on a mainframe or even a high-end desktop computer?

If you've answered yes to any of these questions, then this course is for you. In this step-by-step series of video lectures, you'll learn how to set up your own computer cluster using cheap, affordable computers - and it doesn't get any more affordable than the Raspberry Pi.

Whether you're a Raspberry Pi enthusiast, a scientific researcher in need of cheap, expandable processing power, a programmer looking to expand their horizons with multithreaded algorithms, or a student looking to learn more about using Linux to build computing clusters, then you'll find plenty of value in this class as you build your own Raspberry Pi super computer.

These lectures are specially tailored to the Raspberry Pi 2 B+ board using Raspbian (a distribution based on Debian), which is a good place to start if you're unfamiliar with the Linux command line or building computer networks. If you are comfortable with the various flavors of Linux, you can use this course as a guideline for what it takes to build your own cluster using a different distribution.

Lastly, this class is a "living course", which means as we receive feedback and requests for specialized tutorials or updates, we'll continually update and add more to improve the quality and content of the course.

Who this course is for:
  • This course is designed for anyone with a zeal for learning how computers work - especially with an interest in creating your own computer cluster
  • You should be comfortable using a Linux command line, but you don't have to be knowledgeable - every single step of the way is recorded and documented to follow along easily
  • If you love Raspberry Pis and own more than one, building a computer cluster is a fun way to learn how to get them to interact together and use all of their computer processing power combined
Course content
13 sections • 51 lectures • 2h 17m total length
  • An Introduction to the Course
  • Materials for 2-Pi Cluster
    1 page
  • An Overview of the Materials to Build a 2-Pi Cluster
  • Mac OS X - Downloading the NOOBS Package
  • Mac OS X - Download and Run SD Formatter 4.0 to Format New SD Cards
  • Windows - Download and Run SD Formatter to Format SD Cards
  • Mac OS X - Install NOOBS to the Newly Formatted SD Card
  • Windows - Download and Install NOOBS to SD Card
  • Plugging in a Raspberry Pi for the First Time
  • Installing Raspbian with NOOBS
  • First Boot after Raspbian OS Installation
  • Raspi-Config - Raspberry Pi Starting Configuration
  • Mac OS X - Using the Terminal to SSH into your Raspberry Pi
  • Windows - SSH Into Your Raspberry Pi with Putty Terminal
  • Updating & Upgrading Raspbian, and Installing the Necessary Packages
  • Linux Command Sheet 1
    1 page
  • C Program: Call Processes
  • C Program: Calculate Pi
  • First OpenMPI Test - Call Process Names
  • Second OpenMPI Test - Calculate the value of Pi
  • Linux Command Sheet 2
    1 page
  • Plugging in the Second Raspberry Pi to the Cluster
  • Setting up the Configuration on the Second Pi (raspi-config)
  • Setting Up and Testing the Packages on the Second Pi
  • Setting Static IP Address on Raspberry Pi
  • Setting Static IP Addresses with a Router
  • SSH Between Raspberry Pi Nodes
  • Set Up Hostnames
  • Linux Command Sheet 3
    1 page
  • Creating a Common User for All Nodes
  • Generating SSH Keys for the Common User
  • Linux Command Sheet 4
    1 page
  • Creating and Mounting Drives
  • Running a Multithreaded Program Across Multiple Pis
  • Automatically Mounting Drives on Boot-Up
  • Linux Command Sheet 5
    1 page
  • Materials for 8-Pi Cluster
    3 pages
  • An Overview of the 8-Pi Cluster Materials
  • Set Up Hosts for All Nodes
  • Backup Raspberry Pi SD Card Image to Computer - Mac
  • Create New Nodes: Write Raspberry Pi Image to New SD Card
  • Create New Nodes: Update Hostname
  • Setting Static IP Address on Additional Raspberry Pi Nodes
  • Linux Command Sheet 6
    1 page

Computer Science Graduate Student
Ben Heidorn
  • 4.3 Instructor Rating
  • 354 Reviews
  • 26,145 Students
  • 1 Course

I am a Computer Science graduate student starting at Penn State University in Fall 2015. I previously worked as a software developer and development team leader at a start-up and received my Bachelor of Science in Physics in 2012. Primarily self-taught in programming, I have 7 years of experience developing desktop software, web and mobile applications, and my primary motivator is a lifelong love of learning, building programs, and tinkering with innovative hardware and software.