Parallel Programming Concepts (Konzepte paralleler Programmierung)Winter term 2011/12Dr. Peter Tröger, Prof. Dr. Andreas PolzeFrank FeinbubeSince the very beginning of computers, processors were build with ever-increasing clock frequencies and instruction-level optimizations for faster serial code execution, such as ILP, caches, or speculative engines. Software developers and industry got used to the fact that applications get faster by just exchanging the underlying hardware. For several years now, these rules are proven to be no longer valid. Moore's law about the ever-increasing number of transistors per die is still valid, but decreased structural sizes and increased power consumption demand stalling, or even reduced, clock frequencies. Due to this development, serial execution performance no longer improves automatically with the next processor generation. In the 'many-core era' that happens now, additional transistors are used not to speed up serial code paths, but to offer multiple execution engines ('cores') per processor. This changes every desktop-, server-, or even mobile system into a parallel computer. The exploitation of additional transistors is therefore now the responsibility of software, which makes parallel programming a mandatory approach for all software with scalability demands. In this course, we want to discuss the relevant theoretical and practical solutions available for parallel software development. The following topics are covered:
AssignmentsPlease make sure that your group is registered in the assignment submission system. You can use your HPI login credentials (information from the lecture was incorrect).
RulesThere are three mandatory assignments, to be solved alone or as team of two persons. The oral exam admittance is achieved if two out of three assignments are solved correctly.Recommended Readings (permanently updated)Journal Article
Conway, M. E., “Design of a separable transition-diagram compiler,” Commun. ACM, vol. 6, Jul. 1963, pp. 396-408.
[BibTex]
[Download]
[Link]
Feinbube, F., Tröger, P., and Polze, A., “Joint Forces: From Multithreaded Programming to GPU Computing,” IEEE Software (Software), vol. 28, Oct. 2010, pp. 51-57.
[BibTex]
[Abstract]
[Link]
Gelernter, D., “Generative communication in Linda,” ACM Trans. Program. Lang. Syst., vol. 7, Jan. 1985, pp. 80-112.
[BibTex]
[Link]
González-Vélez, H. and Leyton, M., “A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers,” Software: Practice and Experience, vol. 40, Nov. 2010, pp. 1135-1160.
[BibTex]
Hansen, P. Brinch, “Structured multiprogramming,” Commun. ACM, vol. 15, 1972, pp. 574-578.
[BibTex]
Hansen, P. Brinch, “Distributed processes: a concurrent programming concept,” Commun. ACM, vol. 21, 1978, pp. 934-941.
[BibTex]
Hoare, C. Antony Richard, “Communicating Sequential Processes,” Commun. ACM, vol. 21, 1978, pp. 666-677.
[BibTex]
Hoare, C.A.R., “Monitors: an operating system structuring concept,” Commun. ACM, vol. 17, 1974, pp. 549-557.
[BibTex]
[Download]
Sutter, H., “The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software,” Dr. Dobb’s Journal, vol. 30, Mar. 2005.
[BibTex]
Valiant, L. G., “A bridging model for parallel computation,” Commun. ACM, vol. 33, 1990, pp. 103-111.
[BibTex]
[Download]
Book
Breshears, C., The Art of Concurrency: A Thread Monkey’s Guide to Writing Parallel Applications, O’Reilly Media, Inc., 2009.
[BibTex]
Chandy, K. Mani and Misra, J., Parallel Programming Design.
[BibTex]
Foster, I., Designing and Building Parallel Programs, Addison-Wesley, 1995.
[BibTex]
[Link]
Hansen, P.B., ed., The origin of concurrent programming: From semaphores to remote procedure calls, New York, NY, USA: Springer-Verlag New York, Inc., 2002.
[BibTex]
Herlihy, M. and Shavit, N., The Art of Multiprocessor Programming, Morgan Kaufmann, 2008.
[BibTex]
Jaja, J., An introduction to parallel algorithms, Redwood City, CA, USA: Addison Wesley Longman Publishing Co., Inc., 1992.
[BibTex]
Kirk, D. B. and Hwu, W.-mei W., Programming Massively Parallel Processors: A Hands-on Approach, Morgan Kaufmann, 2010.
[BibTex]
Lynch, N., Distributed Algorithms, Morgan Kaufmann Series in Data Management Systems, 1997.
[BibTex]
Massingill, B. L., with Mattson, T. G. and S, B. A., ers, Patterns for Parallel Programming (Software Patterns Series), Addison-Wesley Professional, 2004.
[BibTex]
Perrott, R. H., Parallel Programming, Addison-Wesley Publishing Company, 1987.
[BibTex]
Schneider, S., Concurrent and Real Time Systems: The CSP Approach, New York, NY, USA: John Wiley Sons, Inc., 1999.
[BibTex]
Book Section
Amdahl, G. M., “Validity of the single processor approach to achieving large scale computing capabilities,” San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 2000, pp. 79-81.
[BibTex]
[Download]
Courtois, P.J., Heymans, F., and Parnas, D.L., “Concurrent control with ‘readers’ and ‘writers’,” Hoffman, D.M. and Weiss, D.M., eds., Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2001, pp. 389-392.
[BibTex]
Dijkstra, E. W., “Hierarchical ordering of sequential processes,” The origin of concurrent programming: From semaphores to remote procedure calls, New York, NY, USA: Springer-Verlag New York, Inc., 2002, pp. 198-227.
[BibTex]
[Download]
Dijkstra, E. W., “Cooperating sequential processes,” The origin of concurrent programming: From semaphores to remote procedure calls, New York, NY, USA: Springer-Verlag New York, Inc., 2002, pp. 65-138.
[BibTex]
[Download]
Hoare, C. A. R., “Towards a theory of parallel programming,” The origin of concurrent programming: From semaphores to remote procedure calls, New York, NY, USA: Springer-Verlag New York, Inc., 2002, pp. 231-244.
[BibTex]
Conference Paper
Blumofe, R. D. and Leiserson, C. E., “Scheduling Multithreaded Computations by Work Stealing,” In Proceedings of the 35th Annual Symposium on Foundations of Computer Science (FOCS, 1994, pp. 356-368.
[BibTex]
[Download]
Bronevetsky, G., Laguna, I., Bagchi, S., Supinski, B. R. de, Ahn, D. H., and Schulz, M., “AutomaDeD: Automata-based debugging for dissimilar parallel tasks,” International Conference on Dependable Systems and Networks (DSN), Jun. 2010, pp. 231-240.
[BibTex]
[Abstract]
Chandrakasan, A. P., Potkonjak, M., Mehra, R., Rabaey, J., and Brodersen, R. W., “Optimizing Power Using Transformations.”
[BibTex]
[Abstract]
Culler, D. E., Karp, R. M., Patterson, D. A., Sahay, A., Schauser, K. E., Santos, E., Subramonian, R., and Eicken, T. von, “LogP: Towards a Realistic Model of Parallel Computation,” 1993, pp. 1-12.
[BibTex]
[Download]
Dijkstra, E.W., “The structure of the ‘THE’-multiprogramming system,” SOSP ’67: Proceedings of the first ACM symposium on Operating System Principles, 1967.
[BibTex]
Gellerich, W. and Gutzmann, M.M., “Massively Parallel Programming Languages - A Classification,” ISCA International Conference on Parallel and Distributed Computing Systems, vol. 1, pp. 110-118.
[BibTex]
[Download]
Kennedy, K., Koelbel, C., and Zima, H., “The rise and fall of High Performance Fortran: an historical object lesson,” third ACM SIGPLAN conference on History of programming languages, 2007, pp. 7-1.
[BibTex]
[Link]
Slide
Bechtolsheim, A., “The Road To Exascale,” 2009.
[BibTex]
[Download]
Web Page
Barney, B., “Introduction to Parallel Computing.”
[BibTex]
Wilson, G. V., “The History of the Development of Parallel Computing.”
[BibTex]
“Classification of the principal programming paradigms.”
[BibTex]
[Link]
| |