openMP implmentation