Oracle Solaris Studio Topics: Multicore Programming

 Two critical forces are shaping the direction of software development. One is the deep adoption of parallel computing. The other is the move toward Service Oriented Architecture. The current technologies of chip multiprocessor (CMP) and chip multithreading (CMT) processor design, horizontal-scaled systems, near zero latency interconnects, and new web service standards all accelerate both forces into reality and adoption everywhere. It is quite easy to predict that most desktop machines or even laptops will be powered by multi-core or CMT processors over next few years. But how prepared are the software developers and tool vendors for the challenge of working in parallel computing environments?

The scientific and engineering communities adopted parallel computing to solve their large scale complex problems a long time ago. But parallel programming development has always been quite challenging, even for advanced black-belt developers. This also raises more difficult issues of productivity, scalability and reliability. With Oracle Solaris Studio software, the developer has a complete set of tools and an integrated environment for high performance parallel computing.

BOOK: Multicore Application Programming - By Darryl Gove

Multicore Application Programming is a comprehensive, practical guide to high-performance multicore programming that any experienced developer can use.  Author Darryl Gove, principal software engineer at Oracle, covers the leading approaches to parallelization on Windows, Linux, and Oracle Solaris. Through practical examples, he illuminates the challenges involved in writing applications that fully utilize multicore processors, helping you produce applications that are functionally correct, offer superior performance, and scale well to eight cores, sixteen cores, and beyond.

ARTICLE: Developing Parallel Programs — A Discussion of Popular Models

This article explores the outlook for parallel software development and focuses in particular on application development for shared memory multicore systems. Two real-world application case studies are introduced to highlight some challenging parallel program design issues. Important tools critical to parallel software design phases also are discussed along with the pros and cons of each tool.

Find more articles on Parallel Programming.

What About Throughput Computing and Multi-Core Environments? 

OpenMP - Shared Memory Programming Model

Taking Advantage of OpenMP 3.0 Tasking with Oracle Solaris Studio
Oracle Solaris Studio software provides compilers that fully support the OpenMP 3.0 specification, including tasking. This technical paper shows how to use Oracle Solaris Studio 12.2 to implement, profile, and debug an example quick sort (qsort) OpenMP program.  (November 2010)

  • Website
    The OpenMP Application Program Interface (API) supports multi-platform shared-memory parallel programming in C/C++ and Fortran on all architectures, including Unix platforms and Windows NT platforms. Jointly defined by a group of major computer hardware and software vendors, OpenMP is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from the desktop to the supercomputer.
  • OpenMP API Specifications
    The official OpenMP API specifications can be downloaded from this site in PDF or HTML.
  • Article: Sun Studio Support for OpenMP
    This paper presents an overview of the OpenMP model of computation, and describes OpenMP support in the Sun Studio compilers and tools.
  • Oracle Solaris Studio 12.2: OpenMP API User's Guide
    The current Solaris Studio compiler documentation for OpenMP.


MPI - Distributed Memory Programming Model

  • The Message Passing Interface (MPI) Standard
    The MPI home pages from Argonne National Labs.
  • MPICH Home Page
    MPICH provides an MPI implementation for important platforms, including clusters, SMPs, and massively parallel processors.
  • LAM/MPI Parallel Computing
    LAM/MPI is a high-quality open-source implementation of the Message Passing Interface specification, including all of MPI-1.2 and much of MPI-2.    
  • Open Source MPI Project
    Open MPI is a project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in order to build the best MPI library available. A completely new MPI-2 compliant implementation, Open MPI offers advantages for system and software vendors, application developers and computer science researchers.


Solaris Resources For High Performance Parallel Computing

Community, Education and Support

  • The OpenMP Community
    cOMPunity is the community of OpenMP researchers and developers in academia and industry. It is a forum for the dissemination and exchange of information about OpenMP. cOMPunity is also a forum for discussing our experiences with this programming API and for debating ideas that might improve it.