Production-Grade Raspberry Pi Cluster Design
Table of Contents
This is what most people see when they think of a Raspberry Pi Cluster
Just this year, two IBM-built supercomputers, named Summit and Sierra, were installed at the Department of Energy’s Oak Ridge National Laboratory (ORNL) in Tennessee and Lawrence Livermore National Laboratory in California, respectively. These two supercomputers overtook China’s Sunway TaihuLight system at the National Supercomputing Center in Wuxi. While your next edge computing, IoT, or other mobile computing application may not require tens of millions of cores or dozens of petaflops in processing power, you can give your next application a major boost when you build it from a parallel computing cluster.
With the number of single-board computing platforms available, you might be wondering which is the best board to use for your application. There is no perfect answer to this question; the answer depends on the capabilities and form factor you need for your particular application. That being said, a Raspberry Pi cluster is a great low-cost choice that balances high computing speed and memory options with low cost and a small form factor.
Most custom computing clusters you’ll find are actually bulky, ugly messes, making them unsuitable for anything but in-house applications or educational purposes. While they include all the required elements to make the cluster run as desired, you’re stuck building the thing by hand, and the form factor leaves much to be desired. This is certainly the case with many Raspberry Pi clusters. Many clusters will include a large number of Raspberry Pi 3 Module B boards (or similar products) stacked vertically, creating a computing cluster that looks more like a skyscraper (see the above image).
A production-grade Raspberry Pi cluster should have reasonable form factor in terms of board arrangement while providing competitive performance compared to more expensive options. The Raspberry Pi Compute module is a great entry-level option for a number of reasons. First, the form factor is quite small (SODIMM form factor), yet it still has some powerful capabilities compared to other Raspberry Pi modules, which include a full set of graphics, USB, and GPIO connections. This card can be easily placed in a custom-designed PCB with a DDR2 SODIMM connector.
Raspberry Pi compute module. Source: Raspberry Pi Foundation
As part of your Raspberry Pi cluster ecosystem, you’ll need to use another Raspberry Pi or other single-board computer to act as the master controller (i.e., server) for the entire cluster. To maximize your networking speed, you’ll want to connect the cluster together via high speed Ethernet with a network switch. This eliminates the need to create a custom header for each module.
The Raspberry Pi CM3+ module runs on a Broadcom BCM2837 SoC, and you’ll notice that the SoC does not include built-in Ethernet. Normally, a Raspberry Pi SBC connects to Ethernet via the USB bus from the SoC. However, the USB bus is connected to the SODIMM connector on the Compute 3 module, so you can easily add Ethernet on the carrier board if needed. The normal Raspberry Pi 3 SBC uses a LAN9514 USB 2.0/Ethernet controller from Microchip. After connecting all the boards into a single unit, you’ll need to define a network for the cluster, create a scheduling algorithm, install MPICH, and secure the cluster in its enclosure.
While you could certainly create a Raspberry Pi cluster that uses an external SBC to run, you can also place the master and all the cluster nodes together on a backplane. In this case, you’ll need to include Ethernet ports for external connections over a LAN or directly to the internet. You’ll need to keep track of the power consumed by the entire Raspberry Pi cluster when creating your board layout.
Your master board in your Raspberry Pi cluster can include the important HDMI and other connections for graphics
As part of your layout, you’ll have to decide if your form factor should use vertical or horizontal connectors to hold each module. This being more of a mechanical decision than an electrical decision. If you decide on a horizontal connector, you’ll be able to hang each Compute module slightly off the edge of the board. Using an angled connector allows you to save some board space by including a small amount of overlap between adjacent modules.
No matter which of these you choose to implement, you will need to create a PCB to act as the backplane for your Compute modules and to hold the rest of the components your Compute modules need to communicate on a network and with the master board. While you could certainly do this with a desktop application, working with a modular design tool greatly decreases the design time required to create this type of Raspberry Pi cluster.
When you work with the modular design tools in Upverter, you can create an SBC based on a Raspberry Pi Compute 3 module in about 20 minutes. Expanding this to a larger computing cluster doesn’t take much longer thanks to the drag and drop tools. This allows you to add the standard modules you need to create a Raspberry Pi Compute cluster as a single unit on a custom board.
The modular design tools eliminate the need to route conductors around your board or worry about the component footprints as these connections between modules are already predefined. This allows you to easily place your power regulator, USB/Ethernet converter, and any SD cards or additional modules you want to include in the board without worrying about the finer points of PCB design.
The modular design tools in Upverter allow anyone to quickly create a board to support a Raspberry Pi cluster. You don’t need to be a professional PCB designer to create this type of multi-board computing solution; the modular design tools in Upverter make it easy to build a board that supports multiple Raspberry Pi Compute modules or other industry-standard COMs.