By Leanne January, student at the University of Cape Town
I was introduced to the Student Cluster Competition by Jehan, one of the members of the previous UCT team who had won the competition last year (2018). Fresh off their win, Jehan came to my Computer Science lecture in the first week of term to tell us more about the Cluster Competition and encourage us to find a team. We had until April, when the competition sign up opened, to find a team – two of which would be chosen by the SCC to represent UCT. Jehan would act as the mentor for both teams, and he promised lots of workshops before the first round to familiarise all of us with the content we would need to do well.
At this point, I had just switched faculties and didn’t know any of my Computer Science peers very well. Although I was interested in the competition, the prospect of finding a team was rather daunting. Luckily for me, one of the requirements of the competition is that every team needs at least one female member – and in a male dominated class there aren’t really a lot of females to choose from. It was not long before I was asked to join a team to which I excitedly agreed.
Before the official competition sign-up in April, Jehan (as promised) held three workshops to show us what we would need to know for round one: the Training and Selection week.
His first workshop was an introduction to high performance computing. Not many of us knew what clusters are, or what purpose they had. Those of us studying Computer Science hadn’t even learnt about parallel computing at this point in our course. It certainly seemed like a lot to take in, and I was very sceptical about whether or not I would be able to design, setup and run benchmarks on my own cluster.
His second workshop was on Hardware – what are the different parts in a cluster and what makes performance better or worse. Coming from a family of computer geeks, this workshop was less intimidating as I was familiar with a lot of what was discussed – and so were my teammates. We certainly felt a little more confident after this workshop that we could at least design a good cluster.
The last workshop Jehan had before the competition sign-up opened was an introduction to Linux, or “How to Linux” as he called it. Jehan explained that we would be using the Linux terminal to set up our clusters and run benchmarks, and he showed us basic Linux terminal commands and some tools we would need. The Computer Science students, myself included, were already mostly familiar with the content of this workshop as we do most of our assignments on computers with Ubuntu and use the terminal frequently, although Jehan did show us a lot of cool shortcuts and some commands that would help us in the competition. I felt a lot more comfortable and confident going into the competition knowing that I would be using something that I had experience in.
In April, my teammates and I registered for the competition and initially we weren’t chosen as one of the two UCT teams to go through. However, one of the other teams pulled out of the competition giving us a chance to go in their place. My team and I were really upset when we found out that we weren’t going through, and we were all very excited to be given a second chance to participate. This did, however, come with a lot of pressure knowing how high the standards of the competition were and that we almost did not make the cut.
Before we left for the Training and Selection week we had one last workshop with Jehan where he discussed how the competition is structured and gave us some strategies and advice on doing well and getting through to the next round. He also told us about his experience winning the SCC and preparing for the International Cluster competition which he was leaving for the very next day. This certainly incentivised all of us to do the best that we can to win the competition. A week or so later, we found out that Jehan’s team had won first place at the International Competition. We all felt really proud of them, but it also put a lot of pressure on us going into round one as the teams who were mentored by them and from the same university.
Training and Selection Week
We left for the University of Pretoria on the 30th of June for the first round of the competition. By this time, I had gotten to know my team and the other UCT team pretty well and was very excited about having some friends in my course.
At the Training and Selection week, we had lectures in the morning and tutorials in the afternoon every day from Monday to Thursday – much like an average week at University. Each team also had an assignment and a presentation to work on throughout the week and present on Friday.
In the lectures we were taught everything from a crash course in Linux, parallel computing and hardware to an introduction to clusters, how they work and how they are being used in different fields. There was so much content that we needed to know to complete our tutorials and our assignments, and therefore the lectures had to be very fast-paced to get through everything. In this respect, having prior knowledge or experience in this field would have been useful as the lectures were better suited to acting as a refresher of existing knowledge instead of an introduction to everything. We were also given a lot of practical, anecdotal advice such as ‘Success is sucking less’ and ‘Pain vs Gain’.
This advice was put to good use in our tutorial time in the afternoons. Over the course of the tutorials, we were expected to set up our team’s virtual cluster and run different benchmarks on them. In practice, this work was divided up into four different tutorials – one to complete in each afternoon. In theory, we hardly ever finished a tutorial the afternoon it was given to us and worked a few of the nights through debugging and trying to finish the previous day’s tutorial. Although we struggled, we could also see that a quite a few of the other teams were worse off than us. We had the advantage of Jehan’s workshops and Linux experience which some of the other teams didn’t have and although we weren’t finishing first or checking all our boxes, we definitely were sucking less than some of the other teams.
For the assignment, each team had to research three different benchmarks and submit a write-up of the findings. After this was handed in, each team was given one benchmark to design a cluster for. For the presentation, we had to explain each design decision of our cluster and how it would be suited to the benchmark we were given. Each team is ranked on their performance in the tutorials and the presentation, and the top ten teams out of twenty go through to the next round. Therefore, there was a lot of pressure to do well in the presentation as it was just as important as all the work we had done during the week. There was a lot of nervous back and forth in my team as to the number of memes we could put in our PowerPoint and the amount of jokes we could make. We had a lot of fun working on our presentation, but in the end we presented a very formal version of our initial presentation and most of our memes were written out.
We headed back home to Cape Town that evening, feeling confident that we had a place in the next round of the competition despite all the struggles we had.
Preparations for Round 2 of the SCC
About a week after the first round ended, my team found out that we had made it through to the next round of the competition. I had a really great experience at the Training and Selection week and I am really excited to go to the next round with my team, although I am a bit nervous about the designing, setting up and running benchmarks on real clusters instead of virtual ones.
Without disclosing too much to our competitors, to prepare for the next round Jehan is organising a cluster for both UCT teams to practice on. I hope that this will help us feel more prepared and confident for the next round.
I have truly gained so much from participating in this competition. From a social aspect, this competition gave me the opportunity to not only make friends in my course, but also meet other young and aspiring computer scientists and engineers from the Western Cape and South Africa. Some of whom I am good friends with now and would have never met if not for the competition. The competition also provided a platform to learn and get experience in high performance computing – a field that not many computer science students are easily able to have access to. On a more personal note, the competition was also a chance for me to do something new, that I didn’t know much about and I was able to surprise myself with how much I was able to absorb and learn in such a short space of time. Through this experience, I was able to build confidence in myself and my abilities.
The Student Cluster Competition is, without a doubt, not an easy competition. I really had to apply myself and push past my limits to contribute to my team’s progress. Furthermore, the expectation placed on UCT and all the South African students taking part is a lot of pressure as we have very high standards to uphold. This being said, the CHPC gave us all the tools we need to succeed and do well. Now, it is up to us to see which team stands out.