Josh Simons' Coordinates in the Blogosphere

Fresh Bits: Attention all OpenMP and MPI Programmers!

The latest preview release of Sun's compiler and tools suite for C, C++, and FORTRAN users is now available for free download.
Called Sun Studio Express 07/08, this release of Sun Studio marks an important advance for HPC customers and for any customer interested in extracting high performance from today's multi-threaded and
multi-core processors. In addition to numerous compiler performance enhancements, the release includes beta-level support
for the latest OpenMP standard, OpenMP 3.0. It also includes some nice
Performance Analyzer enhancements that support simple and intuitive performance analysis of
MPI jobs. More detail on both of these below.

As the industry-standard approach for achieving parallel performance on multi-CPU systems, OpenMP has long been a mainstay of the HPC developer community. Version 3.0, which is supported in this new Sun Studio preview release, is a major enhancement to the standard. Most notably it includes support for tasking, a major new feature that can help programmers achieve better performance and scalability with less effort than previous approaches using nested parallelism. There are a host of other
enhancements as well. The OpenMP expert will find the latest specification useful. For those new to parallelism who have stumbled into a maze of twisty passages all alike, you may
find Using OpenMP: Portable Shared Memory Parallel Programming to be a useful introduction to parallelism and OpenMP.

A parallel quicksort example, written using the new OpenMP tasking feature supported in Sun Studio Express 07/08

Sun Studio Express 07/08 also includes enhancements for programmers of parallel, distributed applications who use
MPI.
With this release of Sun Studio Express we have introduced tighter integration with Sun's MPI library (Sun HPC ClusterTools). Sun's Performance Analyzer has been enhanced to include the ability to examine the performance of
MPI jobs by viewing information related to message transfers and messaging performance using
a variety of visualization methods. This extends Analyzer's already-sophisticated on-node performance analysis
capabilities. Some screenshots below give some idea of the types of information that can be viewed. You should
note the idea of viewing "MPI states" (e.g. MPI Wait and MPI Work) to get a high level view of the performance of
the MPI portion of an
application: an ability to understand how much time is spent doing actual work versus sitting in a wait state
can motivate useful insights into the performance of these parallel, distributed codes.

A source code viewer window augmented with several MPI-specific capabilities, one of which is illustrated here: the ability to quickly see how much work (or waiting) is performed within a function.

In addition to supporting direct viewing of specific MPI performance issues within an application, Analyzer now also
supports a range of visualization tools useful for understanding the messaging portion of an MPI code. Zoomable
timelines with MPI events are supported, as is an ability to map various metrics against the X and Y axis of a
plotting area to display various interesting characteristics of the MPI run, as shown below.

Just one example of Sun Studio's new MPI charting capabilities. Shown here is a display showing the volume of messages transferred between communicating pairs of MPI processes during an application run.

This blog entry has barely scratched the surface of the new OpenMP and MPI capabilities available in this release. If you
are a Solaris or Linux HPC programmer, please take these new capabilities for a test drive and let us know what you think.
I know the engineering teams are excited by what they've accomplished and I hope you will share their enthusiasm once
you've tried these new capabilities.