Learning to Parallelize with OpenMP by Augmented Heterogeneous AST Representation
Le Chen, Quazi Ishtiaque Mahmud, Hung Phan, Nesreen K. Ahmed, Ali, Jannesari

TL;DR
This paper introduces Graph2Par, a graph-based machine learning method utilizing an augmented AST representation to accurately detect parallelizable code regions at the loop level using OpenMP, addressing dataset and representation challenges.
Contribution
It presents a novel heterogeneous augmented AST representation and a graph-based learning approach for parallelization detection, outperforming existing token-based methods.
Findings
Achieves 85% accuracy in parallelizable code detection.
Outperforms state-of-the-art token-based approaches.
Effectively handles complex loop structures.
Abstract
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.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Advanced Malware Detection Techniques · Software Testing and Debugging Techniques
