One of the projects I am Currently working on is building a Raspberry Pi cluster. This is a part of my Computer Science research class, which my classmates and myself were assigned to do so we could have a dedicated cluster to run our research projects later in the semester. I was assigned to be in charge of building the software that goes into this project. In other words, I am in charge of configuring all Rasperry Pi's and writing the actual project program that will be used to run our future research programs.
Not having a lot of prior experience in parallel computing, I was sort of taking a shot in the dark when I started out and after many hours reading and reformatting the Raspbian operating system several times, I believe that I have gotten the hang of it. Well, in terms of chaining the Raspberry Pi's together. The library that I am using to write this software is called MPICH. MPI stands for 'Message Passing Interface', and MPICH is just an implementation of MPI. There are other implementations out there such as Open MPI and Intel MPI Library, however, I decided to go with MPICH because not only is it free, but I had also read that it is better maintained and a more recent implementation of the MPI standard. Since I am all about the latest and the greatest I decided to go for it. I looked at many guides on how to get this up and running, however, a lot of them said to install mpich2, which has been out for a while. I couldn't have that, so I decided just to compile it from source and manually do everything myself. I'm not going to lie, it did take me a few attempts before I got everything set up the way I wanted to. To make matters worse, it takes the Raspberry Pi Model B 2.5+ hours to compile the MPICH library from source. However, after some trial and error, I feel like I can do this with my eyes closed now.
The project is still in progress and I am actively working on it now. We have yet to build the rack for all 32 of the Raspberry Pi's, so I have been testing with only a few of them so far. I am storing all of my code on a Github repository which also contains an installation guide. I might write an how-to guide on here later, but it will be in a seperate post. I also want to point out that the project is written in C++ 11 standard, so it won't compile unless you have that set up properly. I will post Part 2 once I have completed the project, and will go into details about my research project, which is in the field of Artificial Intelligence, or computer cognition in particular.