what is parallelized?
parallelized is a code optimization competition (organized by Varun Sahni for the premier tech event, ShriTeq) where you optimize code in a way that your software can actually take advantage of the hardware. Teams compete to achieve the maximum possible speedup (over a very naive staff implementation) within three hours! There are teams of two and whichever team achieves the highest speed-up multiple, wins.
- Each team is assigned the same tasks
- Teams must first develop the tasks (according to the guidelines) themselves and then optimize them to achieve the highest speedup multiple (in Python)
- All tasks must be completed
- The guidelines contain details about the elements of the program that must be implemented for correctness (eg. required functions, classes)
-
Note: Local tests check for correctness and speedup. However, the speedup multiple may not be indicative of the speedup used for scoring due to discrepancies in the hardware used for testing and your systems - thus, it is better if you use the local speedup as a gauge for performance.
-
why parallelized?
With Moore’s law slowing down, the need for speed within systems is greater than ever. This requires us to focus on code optimization and parallelism. Harnessing parallelism through techniques like multithreading, multiprocessing, and vector-based operations is crucial for performance gains. However, Amdahl’s Law can limit speedup by preventing the parallelization of serial code elements. Thus, efficient code optimization, utilizing elements like caching and virtual memory, is also essential.
Enter parallelized, a 3-hour challenge to achieve maximum speedup in an application.
In the real world, code optimization and parallelism hold immense significance. Consider supercomputers like Fugaku that are optimized for parallelism, powering research in fields like medicine, climate change, and COVID-19 response. Like Fugaku, most modern computers, including supercomputers, leverage parallelism through multiple CPU cores. Code optimization is equally vital, exemplified by the constantly improved performance and security of the Linux kernel.
However, these optimizations truly shine on a large scale, impacting systems with thousands of concurrent operations, such as supercomputers and operating systems. For the average developer, optimizing a Python script from 10 seconds to 5 seconds might not make a noticeable difference. Python’s GIL (Global Interpreter Lock) further limits true multithreading. Nevertheless, learning these skills remains essential, given their real-world importance.
parallelized offers a fun and competitive way for students to learn and apply these critical concepts in practical scenarios.