End-user products => VAST/DPC

VAST/DPC
VAST-DPC from Crescent Bay Software is a Data Parallel C compiler that allows programmers to write enhanced C codes that execute efficiently on a variety of parallel and distributed systems. VAST-DPC can also compile C* programs.

Online Tutorial

If you are unfamiliar with Data Parallel C, you may wish to take our online tutorial, Introduction to Data Parallel C.

What does Data Parallel mean?

In the data parallel programming model, you specify the distribution of your data at a very high level, and the program is then written as if the data were globally addressable by all processors and there is a single logical execution thread. This is much easier for the programmer than attempting to directly deal with data that may be on many different processors and with many different execution threads. The compiler creates and manages all of the parallel tasks and data transfer between them, based on the user's original distribution of the data.


What is Data Parallel C?

Data Parallel C is a newly proposed extension to ANSI C that allows programmers to write efficient code for parallel systems. It brings the data parallel programming model to C. Data Parallel C is based originally on the C* language which has been used on massively parallel processors for several years, and features the ability to declare and use "shapes", which can be manipulated much more efficiently on parallel systems than normal C arrays. For distributed memory systems, sections of each parallel variable can be placed in different memories on different processors by the compiler, so that those processors can operate in parallel on a different piece of the total calculation.

A properly constructed DPC program will run efficiently on many kinds of parallel systems, with few (if any) coding changes. As the parallelism in the program is at a very high level, it is much easier to understand and maintain than other programming models for distributed parallel systems, such as direct calls to a message passing library. Data parallel constructs can be added to existing C programs to create a highly parallel C program. Data Parallel C includes the following language features:

  • Shapes: A shape describes the size of each dimension of a parallel variable. Parallel variables that have the same shape can be combined in parallel calculations. Shapes may be allocated dynamically, and can have a layout that describes their distribution in memory.
  • Parallel variable assignments: Parallel variables may be used in assignments that manipulate many elements at once. Slices of parallel variables may be combined in a single statement.
  • Where statements: Where statements allow conditional computation of parallel operations. Only the selected elements will be changed. Where statements define the context for the computation.
  • Reduction operators: New operators that can return a value of an entire parallel variable, such as the summation of the elements of the parallel variable.
  • Elemental and Nodal functions: User functions with restricted side-effects can be applied in parallel to parallel variables.

Example

Here's a small example of DPC.

Solving real applications using Data Parallel C

You can read a white paper on an application written in Data Parallel C Extensions (DPCE) to see how DPCE was used to solve a particular problem.

Data Parallel C Extensions Applied to Image Processing

Abstract: Issues in porting an existing C image processing application innto Data Parallel C are discussed. This paper shows several examples of Data Parallel C code. Performance of the application on two distributed parallel systems is presented.

PDF white paper.

A Data Parallel C Benchmark for Car-Parrinello Molecular Dynamics

Abstract: The Car-Parrinello (CP) ab initio molecular dynamics (MD) technique has become an increasingly important tool to study condensed phase systems at the atomic level over the past decade. In order to apply it to ever larger and more complex systems, researchers have turned to parallel computing platforms to meet the heavy computational and memory demands of this method. In this article we provide an overview of CPMD and then focus on the design and performance of a benchmark in Data Parallel C that includes an appropriate mix of its most time-consuming operations. In particular, we compare its execution performance to a C version of the code that uses explicit message passing as well as the effort required to write and to maintain both programs.

PDF white paper.


Why VAST-DPC?

With the VAST-DPC system, you can get your Data Parallel C programs executing efficiently on distributed memory parallel systems such as networks of workstations.

VAST-DPC builds on PSR's Data Parallel Optimizer which is also used in PSR's VAST- HPF compiler for High Performance Fortran, and delivers excellent performance by optimizing both communications between nodes and performance of code on a single node. Features include:

  • Efficient partitioning of the computation to match the user's data partitioning.
  • Partitioning along multiple dimensions.
  • Fusion of groups of multiple-dimension parallel variable assignments into efficient partitioned nested loops.
  • Optimization of array "wings" to minimize data motion on block boundaries.
  • Optimization of reduction operations, such as summation of array elements.
  • Optimized generation of data motion calls to avoid redundant sends and receives.
  • Combination of messages from/to the same pair of processors.
  • Optimization of generated node programs for superscalar processors, to increase speed at the single processor level.

How is VAST-DPC used?

VAST-DPC can be used almost identically to your current C compiler -- just substitute the VAST-DPC driver ("vdpc") for your current compiler name. All the compiler options you currently use are still valid, because VAST-DPC translates the input DPC source to ANSI C with message passing calls and then passes it to your normal C compiler and linker along with the command line switches. VAST-DPC's compile rate is excellent.

The VAST-DPC driver automatically links the code with the supplied VAST-DPC support library and the appropriate message passing library so that your program is ready for parallel execution. Just execute the program as you normally would and parallel processes are created and executed automatically.


The DEEP parallel programming environment

VAST-DPC works very closely with the DEEP development environment to provide a complete GUI interface to the world of data parallel programming. VAST-DPC gathers compile-time data for DEEP, and inserts instrumentation code for run-time data gathering. DEEP uses this information to display in detail the compile-time optimization notes (which loops have been partitioned to run efficiently across the parallel processors, etc.) and run-time performance data (which procedure is passing the most messages, size of the average message, etc.) in many useful views of the program. With DEEP, you can very quickly hone in on any performance bottlenecks in your code.

The debugging portion of DEEP is exteremly useful to debug data parallel code as a single program, with the ability to visualize entire distributed arrays.


VAST-DPC availability

Please ask about VAST-DPC availability on any platforms, including:

  • DEC/Alpha
  • SUN/Sparc
  • IBM RS/6000, IBM SP1, IBM SP2
  • HP 9000/700 series
  • Hitachi
  • SGI
  • Linux
  • Windows NT

VAST-DPC system needs

VAST-DPC requires approximately 4 MB of disk space and 4 MB of memory, and a target system with a C compiler and a message passing library, currently supported library interfaces are PVM, P4, and MPI; please ask if you have different requirements. While the generated code can be executed on a single processor, a multiple processor system is needed to see speed increases. Included with all VAST-DPC packages is:

  • VAST-DPC: Data Parallel C Compiler
  • VAST-DPC run-time library
  • VAST-DPC User's Guide
  • Data Parallel C Language Guide
  • Updates and support for 6 months.
  • All shipping and handling costs.
  • 30-day money back guarantee.

Additional information

Pricing information for VAST-DPC is available.

Home Contact Legal

Copyright 2003, 2005 Crescent Bay Software Corp.