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. The challenges of parallel computing are not new
to Sun.
With Sun Studio software, the developer has a complete set of tools and an
integrated environment for high performance parallel computing.
TUTORIAL: An Introduction to Parallel Computing
Ruud van der Pas discusses tuning for performance and the challenges brought on
by today's new chip architectures in this seven-part series.
Click on the image to go to the tutorial pages.
The seven modules cover:
Performance Tuning
Multicore Processor Architectures
Parallel Architectures
Parallel Programming Basics
Parallel Programming Models: Distrubuted Memory and MPI
Parallel Programming Models: Shared Memory, Auto Parallel and OpenMP
Hybrid Programming Models, and What's Next.
What About Throughput Computing and Multi-Core Environments?
Throughput Computing Changing the Economics and Ecology of the Data Center with Innovative SPARC Technology - Sun Whitepaper (PDF).
AMD: Multi-Core
Architecture Whitepaper from AMD on the evolution, implications, and advantages of multi-core processors (PDF).
OpenMP - Shared Memory Programming Model
OpenMP.org
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.
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.
MVAPICH: MPI Over InfiniBand Project
This web page focuses on research and development of high performance and scalable designs for MPI-1 and MPI-2 on InfiniBand as well as other RDMA-enabled interconnects.
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.
Sun Resources For High Performance Parallel Computing
Sun
HPC ClusterTools Sun HPC ClusterTools software is an integrated toolkit that allows developers to create and tune MPI applications that run on clusters and SMPs.
Sun Studio: 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.
Sun HPC Community Wiki
A community wiki designed for information sharing and collaboration on High Performance Computing topics.
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.