- General
- Getting Started with Sun Studio Software
- Building GLib With Sun Studio Tools - A Case Study
- Floating-Point Computing: A Comedy of Errors?
- Converting 32-bit Applications Into 64-bit Applications: Things to Consider
- Sun Studio 12 Quick Start Guide
- Roadmap to Sun Developer Documentation
- C/C++
- New Language Extensions in the Sun Studio 12 C Compiler
- How to Use the restrict Qualifier in C
- Comparing C++ Standard Libraries libCstd and libstlport
- Detecting and Avoiding OpenMP Race Conditions in C++
- Using the C/C++ Garbage Collection Library, libgc
- Lock_Lint - Static Data Race and Deadlock Detection Tool for C
- Mixing C and C++ Code in the Same Program
- Reducing Symbol Scope with Sun Studio C/C++
- Fortran
- Fortran 2003 Features in the Sun Fortran Compiler
- Using F95 Interfaces to Customize Access to the Sun Performance Library
- Using Run-Time Checking Options With The Sun Studio Fortran Compiler
- Debugging
- Why Can't dbx Find My Function?
- Using DTrace to Demystify Watchpoints in the Sun Studio dbx Debugger
- AMD64 Instruction-Level Debugging with Sun Studio dbx
- Performance Analysis and Optimization
- Sun Studio Performance Analyzer Quick Start Guide
- Building Enterprise Applications with Sun Studio Profile Feedback
- Improving Code Layout Can Improve Application Performance
- Selecting Representative Training Workloads for Profile Feedback Through Coverage and Branch Analysis
- Use Profile Feedback To Improve Performance
- Performance Tuning With Sun Studio Compilers and Inline Assembly Code
- Using Inline Templates to Improve Application Performance
- Selecting the Best Compiler Options
- Using UltraSPARC-IIICu Performance Counters to Improve Application Performance
- Advanced Compiler Options for Performance
- The Sun Studio Performance Tools
- Profiling WebSphere Application Servers with Sun Studio Performance Tools
- Cool Tools: Using SHADE to Trace Program Execution
- Using Sun Studio 12 on UltraSPARC T1- and T2-based Systems
- Calculating Processor Utilisation From the UltraSPARC T1 and UltraSPARC T2 Performance Counters
- Tip: How Many Threads Does It Take?
- Sun Studio: Using VIS Instructions To Speed Up Key Routines
- Profiling WebLogic Servers with Sun Studio Performance Tools
- x86/x64
- Sun Studio 10 Compilers and the AMD64 ABI
- 64-bit x86 Migration, Debugging, and Tuning, With the Sun Studio 10 Toolset
- Getting The Best AMD64 Performance With Sun Studio Compilers
- Sun Studio Support for the AMD64 Medium Memory Model
- Assembly Language Techniques for the Solaris OS, x86 Platform Edition
- Compiler Differences Between Solaris OS, SPARC Platform Edition and x86 Platform Edition
- Parallel/Multithreaded Programming
- Maximizing Application Performance on Chip Multithreading (CMT) Architectures
- Improving Application Efficiency Through Chip Multi-Threading
- Chip Multithreading and Multiprocessing
- An OpenMP Runtime API for Profiling
- Introducing OpenMP: A Portable, Parallel Programming API for Shared Memory Multiprocessors
- Developing Applications For Parallel Computing
- The Challenge of Race Conditions in Parallel Programming
- OpenMP Support in Sun Studio Compilers and Tools
General
Getting Started with Sun Studio Software
by Jyothi Srinath, Sun Microsystems, January 2008
This article is intended for developers and users new to Sun Studio software. It provides an introduction to Sun Studio software and its various features with links to the corresponding user guides and programming guides. http://docs.sun.com/source/820-3999/stdstart.html
Building GLib With Sun Studio Tools - A Case Study
By Nikolay Molchanov, Sun Microsystems, May 10, 2006 GLib is a general-purpose utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on. It works on many UNIX-like platforms, Windows, OS/2 and BeOS . GLib is released under the GNU Library General Public License (GNU LGPL). On UNIX, GLib uses the standard GNU build system, using autoconf for package configuration and resolving portability issues, automake for building makefiles that comply with the GNU Coding Standards, and libtool for building shared libraries on multiple platforms. http://developers.sun.com/solaris/articles/dmake.html
Floating-Point Computing: A Comedy of Errors?
By Gregory Tarsy and Neil Toda, Sun Microsystems, 20.Jan.04 This article explores some of the intricacies inherent in using floating-point arithmetic for numerical computing. It is devoted to analyzing a straightforward example of summing the sequence of square-roots of the first 1,000,000,000 positive integers. Thanks are due to Paul Murphy whose Linuxworld article of 1/29/2003 was the inspiration for this note. http://developers.sun.com/solaris/articles/fp_errors.html
Converting 32-bit Applications Into 64-bit Applications: Things to Consider
By The Sun Studio Team, January 2005 The principal cause of problems when converting 32-bit applications to 64-bit applications is the change in size of the int type with respect to the long and pointer types. When converting 32-bit programs to 64-bit programs, only long types and pointer types change in size from 32 bits to 64 bits; integers of type int stay at 32 bits in size. This can cause trouble with data truncation when assigning pointer or long types to int types. Also, problems with sign extension can occur when assigning expressions using types shorter than the size of an int to an unsigned long or a pointer. This article discusses how to avoid or eliminate these problems. http://developers.sun.com/solaris/articles/ILP32toLP64Issues.html
Sun Studio 12 Quick Start Guide
The following short tutorial takes you through some of the basic steps of developing a C, C++, or Fortran application using Sun Studio 12 IDE. http://developers.sun.com/solaris/articles/studio_qs.html
Roadmap to Sun Developer Documentation
By John Stearns, February 2005, updated November 2006 This article provides a roadmap to information sources for Sun products for developers, with links that readers can use to bookmark the sources. http://developers.sun.com/solaris/articles/sun_dev_docs.html
C/C++
New Language Extensions in the Sun Studio 12 C Compiler
By Dmitry Mikhailichenko, Sun Microsystems, St Petersburg, Russia, June 2007 This article gives an overview of the following C-language extensions (part of the GNU C-implementation) introduced in the Sun Studio 12 C compiler. Although these extensions are not part of the latest ISO C99 standard, they are supported by the popular gcc compilers. http://developers.sun.com/solaris/articles/c_type.html
How to Use the restrict Qualifier in C
By Douglas Walls, Sun ONE Tools Group, Sun Microsystems, July 2003 (revused March 2006) Using the restrict qualifier appropriately in C programs may allow the compiler to produce significantly faster executables. http://developers.sun.com/solaris/articles/cc_restrict.html
Comparing C++ Standard Libraries libCstd and libstlport
By Mukesh Kapoor , Sun Studio Development Engineering, Sun Microsystems, May 17, 2006 http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html
Detecting and Avoiding OpenMP Race Conditions in C++
By Phyllis Gustafson, Sun ONE Studio Tools Group, Sun Microsystems While OpenMP is now the preferred model for writing portable shared-memory parallel programs, there are no safeguards in either the OpenMP specifications or its implementation to protect you from inadvertently introducing race conditions into your code. A race condition exists when two unsynchronized threads access the same shared variable with at least one thread modifying the variable. The outcome may be unpredictable and depends on the timing of the threads in the team. Race conditions are an insidious problem because they can remain undetected for many thousands of executions, and it is not always obvious that the program has generated incorrect results. Because communications and synchronizations are often implicit in shared memory programming, race conditions can arise unexpectedly. It is the programmer's responsibility to ensure that the code is free from situations that could give rise to race conditions that corrupt the computational results. This article discusses some common scenarios that cause race conditions and provides easy coding alternatives to avoid them. http://developers.sun.com/solaris/articles/cpp_race.html
Using the C/C++ Garbage Collection Library, libgc
By Mukesh Kapoor, Sun Microsystems - Sun ONE Studio Solaris Tools Development Engineering This article discusses some of the runtime errors related to memory management and how you can use the garbage collection library, libgc to fix these errors. In most cases, just linking with the library without making any changes to your code will fix the errors. You can get additional benefits by calling the functions available in the public Application Programming Interface (API) of the library. The library has a C API so you can use it with both C and C++ programs. libgc is included with the Sun C++ compiler product. http://developers.sun.com/solaris/articles/libgc.html
Lock_Lint - Static Data Race and Deadlock Detection Tool for C
The command-line utility lock_lint analyzes the use of mutex and multiple readers/single writer locks, and reports on inconsistent use of these locking techniques that may lead to data races and deadlocks in multi-threaded applications. http://developers.sun.com/solaris/articles/locklint.html
Mixing C and C++ Code in the Same Program
By Stephen Clamage, Sun Microsystems, Sun ONE Studio Solaris Tools Development Engineering The C++ language provides mechanisms for mixing code that is compiled by compatible C and C++ compilers in the same program. You can experience varying degrees of success as you port such code to different platforms and compilers. This article shows how to solve common problems that arise when you mix C and C++ code, and highlights the areas where you might run into portability issues. In all cases we show what is needed when using Sun C and C++ compilers. http://developers.sun.com/solaris/articles/mixing.html
Reducing Symbol Scope with Sun Studio C/C++
By Giri Mandalika, May, 2005 (revised March 22, 2006) Hiding non-interface symbols of a library within the library makes the library more robust and less vulnerable to symbol collisions from outside the library. This symbol scope reduction also improves the performance of an application by reducing the runtime relocation costs of the dynamic libraries. To indicate the appropriate linker scoping in a source program, you can now use language extensions built into the Sun Studio C/C++ compilers as described here. http://developers.sun.com/solaris/articles/symbol_scope.html
Fortran
Fortran 2003 Features in the Sun Fortran Compiler
The Sun Studio Fortran compiler, f95, already handles a large number of features that are part of the current Fortran international standard, Fortran 2003. http://developers.sun.com/solaris/articles/f2k.html
Using F95 Interfaces to Customize Access to the Sun Performance Library
By Paul Hinker, Sun Microsystems, June 2007 Porting dusty deck Fortran source can be an exercise in patience and conditional compilation. An application that needs to run in the ILP-32, LP-64, and ILP-64 models faces the problem of interfacing with external libraries seamlessly. http://developers.sun.com/solaris/articles/f95_perf_library.html
Using Run-Time Checking Options With The Sun Studio Fortran Compiler
By Diane Meirowitz, Senior Staff Engineer, Fortran Compiler Team, December, 2006 The Sun Studio Fortran compiler provides several command line options to enable run-time checks that can help you find bugs in your Fortran programs. http://developers.sun.com/solaris/articles/rtc.html
Debugging
Why Can't dbx Find My Function?
By Maxim Kartashev, Sun Microsystems, April 11, 2006 The Sun Studio debugger, dbx, will complain when it can't find all the debug information it needs for your program. This article will show you the error messages that might appear, explain what could go wrong, and suggest how to fix things. http://developers.sun.com/solaris/articles/dbxerr.html
Using DTrace to Demystify Watchpoints in the Sun Studio dbx Debugger
By Nasser Nouri, Sun Microsystems, Inc, August 2007 One of the most useful debugging features in the Sun Studio dbx debugger is enabling watchpoints during the execution of programs. A watchpoint, which is also called a data change breakpoint, can be used in dbx to stop a program when the value of a variable or expression has changed. A watchpoint is similar to a breakpoint, except that a watchpoint stops execution when an address location is read or modified, whereas a breakpoint stops execution when an instruction is executed at a specified location. http://developers.sun.com/solaris/articles/demistify_watch_points.html
AMD64 Instruction-Level Debugging with Sun Studio dbx
By Nasser Nouri , Sun Studio Debugger Engineering, Sun Microsystems, December 2, 2005 Debugging at the machine-instruction level in the dbx command-line debugger environment becomes very handy when a software bug cannot be found easily. Usually, programs are written in high-level languages such as C, C++, or Fortran, and most of the software defects can be debugged in the dbx environment at the same high level. http://developers.sun.com/solaris/articles/x64_dbx.html
Performance Analysis and Optimization
Sun Studio Performance Analyzer Quick Start Guide
This guide gives you enough information to get started using the Sun Studio performance analysis tools. http://developers.sun.com/solaris/articles/analyzer_qs.html
Building Enterprise Applications with Sun Studio Profile Feedback
By Giri Mandalika, Sun Microsystems, April 11, 2006 (updated June 2007) Large, CPU intensive applications may perform better when built with profile feedback. Profile feedback optimization requires the application be built twice, once to collect the profile data, and again to make use of the profile to generate optimal code. This requirement may prevent many software vendors from building their applications with profile feedback Generating a profile for each software release can be impractical. However it is possible to use old profiles to minimize the overhead of profile feedback builds in a development environment and without compromising the advantages of feedback directed optimization. This article introduces all the stages of profile feedback with examples, and offers some tips for making profile feedback builds, feasible. http://developers.sun.com/solaris/articles/building.html
Improving Code Layout Can Improve Application Performance
By Darryl Gove, Senior Performance Engineer, June 22, 2005 Large applications have a particular problem: they have a lot of instructions, and the processor does not have the capacity to hold the entire application on-chip at any one time. As a consequence, larger applications spend some of their run time stalled with the processor waiting to fetch new instructions from memory. This paper discusses several techniques that help the processor to hold more useful instructions on-chip, consequently reducing the time wasted fetching data from memory. http://developers.sun.com/solaris/articles/codelayout.html
Selecting Representative Training Workloads for Profile Feedback Through Coverage and Branch Analysis
By Darryl Gove, Compiler Performance Engineering, Sun Microsystems, September 29, 2006 Profile feedback is an optimisation technique that uses a short training run of the application to provide the compiler with more detailed information about the runtime behaviour of the program. This information enables the compiler to make better optimisation decisions. For example, which routines are appropriate to inline, or which branches are the frequently taken path. http://developers.sun.com/solaris/articles/coverage.html
Use Profile Feedback To Improve Performance
By Darryl Gove, Chris Aoki, Sun Microsystems, September, 2005 Profile feedback is a useful mechanism for providing the compiler with information about how a code behaves at runtime. Having this information can lead to significant improvements in the performance of the application. As with all optimisations, it is only worth using profile feedback if it does produce a gain in performance. http://developers.sun.com/solaris/articles/profeedback.html
Performance Tuning With Sun Studio Compilers and Inline Assembly Code
By Timothy Jacobson, Sun Microsystems, June 2007 For developers who need faster performance out of C, C++, or Fortran programs, Sun Studio compilers provide several efficient methods. Performance tuning has always been a difficult task requiring extensive knowledge of the machine architecture and instructions. To make this process easier, the Sun Studio C, C++ and Fortran compilers provide easy-to-use performance flags http://developers.sun.com/solaris/articles/inline_assembly.html
Using Inline Templates to Improve Application Performance
By Darryl Gove, Compiler Performance Engineering Team, Sun Microsystems Inline templates are a mechanism for directly inserting assembly code into an executable. Typically, this approach is used to obtain the best performance for a given function, or to implement an algorithm in a specific way. http://developers.sun.com/solaris/articles/inlining.html
Selecting the Best Compiler Options
By Darryl Gove, Senior Performance Engineer, Sun Microsystems, June 2008 This article suggests how to get the best performance from an UltraSPARC or x86/AMD64 (x64) processor running on the latest Solaris systems by compiling with the best set of compiler options and the latest compilers. These are suggestions of things you should try, but before you release the final version of your program, you should understand exactly what you have asked the compiler to do. http://docs.sun.com/source/820-5242/index.html
Using UltraSPARC-IIICu Performance Counters to Improve Application Performance
By Darryl Gove, Compiler Performance Engineering Group, Sun Microsystems The UltraSPARC-IIICu implements a number of very useful hardware performance counters. These either count processor events (such as the number of times that a floating point operation completed), or they count the number of cycles for which something was true (such as the number of cycles that the processor was waiting for data from memory). This article introduces you to the performance counters, indicating which ones are are of most interest, and demonstrates how you might use the Sun ONE Studio Performance Tools to identify where in your application these events are happening. You can use this information to improve the performance of your application. http://developers.sun.com/solaris/articles/pcounters.html
Advanced Compiler Options for Performance
By Sun Studio Compiler Engineering Staff, Revised January 2007 Users wanting the best performance from CPU-intensive codes may wish to explore the use of additional libraries and advanced compiler options that control individual compiler components. http://developers.sun.com/solaris/articles/perfoptions.html
The Sun Studio Performance Tools
By Marty Itzkowitz, Project Lead, Sun Studio Performance Tools, Sun Microsystems Inc. , November 10, 2005 The Sun Studio performance tools are designed to help answer questions about application performance. In this article we first discuss the kinds of performance questions that users typically ask. We describe the model for using the tools, and for building the target executable. We then discuss the data collection process, and the data that can be collected. We go on to describe the Analyzer and its displays, and show a number of examples of what it can do. Finally, we discuss the testing strategy for the tools, and some planned extensions to their functionality. http://developers.sun.com/solaris/articles/perftools.html
Profiling WebSphere Application Servers with Sun Studio Performance Tools
By Dileep Kumar, Sun Microsystems Albert Leigh, Sun Microsystems, January 2007 This article describes how to profile an IBM WebSphere Application Server (WAS) runtime environment with the Sun Studio Performance Analysis Tools, Collector and Analyzer. http://developers.sun.com/solaris/articles/profiling_websphere.html
Cool Tools: Using SHADE to Trace Program Execution
By Darryl Gove, Compiler Performance Engineering, Sun Microsystems, September 29, 2006 The SHADE library is an emulator for SPARC hardware. An emulator is software which 'pretends' to be a processor; so that the application runs on the emulator, which then runs on the real hardware. Emulators are often used in situations where the original hardware is no longer available, or where the application needs to run on new hardware that has a different processor to the current hardware, or in cases where the target hardware is different to the development platform. http://developers.sun.com/solaris/articles/shade.html
Using Sun Studio 12 on UltraSPARC T1- and T2-based Systems
By Sun Studio Engineering Staff, Updated October 9, 2007 With the advent of the UltraSPARC T1, the dawn of multicore architectures reached the enterprise market. The latest T2 Sun Fire Servers with CoolThreads have up to 8 Technology cores and 64 threads. While these systems with their immense throughput performance can effectively run more separate applications simultaneously, they also can provide increased scalability opportunities to developers multi-threading their applications. Coupled with the latest Sun Studio software, developers can utilize multicore optimizing C, C++, and Fortran compilers, reduce software build times, and maximize application performance by building parallel applications. http://developers.sun.com/solaris/articles/studio_t1.html
Calculating Processor Utilisation From the UltraSPARC T1 and UltraSPARC T2 Performance Counters
By Darryl Gove, September 2007 Use the performance counters for the UltraSPARC T1 and UltraSPARC T2 processors to estimate core load and find potential areas for performance improvement. http://developers.sun.com/solaris/articles/t1t2_perf_counter.html
Tip: How Many Threads Does It Take?
Sometimes we can observe an OpenMP program using a different number of threads each time it is run. Why does that happen? http://developers.sun.com/solaris/articles/threads.html
Sun Studio: Using VIS Instructions To Speed Up Key Routines
By Darryl Gove, Geetha Vallabhaneni, Compiler Performance Engineering Team, Sun Microsystems, January 5, 2006 The VIS instruction set includes a number of instructions that can be used to handle several items of data at the same time. These are called SIMD (Single Instruction Multiple Data) instructions. The VIS instructions work on data held in floating point registers. http://developers.sun.com/solaris/articles/vis.html
Profiling WebLogic Servers with Sun Studio Performance Tools
By Marty Itzkowitz, Project Lead, Sun Studio Performance Tools, Sun Microsystems, August 25, 2006 This article describes how to profile servers being run under BEA's WebLogic® system using the Sun Studio Performance Tools. The instructions are based on WebLogic 8.1, and were developed with LiYu Yi, of Boldtech Systems, Dallas, TX. http://developers.sun.com/solaris/articles/weblogic.html
x86/x64
Sun Studio 10 Compilers and the AMD64 ABI
By The Sun Studio Team, Revised: November, 2005 The AMD64 ABI (Application Binary Interface) is evolved from the 32-bit x86 ABI. The ABI features binary compatibility between Solaris and Linux systems. Programs compiled for a 32-bit x86 platform do not need to be recompiled to run on the AMD64 platform, but performance may be enhanced as a result of recompiling. http://developers.sun.com/solaris/articles/about_amd64_abi.html
64-bit x86 Migration, Debugging, and Tuning, With the Sun Studio 10 Toolset
By The Sun Studio Team, January 2005 Read this article for a discussion on porting issues when migrating 32-bit applications to 64-bit x86 Solaris 10 platforms, and to learn about the dbx command-line debugger, and the Performance Analyzer. http://developers.sun.com/solaris/articles/amd64_migration.html
Getting The Best AMD64 Performance With Sun Studio Compilers
By Stanislav Mekhanoshin, Sun Microsystems, May 23, 2006 Sun Microsystems Inc. systems solutions based on the AMD Opteron processor have attracted worldwide attention due to their outstanding performance, low prices, and unique performance/Watt energy utilization. These AMD64-based systems have achieved 65 world records over the past 2 years (http://www.sun.com/x64/benchmarks/). The new Sun Fire X4100 and X4200 systems set world performance records just after being released. This outstanding achievement is a result of productive collaboration between AMD and Sun.Performance is a factor of both hardware and software. To extract the maximum performance from the new AMD-64 based systems on your critical C/C++ and Fortran applications, choose the best compilers in the industry - Sun Studio 11. Then by setting compiler options to take advantage of the Opteron system features, you'll maximize your performance benefit. This article will show you how. http://developers.sun.com/solaris/articles/amdopt.html
Sun Studio Support for the AMD64 Medium Memory Model
By Chris Quenelle, Sun Microsystems, December 6, 2005 (revised June 19, 2006) http://developers.sun.com/solaris/articles/mmodel.html
Assembly Language Techniques for the Solaris OS, x86 Platform Edition
By Paul Lovvik, June 2004 http://developers.sun.com/solaris/articles/x86_assembly_lang.html
Compiler Differences Between Solaris OS, SPARC Platform Edition and x86 Platform Edition
By Neelakanth Nadgir and Amjad Khan, July 2004 http://developers.sun.com/solaris/articles/x86_compiler_diffs.html
Parallel/Multithreaded Programming
Maximizing Application Performance on Chip Multithreading (CMT) Architectures
By Hugo Rivero, June 2006 http://developers.sun.com/solaris/articles/app_perf_cmt.html
Improving Application Efficiency Through Chip Multi-Threading
By Nagendra Nagarajayya, March 10, 2005, Updated October 2005 Abstract: This article introduces CMT technology, such as chip multi-processing and simultaneous multi-threading, from a software developer's perspective. http://developers.sun.com/solaris/articles/chip_multi_thread.html
Chip Multithreading and Multiprocessing
By Erik Fischer, Technical Ambassador, Sun Microsystems, Hungary, December 14, 2005 http://developers.sun.com/solaris/articles/cmtmp.html
An OpenMP Runtime API for Profiling
By Marty Itzkowitz, Oleg Mazurov, Nawal Copty, Yuan Lin, Sun Microsystems, February, 2007 This paper describes a runtime API for use in profiling OpenMP applications. The API is designed to provide data that enables performance tools to present measurements in the user-model of OpenMP programming. The authors give the motivation and design of the API, an example of its use, and a description as to how the data provided by the API can be used to represent performance of OpenMP programs. http://developers.sun.com/solaris/articles/omp-api.html
Introducing OpenMP: A Portable, Parallel Programming API for Shared Memory Multiprocessors
By Nawal Copty , Sun Microsystems, January, 2007 Sun Studio compilers (C/C++/Fortran 95) support OpenMP parallelization natively. OpenMP is an emerging standard model for parallel programming in a shared memory environment. It provides a set of pragmas, runtime routines, and environment variables for programmers to easily parallelize their code. This article provides a brief introduction to OpenMP and OpenMP support in Sun Studio compilers. This article is of particular interest to programmers who are new to OpenMP and parallel programming in Fortran, C, or C++. http://developers.sun.com/solaris/articles/omp-intro.html
Developing Applications For Parallel Computing
By Liang T. Chen, Distinguished Engineer and Software Architect, Platform Developer Tools, Sun Microsystems , December 15, 2005 This article discusses the important parallel application development issues now emerging from the parallel computing technology trend. It introduces and explains some of the most important industry standards such as OpenMP, MPI, and Grid Computing, and describes the current state of parallel application software development. This article highlights several significant design issues from two classes of real application case studies. It also discusses the important developer tools which are critical at the various stages during the software development cycle. In the end, it summarizes the right mindset for developers facing the challenge of developing parallel applications. http://developers.sun.com/solaris/articles/parallel.html
The Challenge of Race Conditions in Parallel Programming
By Liang T. Chen, Sun Microsystems, July 21, 2006 This article discusses general and data race condition issues that arise in parallel programming. Data race condition problems are common, while rarer, but harder, general race problems can also occur. Some data race conditions are not harmful and can be permitted in parallel software for performance reasons. Furthermore a race condition might be the symptom of a deeper design problem in the program code. A simple and actual parallel partitioning program is used to illustrate these various race condition issues and how to avoid them. http://developers.sun.com/solaris/articles/raceconditions.html
OpenMP Support in Sun Studio Compilers and Tools
By Nawal Copty, Scalable Systems Group, Sun Microsystems, December 13, 2005 a OpenMP is specification for a set of compiler directives, library routines, and environment variables that can be used to express multi-threaded shared-memory parallelism in C, C++, and Fortran programs. OpenMP fast becoming the is standard paradigm for parallelizing applications. With a relatively small amount of coding effort, programmers can obtain scalable performance for their applications on a shared-memory multi-processor system. http://developers.sun.com/solaris/articles/studio_openmp.html