A comparative study of shared memory parallelism on regular and irregular data structures using OpenMP and Galois