Learning to Parallelize with OpenMP by Augmented Heterogeneous AST Representation
This work addresses the challenge of automating parallelization detection for developers, but it is incremental as it builds on existing ML techniques for code analysis.
The paper tackles the problem of detecting parallelizable code regions for OpenMP loop-level parallelization by proposing Graph2Par, a graph-based learning approach using an augmented heterogeneous AST representation, and achieves 85% accuracy in detection, outperforming a token-based state-of-the-art method.
Detecting parallelizable code regions is a challenging task, even for experienced developers. Numerous recent studies have explored the use of machine learning for code analysis and program synthesis, including parallelization, in light of the success of machine learning in natural language processing. However, applying machine learning techniques to parallelism detection presents several challenges, such as the lack of an adequate dataset for training, an effective code representation with rich information, and a suitable machine learning model to learn the latent features of code for diverse analyses. To address these challenges, we propose a novel graph-based learning approach called Graph2Par that utilizes a heterogeneous augmented abstract syntax tree (Augmented-AST) representation for code. The proposed approach primarily focused on loop-level parallelization with OpenMP. Moreover, we create an OMP\_Serial dataset with 18598 parallelizable and 13972 non-parallelizable loops to train the machine learning models. Our results show that our proposed approach achieves the accuracy of parallelizable code region detection with 85\% accuracy and outperforms the state-of-the-art token-based machine learning approach. These results indicate that our approach is competitive with state-of-the-art tools and capable of handling loops with complex structures that other tools may overlook.