{'fraction_non_alphanumeric': 0.01282051282051282, 'fraction_numerical': 0.0, 'mean_word_length': 5.917721518987341, '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}}
A comparative study on automatic parallelisation tools and methods to improve their usage

Automatic parallelisation assists users in parallelising the serial code even without acquiring knowledge about the application. Auto-parallelisers focus on loop-level parallelisation and dependence analysis. Apart from dependences present within the loop, specific coding complexities make the code not amenable to parallelisation due to the limitations of the parallelising tool. To overcome these programming complications, we can explore the possibility of minimal manual intervention to make the code suitable for parallelisation. This paper provides a study of currently available auto-parallelisers and their competence on parallelisation of different programming features. The pitfalls faced by these tools are unveiled and categorised for detailed analysis. A solution-based approach in the form of coding changes circumvents the pitfalls and achieves efficient parallelisation. It also underlines the overall capability of the tools in supporting programming features during parallelisation.