Productivity and Performance in computing
Getting Somewhere Fast

Contact me at Michael DOT Ball AT Sun DOT com

Archives
« January 2006 »
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    
       
Today
XML
Search

Links
 

Today's Page Hits: 20

20060131 Tuesday January 31, 2006
Good Ideas, Bad Ideas
I just read a great article in the latest issue of "Computer". Good Ideas, through the Looking Glass, by Niklaus Wirth. It's a discussion of ideas that looked good at the time, but haven't made it in the long run. A warning: this article requires an IEEE membership to view. If you can't see it, you need to join the IEEE Computer Society, at a minimum. There are other ways to see it. Your company may well have a blanket access, or you can subscribe to the IEEE Digital Library, which is a great bargain if you do any online literature searches. Really, just join, you won't regret it.


20060130 Monday January 30, 2006
Hummingbird Simulation using UPC
If you are interested in seeing a cool animation, look at this entry on the HPCS blog. It's implemented on a Cray using UPC, which is a language that we don't support yet. I'm seriously hoping that we will within a year or so.


20060129 Sunday January 29, 2006
MPI by Sun

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.



Starting a group blog for HPCS
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.


20060108 Sunday January 08, 2006
HPC Programming Models

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.

NERSC Top 20 Applications (52% of Cycles)
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.

How is the program parallelized?
MPI44%
openMP14%
Mixed MPI/openMP11%
Automatic8%

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.