{'fraction_non_alphanumeric': 0.01978565539983512, 'fraction_numerical': 0.007831821929101401, 'mean_word_length': 5.255154639175258, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Studies on Automatic Parallelization and Power Reduction of a Multiplayer Game

Video Games have been a very popular form of digital entertainment in recent years. They have been delivered in state of the art technologies that include multi-core processors that are known to be the leading contributor in enhancing the performance of computer applications. Since parallel programming is a difficult technology to implement, that field in Video Games is still rich with areas for advancements. This paper investigates performance enhancement and power reduction of Video Games when using parallelizing compilers and the difficulties involved in achieving that. This experiment is conducted in several stages to attempt parallelizing a well-renowned sequentially written Video Game called ioquake3. First, the Game is profiled for discovering bottlenecks, then examined by hand on how much parallelism could be extracted from those bottlenecks, and what sort of hazards exist in delivering a parallel-friendly version of ioquake3. Then, the Game code is rewritten into a hazard-free version while also modified to comply with the Parallelizable-C rules, which crucially aid parallelizing compilers in extracting parallelism. Next, the program is compiled using a parallelizing compiler called OSCAR (Optimally Scheduled Advanced Multiprocessor) to produce a parallel and then a power reduced version of ioquake3. Finally, the performance of the newly produced versions of ioquake3 on a Multi-core platform is analyzed. The following is found: (1) the parallelized game by the compiler from the revised 6 sequential program of the game is found to achieve a better performance than the original one on various machines, (2) the low power version of ioquake3 consumes at 27% less power than the original, and (3) issues opposing parallelism are mainly hazards caused by thread contentions over globally shared data and as well as thread private data, and combinations of interconnected local and global variables that compose a singular module that is hazardous as a whole and must be treated as a whole, and function pointers, and (4) AI driven players are represented very similarly to human players inside ioquake3 engine, which gives an estimation of the costs for parallelizing human driven sessions, and (5) 70% of the costs of the experiment is spent in analyzing ioquake3 code, 30% in implementing the changes in the code.