Last week at SC08
Conferences Tagged Chapel, PGAS, sc08, UPC, X10 No Comments »Last week, my colleagues and I, along with our advisor, headed down to SC08 the 20th anniversary of the annual SuperComputing conference. The conference is huge (they claim 10,000 people attended) and covers everything from new parallel programming paradigms to new high performance computing architectures to new techniques for scientific computing, and there are exhibitors there from traditional vendors like Sun, SGI, and Microsoft, to universities like Indiana University, to national labs like Oak Ridge and Los Alamos. There is so much to do there, it is hard to decide which talks to attend, when to skip out and visit the exhibits, or when to go to the other various interesting talks, workshops what have you. All of that said, I wanted to highlight a couple of things I found particularly interesting.
PGAS
Partitioned Global Address Space (PGAS) programming is a different programming paradigm that sort of spans the difference between shared memory programming (like Pthreads/OpenMP) and message passing programming (like MPI). It instead allows you to treat memory as if it was shared (like shared memory), but gives you control over the “affinity” of that memory for a given process. This means you are aware of what process a block of memory likely lives in, and have the ability to move it locally, perform operations on it in parallel, and in some of the PGAS languages operate with processes as “teams” on the data.
All of this is pretty cool, but two things really stuck out. The first, is that the most mature of the PGAS languages Unified Parallel C (UPC) is implemented as a handful of extensions on top of ISO C99, and hence it might be possible to roll a version of Ruby that could take advantage of concepts from PGAS by compiling Ruby using UPC, and writing a UPC extension to all for experimenting with Ruby PGAS.
The other thing I thought was really interesting about the PGAS languages, are that two of the languages (X10 from IBM and Chapel from Cray) are targeted at high productivity and both provide some concept of object-oriented programming along with closures, making them a great deal more flexible then the traditional Fortran or C/C++ with MPI.