Parallel and Distributed Computing Handbook