                   The GA Test Programs

These programs can be built after the GA library is compiled.
To build C and Fortran programs type:

"make test.x"      to create a test program for GA
"make patch.x"     to create a test program for GA patch operations
"make testsolve.x" to create a test program for linear equation solver
                   based on LU factorization
"make testeig.x"   to create a test program for GA eigensolver,
                   matrix multiply, and symmetrization
"make ndim.x"      to create a Fortran test program for n-dim GA
"make perf.x"      to create a program testing performance of GA
                   primitives: get, put & accumulate,
"make testc.x"     to create a C test program for GA
"make ntestc.x"    to create a C test program for n-dim GA
"make ga-mpi.x"    to create a C test program for GA that demonstrates
                   the interface to MPI
"make mtest.x"     To create a test program for matrix functions
"make testmult.x"  To create a test program for GEMM functions (Eg:dgemm).
"make elempatch.x" To create a test program for the  element-wise 
		   functions 


                   M4-based N-dim test program

The following are special steps required to configure and build source file 
for testing of n-dim global arrays based on the M4 source files. 
The full functionality test might take several hours to complete. Therefore
you might want to limit the test to a subset of functionality supported.
The configuration steps are:

Edit the file ngatest.m4 (this step is optional if you want to test all):

  1. specify data type:
	To test Integer, set "m4_test_int" to "yes", otherwise, "no"
	To test Double Precision, set "m4_test_dbl" to "yes", otherwise, "no"
	To test Double Complex, set "m4_test_dcpl" to "yes", otherwise, "no"

  2. specify range of dimensions to test (upt 7 supported in GA Fortran API):
	Example: to test from 2 to 4 dimensions,
		set "m4_dim_from" to 2 and "m4_dim_to" to 4

  3. specify functions to test:
	Functions that can be tested include:
	    ga_fill		Set "m4_test_GA_FILL" to "yes" to test
	    nga_get		Set "m4_test_NGA_GET" to "yes" to test
	    nga_put		Set "m4_test_NGA_PUT" to "yes" to test
	    nga_acc		Set "m4_test_NGA_ACC" to "yes" to test
	    nga_scatter		Set "m4_test_NGA_SCATTER" to "yes" to test
	    nga_gather		Set "m4_test_NGA_GATHER" to "yes" to test

	    nga_fill_patch	Set "m4_test_NGA_FILL_PATCH" to "yes" to test
	    nga_copy_patch	Set "m4_test_NGA_COPY_PATCH" to "yes" to test
	    nga_scale_patch	Set "m4_test_NGA_SCALE_PATCH" to "yes" to test
	    nga_add_patch	Set "m4_test_NGA_ADD_PATCH" to "yes" to test
	    nga_idot_patch	Set "m4_test_NGA_DOT_PATCH" to "yes" to test
	    nga_ddot_patch	Set "m4_test_NGA_DOT_PATCH" to "yes" to test
	    nga_zdot_patch	Set "m4_test_NGA_DOT_PATCH" to "yes" to test

	Setting any variable to "no" will bypass testing the corresponding
 	function

To compile, type "make ngatest.x"

To run the test with MPI, 
    For example, type "mpirun -np 4 test.x"

--------
Source files: 

    ngatest.m4
    ngatest_src/ndim.src
    ngatest_src/ndim_main.src

    ngatest_src/ndim_GA_FILL.src
    ngatest_src/ndim_NGA_GET.src
    ngatest_src/ndim_NGA_PUT.src
    ngatest_src/ndim_NGA_ACC.src
    ngatest_src/ndim_NGA_SCATTER.src
    ngatest_src/ndim_NGA_GATHER.src

    ngatest_src/ndim_NGA_FILL_PATCH.src
    ngatest_src/ndim_NGA_COPY_PATCH.src
    ngatest_src/ndim_NGA_SCALE_PATCH.src
    ngatest_src/ndim_NGA_ADD_PATCH.src 
    ngatest_src/ndim_NGA_DOT_PATCH.src
