Elements of parallel computing. (2016)