Principles Of Parallel Programming by Larry Snyder & Calvin Lin