Principles of Parallel Programming
D