Undergraduate Program
Parallel and Distributed Systems
Course: CSC
258
Term: Spring 2012-2013
CSC 258/458 Parallel and Distributed Systems (Spring 2012)
- Syllabus
- Course schedule (as of January 16, for later changes see [repos]/schedule12.pdf)
- Instructor and grading
- Class repository
- Textbooks and other reading material
Lecture slides, demostration programs, and some of the reading material will be distributed through the class repository. Assignments and projects will be submitted through the repository as well.
Assignments/Changes:
- Apr 24. Homework 2 is uploaded.
- Apr. 9. Final project is assigned.
- Mar. 21. Distributed calendar project started. See project blog at http://csc258.wordpress.com/2012/03/20/258cc/.
- Jan. 19. Repository moved to csug. Instructions updated.
- Jan 18: setting up the course repository
- weekly project/homework each week before the spring break, to be listed
- term project in the second half of the course, to be assigned
Reading:
- Feb 17: Ruby language extension
- slides in [repos]/reading/ruby_ext_slides4up.pdf
- Feb 13: ways to create tasks and share data (after the pi project)
- Forbe's article on Steve Scott and Nvidia
- Jan 30: essence (cont'd)
- the wiki page on Arch programming language
- YouTube video of Racket (Flatt interviewed at FLOSS weekly, episode 167)
- Jan 25: essence of computation and parallelism
- wiki page on lambda calculus (just the introduction parts) and Church encoding
- Tom Stuart's page on programming with nothing
- Jan 23:
- (before class) wiki pages on BLAS, SETI@home, revision control.
- Jan 18:
- Section 1.1 of Bill Scherer's thesis, pages 1 to 5 (pages 20 to 25 in the pdf file)
- IEEE Computer 5/06 article by Lee
Topics
- parallel and concurrent programming
- common steps: task partitioning, data sharing, and task distribution/scheduling
- static, dynamic, and speculative tasks
- shared memory, message passing, check-in/check-out
- collaborative real-time editing
- version control systems
- synchronization and communication fundamentals
- synchronous, asynchronous
- scheduling (see parallel machine part)
- semantics
- data sharing: race, dependence, the Bernstein condition
- progress: lock and wait freedom
- reading: problems of fine-grain locks (Scherer), Lee article
- distributed sharing: coherence/consistency in memory/cache
- synchronization in shared memory
- threads and locks (and why you should not use them)
- non-blocking synchronization: transactions and dual data structures
- scalable synchronization: MS queues and MCS locks
- communication in distributed memory
- Lamport clocks, vector timestamps
- fault tolerance and distributed consensus
- distributed shared memory: Treadmarks and Interweave
- message passing: put/get, send/recv, collectives
- programming languages and frameworks
- OpenMP, Java, Cilk, Fortress
- MPI, CUDA, DCOM, Jade, HPF, X10
- APL, SaC, Multilisp
- Synchronous I/O
- programming tools
- dependence and loop parallelization
- parallelism profiling
- performance analysis/debugging
- verification
- common steps: task partitioning, data sharing, and task distribution/scheduling
- parallel machines
- types of parallelism: superscalar, VLIW, SPMD, GPU
- memory hierarchy
- cache coherence
- task static assignment and dynamic scheduling
- OpenMP, Intel TBB schedulers
- contemporary applications
- browser architecture and Web 2.0
- distributed version control: Mercurial and Git
- Jabber instant messaging
- Google's map-reduce
- Ruby event machine and Javascript nodejs
- adapter/proxy patterns and Ruby drb
- Websphere, Ruby on rails
- Apple's grand-central dispatch
- servers and databases
- Unix/Linux, iOS, Android
- on-going research
- safe/deterministic/race-free programming/execution
- BOP, Pingali's Galois
- multicore resource management
- safe/deterministic/race-free programming/execution
- possible course projects
- verification of a mobile protocol
Course projects include the design and implementation of program analysis and improvement tools. Meets jointly with CSC 258, an undergraduate-level course whose requirement includes a subset of topics and a simpler version of the project.
Instructor and grading
Instructor: Chen Ding, Prof., CSB Rm 710, x51373
Lectures: Mondays and Wednesdays, 3:25pm-4:40pm, CSB 632
Office hours:
- Ding, cding@cs.rochester.edu, Friday 11am to 12pm, by appointment (use IM or email), CSB 710, office phone x51373
- Hossain, shossain@cs.rochester.edu, Tuesday 1:30pm to 2:30pm, CSB 724,
You may contact me using instant messaging through any Jabber IM client such as a gmail address. Email the instructor for the Jabber IM contact address.
Grading (total 100%)
- midterm and final exams (15% each)
- projects (30% weekly projects, 30% term project)
- written assignments, mostly preparation for the exam (5% each)
Class repository
The class repository is managed by the distributed version control system called Mercurial. If you haven't used Mercurial before, it is easy to follow one of the many on-line tutorials. The basic commands you need are as follows. Note that unlike subversion (svn), you have a copy of the repository on your local machine, and you check out from and check into the local repository.
Before you start, make sure that you have an account on cycle1.csug.rochester.edu
Create your local repository in a directory, which we use cs258repos as an example. The sequence of commands needed are
mkdir cs258repos
cd cs258repos
hg init
Create the file cs258repos/.hg/hgrc and add the following (if your repository is not on the same network as cycle1, e.g. on your laptop). Otherwise use file://u/cding/cs258hg instead of ssh addresses. If ssh is used, you will need to type in your password each time you synchronize with server repository (your local commits never require a password).
[paths]
default = ssh://[uid]@cycle1.csug.rochester.edu//u/cding/cs258hg
default-push = ssh://[uid]@cycle1.csug.rochester.edu//u/cding/cs258hg
Set up your user name by creating the file in your home directory ~/.hgrc and add the following
[ui]
username = First, Last <email>
Textbooks and other resources
- Spring 2011 course page by Prof. Shen
- Practical parallel and concurrent programming, an on-line course from MSR/Utah (see also other parallel programming courses there)
- ParLib short course on parallel programming
Attachment | Size |
---|---|
schedule12.pdf | 28.24 KB |