QUAD2_OPENMP is a C program which approximates a multidimensional integral using a quadrature rule. The quadrature computation is done with OpenMP.
The quadrature rule is defined by three text files:
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
On an Apple PowerPC G5 with two processors, the following results were observed:
Threads | Quadrature rule | Time |
---|---|---|
1 | cc_d10_level4 | 0.0033 seconds |
2 | cc_d10_level4 | 0.0016 seconds |
4 | cc_d10_level4 | 0.0017 seconds |
1 | cc_d10_level5 | 0.0144 seconds |
2 | cc_d10_level5 | 0.0072 seconds |
4 | cc_d10_level5 | 0.0074 seconds |
export OMP_NUM_THREADS=2
./quad2_openmp file_root
where file_root is the "root" name for a set of three files that
define a quadrature rule.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
QUAD2_OPENMP is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version.
CLENSHAW_CURTIS is a C++ library which can set up a Clenshaw Curtis quadrature grid in multiple dimensions.
DIJKSTRA_OPENMP a C program which uses OpenMP to parallelize a simple example of Dijkstra's minimum distance algorithm for graphs.
FFT_OPENMP is a C program which demonstrates the computation of a Fast Fourier Transform in parallel, using OpenMP.
HEATED_PLATE_OPENMP is a C program which solves the steady (time independent) heat equation in a 2D rectangular region, using OpenMP to run in parallel.
HELLO_OPENMP, a C program which prints out "Hello, world!" using the OpenMP parallel programming environment.
INTEGRAL_TEST is a FORTRAN90 program which uses test integrals to evaluate sets of quadrature points.
LEGENDRE_RULE_FAST, is a C program which uses a fast (order N) algorithm to compute a Gauss-Legendre quadrature rule of given order.
MD_OPENMP is a C program which carries out a molecular dynamics simulation using OpenMP.
MPI is a library of routines for doing parallel programming in a distributed memory environment, using message passing.
MULTITASK_OPENMP, a C program which demonstrates how to "multitask", that is, to execute several unrelated and distinct tasks simultaneously, using OpenMP for parallel execution.
MXM_OPENMP, a C program which computes a dense matrix product C=A*B, using OpenMP for parallel execution.
OPENMP is a library of routines, and a set of compiler directives, which enable parallel programming in a shared memory environment.
OPENMP_RCC, C programs which illustrate how a C program, using OpenMP, can be compiled and run in batch mode on the FSU High Performance Computing (HPC) cluster operated by the Research Computing Center (RCC).
PRIME_OPENMP is a C program which counts the number of primes between 1 and N, using OpenMP for parallel execution.
PRODUCT_RULE is a C++ program which can create a multidimensional quadrature rule as a product of one dimensional rules.
QUAD_MPI is a C program which approximates an integral using a quadrature rule, and carries out the computation in parallel using MPI.
QUADRATURE_RULES is a dataset directory which contains many examples of files that define quadrature rules.
QUADRATURE_TEST is a C++ program which reads files defining a quadrature rule, and applies them to all the test integrals defined by TEST_NINT.
QUADRULE is a C library which defines quadrature rules for 1D domains.
SANDIA_RULES, a C library which produces 1D quadrature rules of Chebyshev, Clenshaw Curtis, Fejer 2, Gegenbauer, generalized Hermite, generalized Laguerre, Hermite, Jacobi, Laguerre, Legendre and Patterson types.
SATISFY_OPENMP is a C program which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfy problem, using OpenMP for parallel execution.
SCHEDULE_OPENMP is a C program which demonstrates the default, static, and dynamic methods of "scheduling" loop iterations in OpenMP to avoid work imbalance.
SGEFA_OPENMP is a C program which reimplements the SGEFA/SGESL linear algebra routines from LINPACK for use with OpenMP.
STROUD is a C++ library which contains quadrature rules for a variety of unusual areas, surfaces and volumes in 2D, 3D and N-dimensions.
TEST_NINT is a C++ library which defines a set of integrand functions to be used for testing multidimensional quadrature rules and routines.
TESTPACK is a C++ library which defines a set of integrands used to test multidimensional quadrature.
ZIGGURAT_OPENMP, a C program which demonstrates how the ZIGGURAT library can be used to generate random numbers in an OpenMP parallel program.
CC_D10_LEVEL4 is a Clenshaw-Curtis sparse grid rule for a 10 dimensional hypercube, at the 4th level of fineness.
CC_D10_LEVEL5 is a Clenshaw-Curtis sparse grid rule for a 10 dimensional hypercube, at the 5th level of fineness.
You can go up one level to the C source codes.