CSC 2/458

Parallel and Distributed Systems

Spring 2008.

Possible student-led classes

The following are listed in no particular order, but I've highlighted in red the ones I'd particularly like to see someone take.  Also note that this is in no way an exhaustive list; feel free to suggest a topic of your own. 

The HPCS languages
Fortress (Sun), X10 (IBM), and Chapel (Cray).  These are the latest, greatest thing in parallel language design.  Transactions, control abstraction, and explicit locality management.  Commissioned by DARPA. 

Partitioned global address space (PGAS) languages
These are arguably the most mature parallel langauges for high-end scientific computing.  Look into co-array Fortran, UPC, and Titanium. 

Parallel functional languages
Several people have argued that functional languages are the ideal notation in which to express parallel programs, becuase the lack of side effects makes parallelization easy.  Look into (1) Parallel Haskel (pH) and its cousins, or (2) Microsoft's new F#. 

Other parallel languages and notations
Compare and contrast some subset of HPF, OpenMP, Java, C#, Ada, Perl, Ruby, ...

Analysis tools
for race detection, model checking, etc.

Fine-grain threaded programming models
Several people have argued that parallelization would be easier if we didn’t have to worry about grain size: make everything a thread.  How can we do this efficiently?  Look into Cilk and its cousins. 

The top 500 list
Learn about the world's biggest machines, and tell us what they're like. 

Transactional memory
The hottest fad for multicore.  Huge number of topics to explore; ask me!

Cache coherence for large machines—
beyond the confines of a single bus.  Teach us how the SunFire and Regatta machines work.  Also look at the SGI Origin series and the AlphaServer GS320.  Alternatively, present the token coherence scheme of Martin, Hill, and Wood, which provides a highly optimized implementation of sequential consistency.

Comparison of S-DSM systems
Ivy, Munin, Treadmarks, HLRC, Cashmere

Topics in locking and synchronization
Possibilities include

CORBA and .NET
These are the competing standars for distributed object-oriented computing.  It’s Microsoft v. the world (again).  How do the contenders compare? 

ssh, firewalls, proxies, tunneling, VPN, etc. 
What are the tradeoffs in the design of security mechanisms for remote computer access? 

distributed file systems
There are lots of these around, from the well-established, feature-rich AFS to the experimental OceanStore and FarSite.  So how come most of us still use NFS and SMB? 

peer-to-peer sharing, overlay networks, distributed hash tables, etc.
This stuff has been really hot the last few years.  But is it good for anything other than stealing music? 

Active devices and storage-area networks
Increasingly people are proposing that storage devices be connected directly to the network, the way processors and printers are.  Network-attached devices tend to have quite a bit of processing power.  Can we do cool stuff by downloading application code? 

System area networks
These are very high bandwidth, very low latency networks suitable for one-room super clusters.  Look into VIA, Infiniband, Scheduled Transfer, GSN, etc. 

The GRID
An active collection of research groups is working to connect high-end computational centers (e.g. the National Labs) into a global system, with convenient naming, authentication, remote access, data sharing, resource allocation, etc.  See the book (2nd edition) by Foster and Kesselman. 

Modeling speedup
Read and summarize the various seminal papers on speedup, efficiency, scaled speedup, isoefficiency, EDSF (experimentally determined serial fraction), etc. 

Last Change: 12 January 2011 / Michael Scott's email address