Jan31

Hummingbird Simulation using UPC

Categories: General
0 Responses

I showed a couple of slides from a PGAS conference below, but today I just got a real treat. It’s a dvd with videos of the conference plus some very interesting animations. This is an animation of a simulation of a hummingbird implemented using UPC (Unified Parallel C), a PGAS language. It’s an alternative to using MPI for cluster computing, and many find its higher-level communications easer to use than MPI. The video of the talk should give you an idea what is happening here. I’ve loaded these videos onto my own web server, since Sun won’t let us load such large objects here. The animation is 20 MB and the talk is 65 MB. I may be forced to take them down one day, but for now, enjoy. Oh, you might want to download them before viewing.

Jan30

MPI by Sun

Categories: Tools
0 Responses

Since we’ve been discussing MPI, I thought I’d mention that Sun is again supporting MPI.

For reasons too incredible to believe, Sun neglected to move its MPI package to Solaris 10, or to X64. After a nudge and a bit of funding from the HPCS program, they are fixing that. This is one of the best MPI implementations anywhere, and certainly the best on Sun systems. It can take full advantage of shared memory when it’s available.

It’s part of ClusterTools, which is now available for early access. It’s also available as open source using the Sun Community Source License.

Get it and try it out. If you have any problems, report them. The developers are a good crew, and will do their best to make you happy with it.

Jan30

Starting a group blog for HPCS

Categories: root
0 Responses

Some of my colleagues on the HPCS program liked the idea of blogging about some of the results we’ve been seeing on the program, so I’ve set up a group blog on the topic. I’ll be writing about more general tools issues in this blog.

Jan9

HPC Programming Models

Categories: Performance
0 Responses

Essentially all modern HPC code makes use of parallelism to speed up execution. Parallelism isn’t the only way to speed things up, but it’s the most general way, and the other approaches are usually used in massively parallel systems anyway. We’ll talk about these other approaches some other time.

There are two common approaches to tying computers together for HPC. One is a Symmetric multiprocessor, or SMP, which consists of group of processors sharing a common memory. These are very common, and are becoming even more common with multi-core chips. The other is a cluster of computers interconnected with some high-speed network. These techniques can be used together to build a cluster of SMPs. In fact, the most common HPC system in the near future will probably be a cluster of multi-core Opterons.

The most common tool for writing parallel programs is MPI, or the Message Passing Interface library. This is a library, used from either Fortran or C/C++, that handles data transfer and synchronization among processes.

If we look at real-world usage we discover that it’s dominated by MPI.

F90/F95 17
C/C++ 3
MPI 20
OpenMP 4 (as an alternative to MPI)
(Sca)LAPACK 5
NetCDF 2
PETSc 1

A larger survey of about 300 users at NCSA asked about how the program is parallelized.

MPI 44%
openMP 14%
Mixed MPI/openMP 11%
Automatic 8%

Unfortunately, though MPI works well, it’s not easy to use, since it’s a very low-level library.
A good part of our productivity study has been spend looking for alternatives.