Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Primitive constructs for task creation & termination, collective & point-to-point synchronization, task and data distribution, and data parallelism
  • Abstract models of parallel computees and computation graphs
  • Parallel algorithms and data structures including lists, strings, trees, graphs, matrices
  • Common parallel programming patterns including task parallelism, undirected and directed synchronization, data parallelism, divide-and-conquer parallelism, map-reduce, concurrent event processing including graphical user interfaces. 

We will study how these primitives can be used to create parallel algorithms, including parallel versions of algorithms that you’ve studied in COMP 314.  The primitives will be made available to you in a simple extension to the Java language called Habanero-Java (HJ), developed in the Habanero Multicore Software Research project at Rice University.  The use of Java is for convenience and will be confined to a subset of the language that should also be accessible to C programmers --- no advanced Java features will be used.
 
An abstract performance model for HJ programs will be available to aid you in complexity analysis of parallel programs before you embark on performance evaluations on real parallel machines.  The foundations gained in this course will prepare you for advanced courses on Parallel Computing (COMP 422, COMP 522), and also ease your transition to other multicore programming models such as Java Concurrency, .Net Task Parallel Library & PLINQ, Intel Threading Building Blocks, Cilk, and OpenMP, as well as programming models for GPUs such as CUDA and OpenCL and for large-scale clusters such as Hadoop and Google's MapReduce. 
 
The aim of the course is for you to gain both theoretical and practical knowledge of the principles of parallel programming.  Accordingly, the weightage for course work will be equally balanced between programming projects and written assignments & exams
Laboratory assignments will explore these topics through a simple parallel extension to the Java language called Habanero-Java (HJ), developed in the Habanero Multicore Software Research project at Rice University.  The use of Java will be confined to a subset of the language that should also be accessible to C programmers --- no advanced Java features will be used.  An abstract performance model for HJ programs will be available to aid you in complexity analysis of parallel programs before you embark on performance evaluations on real parallel machines.  We will conclude teh course by introducing you to some real-world parallel programming models including the Java Concurrency Utilities, CUDA and Google's MapReduce.  The foundations gained in this course will prepare you for advanced courses on Parallel Computing offered at Rice (COMP 422, COMP 522). 
 
The aim of the course is for you to gain both theoretical and practical knowledge of the foundations of parallel programming.  Accordingly, the weightage for course work will be equally balanced across written assignments, programming assignments, and exams.

...