QUAD_MPI
Quadrature using MPI
QUAD_MPI is a FORTRAN90 program
which approximates a multidimensional integral using a quadrature rule. The
computation is done in parallel by using MPI.
The quadrature rule is defined by three text files:
-
the "X" file lists the abscissas (N rows, M columns);
-
the "W" file lists the weights (N rows);
-
the "R" file lists the integration region corners
(2 rows, M columns);
The program assumes that the names of the three files can be deduced from
the file_root. For instance, if the file_root was "cc_d2_level5", this
implies that
-
the "X" file is cc_d2_level5_x.txt;
-
the "W" file is cc_d2_level5_w.txt;
-
the "R" file is cc_d2_level5_r.txt;
Usage:
quad_mpi file_root
where file_root is the "root" name for a set of three files that
define a quadrature rule.
Related Data and Programs:
CLENSHAW_CURTIS
is a FORTRAN90 library which can set up a
Clenshaw Curtis quadrature grid in multiple dimensions.
HEAT_MPI
is a FORTRAN90 program which
solves the 1D Time Dependent Heat Equation using MPI.
INTEGRAL_TEST
is a FORTRAN90 program which uses test integrals to evaluate
sets of quadrature points.
MPI
is a library of routines for doing parallel programming in a distributed memory
environment, using message passing.
OPEN_MP
is a library of routines, and a set of compiler directives, which
enable parallel programming in a shared memory environment.
PESSL
is a parallel mathematical library for use on IBM SP systems.
PETSC
is a scientific library for parallel computations.
PRODUCT_RULE
is a FORTRAN90 program which
constructs a product quadrature rule from identical 1D factor rules.
QUAD_MPI is also available in
a C version and
a C++ version and
a FORTRAN77 version.
QUAD_OPEN_MP
is a FORTRAN90 program which
approximates an integral using a quadrature rule, and carries out the
computation in parallel using OpenMP.
QUADRATURE_RULES
is a dataset directory which
contains many examples of files that define quadrature rules.
QUADRATURE_TEST
is a FORTRAN90 program which
reads files defining a quadrature rule, and
applies them to all the test integrals defined by TEST_NINT.
RANDOM_MPI,
a FORTRAN90 program which
demonstrates one way to generate the same sequence of random numbers
for both sequential execution and parallel execution under MPI.
SATISFIABILITY_MPI
is a FORTRAN90 program which
demonstrates, for a particular circuit, an exhaustive search
for solutions of the circuit satisfiability problem, using MPI to
carry out the calculation in parallel.
STROUD
is a FORTRAN90 library containing quadrature
rules for a variety of unusual areas, surfaces and volumes in 2D,
3D and N-dimensions.
TEST_NINT
is a FORTRAN90 library of routines which
defines a set of integrand functions to be used for testing
multidimensional quadrature rules and routines.
TESTPACK
is a FORTRAN90 library of functions which
define a set of integrands used to test multidimensional quadrature.
Reference:
-
William Gropp, Steven Huss-Lederman, Andrew Lumsdaine, Ewing Lusk,
Bill Nitzberg,
William Saphir, Marc Snir,
MPI: The Complete Reference,
Volume II: The MPI-2 Extensions,
Second Edition,
MIT Press, 1998.
-
William Gropp, Ewing Lusk, Anthony Skjellum,
Using MPI: Portable Parallel Programming with the
Message-Passing Interface,
Second Edition,
MIT Press, 1999,
ISBN: 0262571323.
-
William Gropp, Ewing Lusk, Rajiv Thakur,
Using MPI-2: Advanced Features of the Message-Passing
Interface,
Second Edition,
MIT Press, 1999,
ISBN: 0262571331.
-
Stan Openshaw, Ian Turton,
High Performance Computing and the Art of Parallel Programming:
an Introduction for Geographers, Social Scientists, and
Engineers,
Routledge, 2000,
ISBN: 0415156920.
-
Peter Pacheco,
Parallel Programming with MPI,
Morgan Kaufman, 1996,
ISBN: 1558603395,
LC: QA76.642.P3.
-
Sudarshan Raghunathan,
Making a Supercomputer Do What You Want: High Level Tools for
Parallel Programming,
Computing in Science and Engineering,
Volume 8, Number 5, September/October 2006, pages 70-80.
-
Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker,
Jack Dongarra,
MPI: The Complete Reference,
Volume I: The MPI Core,
Second Edition,
MIT Press, 1998,
ISBN: 0-262-69216-3,
LC: QA76.642.M65.
-
Scott Vetter, Yukiya Aoyama, Jun Nakano,
RS/600 SP: Practical MPI Programming,
IBM Redbooks, 1999,
ISBN: 0738413658.
-
The MPI web site at Argonne National Lab:
http://www-unix.mcs.anl.gov/mpi/
-
The Message Passing Interface Forum,
MPI: A Message Passing Interface Standard,
1995,
Available online from
the MPI Forum.
-
The Message Passing Interface Forum,
MPI-2: Extensions to the Message Passing Interface,
1997,
Available online from
the MPI Forum.
Source Code:
Examples and Tests:
CC_D2_LEVEL5 is a quadrature rule for dimension 2, of the fifth level
of fineness. Our test involves having the program read this rule, and apply
it to estimate the integral of a test function.
List of Routines:
-
MAIN is the main program for QUAD_MPI.
-
CH_CAP capitalizes a single character.
-
CH_EQI is a case insensitive comparison of two characters for equality.
-
CH_TO_DIGIT returns the integer value of a base 10 digit.
-
DTABLE_DATA_READ reads data from a DTABLE file.
-
DTABLE_HEADER_READ reads the header from a DTABLE file.
-
FILE_COLUMN_COUNT counts the number of columns in the first line of a file.
-
FILE_ROW_COUNT counts the number of row records in a file.
-
GET_UNIT returns a free FORTRAN unit number.
-
I4_DIV_ROUNDED computes the rounded result of I4 division.
-
I4_HUGE returns a "huge" I4.
-
I4_SIGN evaluates the sign of an I4.
-
S_TO_I4 reads an I4 from a string.
-
S_TO_R8 reads an R8 from a string.
-
S_TO_R8VEC reads an R8VEC from a string.
-
S_WORD_COUNT counts the number of "words" in a string.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
P28_EXACT returns the exact integral for problem 28.
-
P28_F evaluates the integrand for problem 28.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 15 November 2007.