Fundamentals of Parallel Processing