Personal Projects / HighLoad Challenges

HighLoad Challenges

HighLoad is a site that hosts performance engineering challenges. The problem formats usually look like: ingest a huge amount of data and efficiently output a simple characteristic of the data like the median or the sum, though there are more complicated challenges too. There are many programming languages supported like C++, ZIG, and Rust and all the code is run on a Xeon E3-1271 v3 (which means AVX2 for the SIMD). When a solution is submitted, it is run 9 times and the median runtime/score is taken. Your best score is shown on a public, ongoing leaderboard.

I did some of these challenges to get more comfortable with performance engineering and I would highly recommend them to other people as well. Some challenges offer a lot of creative exploration into different types of algorithms and implementations of things like hashing and a lookup table. Others are pretty simple and instead really focus on parallelization and ILP of a simple hot loop. The standardized solution checking and performance measurement makes the iteration process pretty smooth. I also think it is nice that there is a whole community of people who enjoy doing these challenges and you get to see truly how fast some people’s solutions are.

My overall goals were to get much more comfortable using SIMD, come up with good algorithms, and get comfortable with performance analysis tools. My target was to break into the top 20 for each challenge and at the time of my final submission I had accomplished that!

You can check out the following challenges that I have written up my solution to:

Notes

One thing to be aware of though is that the leaderboard is ongoing and so I report my score and place on the leaderboard as my ranking at the time of my final submission, but this is subject to change if someone in the future beats my score and I get knocked down. Further, with a recent addition to HighLoad being that someone can challenge your solution with a custom input generator, many probabilistic solutions have been broken that previously worked very well on the given input generator:

A feed of HighLoad solutions marked Solution Broken after being challenged with custom input generators

I think this is a bit sad, especially because having a probabilistic algorithm was the main solution to many of the problems, but oh well I did it for learning purposes and I had a good time lol.

One more thing to keep in mind is that HighLoad doesn’t allow solution sharing in its rules which is why I don’t link my code. I was, however, initially worried about whether it would be allowed for me to describe my algorithm in these writeups, but I have reasoned that it is okay. Firstly, because Matt Stuchlik already did so twice and secondly because I searched through the Highload telegram chat for any discussion on this and from the maintainer of the Highload Sergey Svistunov himself on whether someone is allowed to share details of their solutions: “You can, but everybody can use it to beat you :)”.