= Preworkshop Reading Materials = All participants at the MSRI Parallel Computation Workshop will be assumed to have a basic background in parallel computation already -- there will be no basic background tutorials or lectures. Fortunately, anybody can get such a background in a day by reading the documents listed below under ''required reading''. == Required Reading List == At a minimum, make sure you read the following before the workshop, in order: 1. [[http://www.llnl.gov/computing/tutorials/parallel_comp/|Introduction to Parallel Computing]] 2. [[http://www.llnl.gov/computing/tutorials/pthreads/|POSIX Threads Programming]] 3. [[http://www.llnl.gov/computing/tutorials/mpi/|MPI Tutorial]] == Other Relevant Documents == Skim or read as time permits: 1. [[http://modular.math.washington.edu/msri07/read/|Miscellaneous Papers and Files]] 1. [[http://www.llnl.gov/computing/tutorials/openMP/|OpenMP tutorial]] and [[http://gcc.gnu.org/projects/gomp/|GOMP]] 2. [[http://ocw.mit.edu/OcwWeb/Mathematics/18-337JSpring-2005/LectureNotes/index.htm|Applied Parallel Computing Lectures]] 3. [[http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf|Alternatives to threads]] 4. [[http://www.erlang.org/|Erlang programming language]] 5. [[http://erights.org/|E programming language]] 6. [[http://twistedmatrix.com/projects/core/documentation/howto/async.html|About Twisted's Deferred Objects]] == SAGE-Related Reading List == Because of something called the ''Global Interpreter Lock'' (or GIL) in the Python ''interpreter'', threading is pretty useless for speeding up serious mathematical compute applications. For *multi-threaded* programs to be truly useful for SAGE computation, they will have to be implemented entirely in C/C++/Fortran libraries and SageX extension modules in blocks of code that do not make any Python/C API calls. 1. [[http://ldp.paradoxical.co.uk/LDP/LGNET/107/pai.html|Python threading tutorial]] 2. [[http://docs.python.org/api/threads.html|Discussion About the GIL in Python]] 3. [[http://mail.python.org/pipermail/python-list/2006-May/382955.html|List post about OpenMp and Python]] 4. [[http://aspn.activestate.com/ASPN/search?query=parallel&x=0&y=0§ion=PYTHONCKBK&type=Subsection|Python Parallel Recipes]] 5. [[http://poshmodule.sourceforge.net/|POSH -- Python object sharing; a way to get around using threads for what we need]] 6. [[http://www.parallelpython.com/|Parallel Python -- is this useful for something? (or is it only stupid closed-source poppycock?) -- it's another way to get around threads]]