Bernd Dammann, Associate Professor at the Technical University of Denmark spoke yesterday
afternoon at the Sun HPC Consortium meeting here in Dresden. His talk focused on the benefits
of Sun's Studio compiler and tools suite for education and HPC.
Sun Studio is an important tool for teaching students about HPC programming techniques at DTU,
including data flow through cache-based systems, loop-based optimization techniques,
pipelining, and general application tuning techniques. The particular programming course that Bernd
described focuses on helping students understand how real computers work, how memory
and CPUs are glued together -- the details they don't learn in more theoretical courses.
However, once the students are exposed to these techniques they are surprised to learn
that many of these techniques are applied automatically to their codes by modern
compilers. Good news for ease of use, but frustrating for engineering students who
typically don't like black boxes and prefer to understand internal details in such cases.
Sun Studio solves this problem with its compiler commentary feature.
Compiler commentary allows the programmer to view their source code
annotated with compiler-generated comments that describe in detail
not just which optimizations were applied to the code, but also cases
in which optimizations where not applied. Bernd showed several examples
that illustrated how the feature works, including the use of the
utility to display source code with interleaved commentary.
The benefit, of course, of the compiler commentary is that a suitably educated
programmer can use the information to find additional opportunities for
performance improvement by making suitable changes to the code or by
activating additional compiler features.
For example, one of Bernd's examples showed the use of the -xrestrict compiler
flag, which was not familiar to me. It allows the programmer to tell the compiler
that pointers in the code are known not to overlap, which can potentially allow
the compiler to significantly increase performance with additional optimizations.
Bernd noted that Sun's compiler commentary is "in the right place," namely in
the binaries rather than in separate log files or merely displayed on a screen.
By storing the commentary internally, it can be extracted and looked at later--
potentially long after compilation, which can be very useful.
Bernd then gave a brief overview of Sun's primary performance analysis tool,
Sun Studio Performance Analyzer. He noted that it can display compiler commentary as well as a
variety of application performance metrics (cpu usage, timelines, etc.) He praised it as a tool
that both he and his students find very intuitive
and easy to use.
Sun Studio is also used in a parallel programming course where it makes
teaching OpenMP much easier. Being able to look at performance timelines
for each thread to see OpenMP overheads and using the Thread Analyzer tool
to detect data races were two examples. He also liked Sun's extension to
OpenMP that allows the compiler to perform automatic scoping, which can
be very useful in dealing with large, legacy codes with hundreds of
Students at DTU have been using the Sun Studio tools for four years and like
it a lot. They wished they could use the tools on Linux. Well, now they can.
Bernd ended his talk with some favorable comparisons of Sun Studio C
against GCC and Intel C and showed an example of how easy it was
to use the Sun tools to easily parallelize and debug a large, legacy
Fortran code and get good parallel performance very quickly. He
conclused with the observation that Sun Studio is a world-class
product that is easy to learn and use. Bernd is now on my official
list of favorite customers.