Supercomputers is useful in carrying out heavy calculations and work that requires processing power in teleprocessing, scientific computation, etc. But it’s difficult and expensive to buy a supercomputer and only a handful of supercomputers exist which are owned by a few big companies. But there are areas and processes where we require a portable computing machine that can work as a supercomputer and be able to perform massive calculations, and therefore, we wish to have our own supercomputer. So, is it possible to build such a powerful computer on your own?
Before diving into supercomputers, let’s have a look into how a computer works. Most supercomputers are basically connected CPUs where the master CPU node will divide a single task and assign it to the node CPU. All the interconnected CPUs work simultaneously to finish the given task and provide output in a shorter amount of time. So, is it possible to make such a system where complex calculations are divided and processed by multiple CPUs at the same time? And all the calculations are processed faster, even the largest calculations took only a few seconds.
So, today we will be designing a similar machine, and we will make our own supercomputer. Although, it’s not exactly a supercomputer, since it is a cluster of many CPUs, thus, it falls into the “general purpose cluster supercomputer” category. Here, we will design a very basic single unit of a supercomputer using that you can connect as many nodes as you want to fulfil your computation and processing needs. Here we use multiple SBC single board computers and connect them to each other. Now we assign one of the nodes as the master node. The master node’s task is to distribute and control all the other individually-connected nodes of CPUs and divide one complex calculation over all of the nodes and gives us the output.
So, let’s start our design with a collection of the following components listed below:
Bill Of Materials
The first thing we need to do even before designing is to decide the hardware’s look and configuration for our supercomputer. As we already know, supercomputers are composed of multiple CPU nodes connected. So, here you have 2 options to choose from: you can either choose a rack-based system or design a block of each node and connect multiple node blocks and make a large cluster. Since this project is for personal use, I have decided to make a block-based supercomputer where a single block contains 2 CPUs. Each block has its own separate pre-configured power management and cooling system, so in this way, you need to keep adding such a single block and keep adding the nodes for a supercomputer.
This design gives you the flexibility to add as many individual cluster blocks. It is capable of increasing its processing power from 2X to 500X or above as per your requirement without worrying about the cooling system and power management system when adding an additional block. So, here we design one basic block of a supercomputer with an integrated power and cooling management system, it contains two CPUs, one is the master CPU while the other is a node CPU. This design lets you add a large number of blocks to achieve higher processing power so that you can even achieve over 1terabytes of computing power just by adding these single node blocks.
Designing Hardware Case
So, for our hardware casing design, we will build a single block that will hold two individual Raspberry Pi SBC and contain the cylindrical water cooling reservoir. In the case of the block, we have made two cuts on the front side to expose the USB ports and Ethernet ports of Raspberry Pi. We also need holes for inserting the wires and connectors for the power supply (Refer to Fig 2). We have also designed the vents so air can freely flow, thus keeping the system cooler.
Now after designing the hardware casing we will 3D print it. You can also make your own custom design or even choose the rack-based supercomputer and set up the cooling system and CPUs in the rack setup.
Designing Cooling System
Now after designing the case, we need to design the cooling system for our supercomputer. Since the supercomputer is made to perform complex tasks and large calculations, it can heat up quite a bit. And to prevent the system from overheating, we need to design an effective cooling system for which we have chosen the “Dual cooling system” that integrates both the thermoelectric and water-cooling technologies. Here we first cool the CPUs with a Thermoelectric and then on the other side the heat from the thermoelectric is carried to an attached Aluminium block which acts as a heat sink with water. That hot water is cooled in a reservoir and circulated using a pump so we need to design this system where we need one pump, Liquid or heat carrying fluid and thermoelectric (TEC).
Preparing water/Liquid reservoir
First, we need to prepare the reservoir. We can either use a liquid cooling reservoir which is available in the market and can cost over 5000 rupees or make our cost-effective liquid cooling reservoir with any transparent airtight container that is cylindrical in shape.
I have used the airtight transparent cylindrical plastic container that totally fits inside the supercomputer case that we designed earlier. (Note: There might be a risk of liquid leaking out and causing short circuits or damage to the electronics components. So, please ascertain to make your reservoir design leakage proof.)
So, here I have used a transparent container as shown in Fig. 3. We need two pipes for the inlet and outlet and make 2 holes in the container for these pipes. We also need to make a smaller hole for the submersible water pump wiring. After inserting the water pipes of the inlet and outlets and the electrical wire, we need to make the container airtight again. We make it airtight by covering the area with a few layers of rubber-based glue or silicone glue and leaving it to dry. After the glue has dried, we test the setup by filling it with water. After testing, we attach the pump and close the container lid and fix it with rubber-based glue.
Preparing liquid cooling block and Thermoelectric
Now the next step is to attach the cooling block to the thermoelectric module. Apply the thermal paste in the backside of the thermoelectric module and attach it to the raspberry pi’s processor. Make sure to put some plastic or rubber pad or sticker to prevent the other discrete components to expose near the processor of the raspberry pi. It is done to prevent water droplets caused by condensation does not come in contact with the components of R Pi. The next step is to insert both the inlet and outlet pipe inside the Alimunium block as shown in fig 7,8. Now, connect the water pump wire and thermoelectric generator wire with a 5V DC power supply.
Now our cooling system is complete and ready to mount. We are now ready to assemble the components and start making our block of supercomputers. The next step is to fix the Raspberry Pi SBC inside the case for the supercomputer block as shown in Fig. 9.
Now, mount the first cooling block and then mount the second raspberry pi inside the case while making sure to align the ports and cutout on the case.
Now after mounting the second Raspberry pi and fixing it with a screw, fix the thermoelectric module and the cooling block in the case. To make it look cool and to be able to see the water flowing, I have to use a transparent acrylic sheet to make the cover as shown in Fig 14.
After the assembly is complete, we are just left with the electrical connection. We connect the water pump and thermoelectric cooler to a 5-12V 1.5A Dc power supply, and for the raspberry pi, we use a 2A 5V Dc power supply.
Preparing OS for The Supercomputer
Now the next step is to install the latest Raspbeian OS to Raspberry Pi board, and set up the wifi.
Now the next step is to create a Master CPU that will control and divide the complex task to all its constituent nodes for processing and calculations, similar to the supercomputer. To create a Master CPU, open the Linux terminal and set up the MPI. Open the terminal and install the MiPIH and prepare the master node that controls and divides the task among the cluster of computers. Follow the steps as given below:
sudo apt-get update Change the ‘pi’ user password. Under ‘Networking’, change the hostname to nodeX, replacing X with a unique number (node1, node2 etc.). Node1 will be our ‘master node’. Setup ethernet sudo nano /etc/dhcpcd.conf Go to the end of file and add the following: interface eth0 static ip_address=10.0.0.1/24 Then create unique identity ssh-keygen -t rsa Setup master node ssh-copy-id 10.0.0.1
Now our master node of a supercomputer is ready.
The next step is to open the terminal of the second Node, the other raspberry pi terminal and connect the Ethernet of both raspberry pi with the ethernet connector. You need to repeat the above steps for each node you wish to add. By following this step, you will be able to make the supercomputer with even 1000 or 1 Lakhs raspberry pi’s. After connecting all the RPis, create the bootable image of the above raspberry pi pre-setup all things and then prepare the SD card of all those 1Lakhs of raspberry pi with the same image. And connect all of them with an ethernet connector. Then boot all of them and set them as nodes of the master as following commands and configurations.
Open the terminal and run this on each node of supercomputer
sudo apt install mpich python3-mpi4py Once complete, test MPI is working on each node mpiexec -n 1 hostname Now we setup node From node1 (10.0.0.1), from node1 run the following command: mpiexec -n 4 – hosts 10.0.0.1,10.0.0.2,10.0.0.2,10.0.0.4 hostname Every setup goes well it eco the hostname of each node
After assembling and setting up the whole system, we are ready to test it.
Connect each node and power them. Here, we have made a single basic block and node of the supercomputer, but you can connect as many nodes as you need to increase the processing power of the supercomputer and use all the connected CPU node’s power as a cluster. This is the combined power of multiple CPUs similar to that of supercomputers.
Now, to test the supercomputer download the code given below:
open the terminal of the master node and run the following in Linux terminal
mpiexec -n 1 python3 prime.py 1000
When you run the above code, the complex task such as finding prime numbers up to 1000 or 4000 or 1lakh is divided between all the nodes available in the supercomputer clusters. All the processing will be divided and calculated simultaneously in the different nodes and after it’s done, you’ll get the output.