Distributed Version of the NAS Conjugate Gradient Benchmark

CG_DISTRIBUTED is a MATLAB program which implements a version of the NAS Conjugate Gradient (CG) Benchmark, using distributed memory.

This is not the true benchmark, since the distributed sparse array that is created is made of random elements, rather than using the values and locations specified by the NAS CG benchmark. Thus, the example is primarily a demonstration that a MATLAB linear algebra program that uses arrays distributed across multiple processors can look almost identical to a single processor version.


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


CG_DISTRIBUTED is available in a MATLAB version.

Related Data and Programs:

CG, a MATLAB library which implements a simple version of the conjugate gradient (CG) method for solving a system of linear equations of the form A*x=b, suitable for situations in which the matrix A is positive definite (only real, positive eigenvalues) and symmetric.

CG_RC, a MATLAB library which implements the conjugate gradient (CG) method for solving a positive definite sparse linear system A*x=b, using reverse communication.

FMINCON_PARALLEL, a MATLAB program which demonstrates the use of MATLAB's FMINCON constrained minimization function, taking advantage of MATLAB's Parallel Computing Toolbox for faster execution.

LINEAR_SOLVE_DISTRIBUTED, a MATLAB program which solves a linear system A*x=b using MATLAB's spmd facility, so that the matrix A is "distributed" across multiple MATLAB workers.

LYRICS_REMOTE, a MATLAB program which runs in parallel, using three workers which cooperate "systolically", that is, as through they were on an assembly line. The output from worker 1 is passed to worker 2 for further processing, and so on. This includes instructions on how to run the job, via MATLAB's BATCH facility, on a remote system such as Virginia Tech's ITHACA cluster.

MATLAB_DISTCOMP, a MATLAB program which remotely runs a set of 5 jobs on the Ithaca cluster. These jobs are equivalent to the BIRTHDAY_REMOTE, COLOR_REMOTE, KNAPSACK_REMOTE, LYRICS_REMOTE and MD_REMOTE jobs.

MATLAB_PARALLEL, MATLAB programs which illustrate "local" parallel programming on a single computer with MATLAB's Parallel Computing Toolbox.

MATLAB_REMOTE, MATLAB programs which illustrate the use of remote job execution, in which a desktop copy of MATLAB sends programs and data to a remote machine for execution. Included is information needed to properly configure the local machine.

MD_PARFOR, a MATLAB program which carries out a molecular dynamics simulation, running in parallel using MATLAB's "PARFOR" feature.


The web site for the NAS Parallel Benchmarks is

The User's Guide for the Parallel Computing Toolbox is available at

  1. David Bailey, Eric Barszcz, John Barton, D Browning, Robert Carter, Leonardo Dagum, Rod Fatoohi, Samuel Fineberg, Paul Frederickson, Thomas Lasinski, Robert Schreiber, Horst Simon, V Venkatakrishnan, Sisira Weeratunga,
    The NAS Parallel Benchmarks,
    RNR Technical Report RNR-94-007, March 1994.
  2. Gaurav Sharma, Jos Martin,
    MATLAB: A Language for Parallel Computing,
    International Journal of Parallel Programming,
    Volume 37, Number 1, pages 3-36, February 2009.

Source Code:

You can go up one level to the MATLAB source codes.

Last revised on 01 April 2010.