Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4486 + 2220 = 6706
Home Page
Parallel Computing II 4005-736-70 Spring Quarter 2012
Course Page

4005-736-70 Parallel Computing II
Bibliography and Links

Prof. Alan Kaminsky -- Spring Quarter 2012
Rochester Institute of Technology -- Department of Computer Science

Java Tutorials
Java Documentation
Parallel Programming Books -- General
Parallel Programming Books -- Domain Specific
OpenMP
Message Passing Interface (MPI)
GPUs and CUDA
OpenCL
Tuple Spaces
Cellular Automata
Older Books


Java Tutorials

The Java Tutorial. http://download.oracle.com/javase/tutorial

Java I/O Tutorial (including object serialization). http://download.oracle.com/javase/tutorial/essential/io/index.html

Java Concurrency Tutorial. http://download.oracle.com/javase/tutorial/essential/concurrency/index.html

Java Exceptions Tutorial. http://download.oracle.com/javase/tutorial/essential/exceptions/index.html

Java Networking Tutorial. http://download.oracle.com/javase/tutorial/networking/index.html

Java RMI Tutorial. http://download.oracle.com/javase/tutorial/rmi/index.html


Java Documentation

Java 2 Standard Edition Software Development Kit Version 1.5.0 Documentation. http://download.oracle.com/javase/1.5.0/docs/

Java 2 Standard Edition Software Development Kit Version 1.5.0 API Specification. http://download.oracle.com/javase/1.5.0/docs/api/


Parallel Programming Books -- General

Darryl Gove. Multicore Application Programming for Windows, Linux, and Oracle® Solaris. Addison-Wesley, 2011.

Alan Kaminsky. Building Parallel Programs: SMPs, Clusters, and Java. Cengage Course Technology, 2010.

Maurice Herlihy and Nir Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann Publishers, 2008.

Calvin Lin and Lawrence Snyder. Principles of Parallel Programming. Pearson Addison Wesley, 2009.

Bruce P. Lester. The Art of Parallel Programming, Second Edition. 1st World Publishing, 2006.

Kenneth A. Berman and Jerome L. Paul. Algorithms: Sequential, Parallel, and Distributed. Thomson Course Technology, 2005.

Timothy G. Mattson, Beverly A. Sanders, and Berna L. Massingill. Patterns for Parallel Programming. Addison-Wesley, 2005.

Barry Wilkinson and Michael Allen. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, Second Edition. Prentice-Hall, 2005.

Michael J. Quinn. Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2004.

Ananth Grama, Anshul Gupta, George Karypis, and Vipin Kumar. Introduction to Parallel Computing, Second Edition. Addison-Wesley, 2003.

Harry F. Jordan and Gita Alaghband. Fundamentals of Parallel Processing. Prentice-Hall, 2003.

Nicholas Carriero and David Gelernter. How to write parallel programs: a guide to the perplexed. ACM Computing Surveys, 21(3):323-357, September 1989. (Available from the ACM Digital Library, http://doi.acm.org/10.1145/72551.72553)


Parallel Programming Books -- Domain Specific

Michael A. Heroux, Padma Raghavan, and Horst D. Simon. Parallel Processing for Scientific Computing. Society for Industrial and Applied Mathematics, 2006.

Erricos John Kontoghiorghes, editor. Handbook of Parallel Computing and Statistics. Chapman & Hall/CRC, 2006.

Ronald W. Shonkwiler and Lew Lefton. An Introduction to Parallel and Vector Scientific Computing. Cambridge University Press, 2006.

El-Ghazali Talbi, editor. Parallel Combinatorial Optimization. John Wiley & Sons, 2006.

Albert Y. Zomaya, editor. Parallel Computing for Bioinformatics and Computational Biology. John Wiley & Sons, 2006.

Sverre J. Aarseth. Gravitational N-Body Simulations: Tools and Algorithms. Cambridge University Press, 2003.

George Em Karniadakis and Robert M. Kirby II. Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and Their Implementation. Cambridge University Press, 2003.

Numerical Recipes Online. http://www.nr.com.


OpenMP

OpenMP Home Page. http://www.openmp.org/

Barbara Chapman, Gabrielle Yost, and Ruud van der Pas. Using OpenMP: Portable Shared Memory Parallel Programming. MIT Press, 2008.

Barry Wilkinson and Michael Allen. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, Second Edition. Prentice-Hall, 2005.

Michael J. Quinn. Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2004.

Rohit Chandra, Leonardo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, and Ramesh Menon. Parallel Programming in OpenMP. Academic Press, 2001.


Message Passing Interface (MPI)

The MPI Standard. http://www-unix.mcs.anl.gov/mpi/

Manual page for the MPI command launcher, mprun, on the paranoia workstation cluster:
man -M /opt/SUNWhpc/man mprun

Michael J. Quinn. Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2004.

George Em Karniadakis and Robert M. Kirby II. Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and Their Implementation. Cambridge University Press, 2003.

William Gropp, Ewing Lusk, and Anthony Skjellum. Using MPI: Portable Parallel Programming with the Message Passing Interface, Second Edition. MIT Press, 1999.

Peter S. Pacheco. A User’s Guide to MPI. March 30, 1998. ftp://math.usfca.edu/pub/MPI/mpi.guide.ps.Z

Peter S. Pacheco. Parallel Programming with MPI. Morgan Kaufmann, 1997.


GPUs and CUDA

NVIDIA CUDA Zone. http://developer.nvidia.com/category/zone/cuda-zone

NVIDIA CUDA Toolkit. http://developer.nvidia.com/cuda-toolkit

NVIDIA CUDA Library documentation online. http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/html/index.html

NVIDIA CUDA C Programming Guide. http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf

Rob Farber. CUDA Application Design and Development. Morgan Kaufmann, 2011.

David B. Kirk and Wen-mei W. Hwu. Programming Massively Parallel Processors: A Hands-On Approach. Morgan Kaufmann, 2010.


OpenCL

OpenCL. http://www.khronos.org/opencl/

Benedict R. Gaster, Lee Howes, David R. Kaeli, Perhaad Mistry, and Dana Schaa. Heterogeneous Computing with OpenCL. Morgan Kaufmann, 2011.


Tuple Spaces

Philip Bishop and Nigel Warren. JavaSpaces in Practice. Addison-Wesley, 2003.

Eric Freeman, Susanne Hupfer, and Ken Arnold. JavaSpaces Principles, Patterns, and Practice. Addison-Wesley, 1999.

David Gerlernter. Mirror Worlds. Oxford University Press, 1991.

Nicholas Carriero and David Gelernter. How to Write Parallel Programs: A First Course. MIT Press, 1990.

Nicholas Carriero and David Gelernter. How to write parallel programs: a guide to the perplexed. ACM Computing Surveys, 21(3):323-357, September 1989. (Available from the ACM Digital Library, http://doi.acm.org/10.1145/72551.72553)

David Gelernter. Generative communication in Linda. ACM Transactions on Programming Languages and Systems, 7(1):80-112, January 1985. (Available from the ACM Digital Library, http://doi.acm.org/10.1145/2363.2433)


Cellular Automata

Stephen Wolfram. A New Kind of Science. Stephen Wolfram, LLC, 2002.

A New Kind of Science Online. http://www.wolframscience.com/


Older Books

Russ Miller and Laurence Boxer. Algorithms Sequential & Parallel: A Unified Approach. Prentice-Hall, 2000.

Behrooz Parhami. Introduction to Parallel Processing: Algorithms and Architectures. Plenum Press, 1999.

Kai Hwang and Zhiwei Xu. Scalable Parallel Computing: Technology, Architecture, Programming. McGraw-Hill, 1998.

C. Xavier and S. S. Iyengar. Introduction to Parallel Algorithms. John Wiley & Sons, 1998.

Selim G. Akl. Parallel Computation: Models and Methods. Prentice-Hall, 1997.

William H. Press, Saul A. Teukolsky, William T. Vetterling, and Brian P. Flannery. Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, Second Edition. Cambridge University Press, 1996.

Michel Cosnard and Denis Trystram. Parallel Algorithms and Architectures. International Thomson Computer Press, 1995.

Ian East. Parallel Processing with Communicating Process Architecture. UCL Press, 1995.

Ian T. Foster. Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley, 1995. (Online version: http://www-unix.mcs.anl.gov/dbpp/)

Daniel E. Lenoski and Wolf-Dietrich Weber. Scalable Shared-Memory Multiprocessing. Morgan Kaufmann Publishers, 1995.

Gregory V. Wilson. Practical Parallel Programming. MIT Press, 1995.

George S. Almasi and Allan Gottlieb. Highly Parallel Computing, Second Edition. Benjamin/Cummings Publishing Company, 1994.

Michael J. Quinn. Parallel Computing: Theory and Practice, Second Edition. McGraw-Hill, 1994.

Bruce P. Lester. The Art of Parallel Programming. Prentice-Hall, 1993.

Ted G. Lewis. Foundations of Parallel Programming: A Machine-Independent Approach. IEEE Computer Society Press, 1993.

K. Mani Chandy and Stephen Taylor. An Introduction to Parallel Programming. Jones and Bartlett Publishers, 1992.

T. L. Freeman and C. Phillips. Parallel Numerical Algorithms. Prentice-Hall, 1992.

Harold W. Lawson. Parallel Processing in Industrial Real-Time Applications. Prentice-Hall, 1992.

Ted G. Lewis, Hesham El-Rewini, and In-Kyu Kim. Introduction to Parallel Computing. Prentice-Hall, 1992.

U. do Carlini and U. Villano. Transputers and Parallel Architectures: Message-Passing Distributed Systems. Ellis Horwood, 1991.

Nicholas Carriero and David Gelernter. How to Write Parallel Programs: A First Course. MIT Press, 1990.

S. Lakshmivarahan and Sudarshan K. Dhall. Analysis and Design of Parallel Algorithms: Arithmetic and Matrix Problems. McGraw-Hill, 1990.

Dimitri P. Bertsekas and John N. Tsitsiklis. Parallel and Distributed Computation: Numerical Methods. Prentice-Hall, 1989.

Geoffrey C. Fox, Mark A. Johnson, Gregory A. Lyzenga, Steve W. Otto, John K. Salmon, and David W. Walker. Solving Problems on Concurrent Processors, Volume I: General Techniques and Regular Problems. Prentice-Hall, 1988.

Michael J. Quinn. Designing Efficient Algorithms for Parallel Computers. McGraw-Hill, 1987.

W. Daniel Hillis. The Connection Machine. MIT Press, 1985.

U. Schendel. Introduction to Numerical Methods for Parallel Computers. Ellis Horwood Limited, 1984.

Parallel Computing II 4005-736-70 Spring Quarter 2012
Course Page
Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4486 + 2220 = 6706
Home Page
Copyright © 2012 Alan Kaminsky. All rights reserved. Last updated 06-Mar-2012. Please send comments to ark­@­cs.rit.edu.