Predictable parallel programming with OpenMP