| Sure. IMO it is important to have an overall picture of the fields of Concurrent/Parallel/Distributed architecture/programming before delving into the details of a language/library implementation. To that end i have found the following books useful; 1) Foundations of Multithreaded, Parallel, and Distributed Programming by Gregory R. Andrews - This is one of my favourites even though old. You get to learn/compare the different paradigms in one single book. 2) Parallel Programming: Concepts and Practice by Bertil Schmidt et al. - This is a more recent book with good explanations/coverage including CUDA. 3) The Art of Multiprocessor Programming by Maurice Herlihy et al. - Well known classic though with a main focus on shared-memory architectures. Along with the above you also need more detailed language/library specific implementation books; a) C++ Concurrency in Action by Anthony Williams. b) Programming with POSIX Threads by David Butenhof. c) UNIX Systems Programming: Communication, Concurrency and Threads by Kay Robbins and Steve Robbins. Finally; for studying concurrency at the OS level where software meets hardware, i have found nothing better than; i) Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel. |