Cambridge University Press Introduction to Parallel Computing