A Machine Learning and Compiler-based Approach to Automatically Parallelize Serial Programs Using OpenMP