Parallel programming for modern high performance computing systems. (2018)