This contains the first draft of the VSIPL Test Suite:
Profile:  Test Suite Lite
Module:   Block, View, Element-Wise, Signal Processing
Mode:     Performance
Version:  0.1f
Comments, Bug reports, Etc: dan.campbell@gtri.gatech.edu
 

Quick-Start:
If Everything goes smoothly, and you have a very typical system,
all you need to do is:

 1)  unpack (you've already done this)
 2)  set up the macros in the top-level makefile (see below)
 3)  make
 4)  cd EXEC
 5)  vsiptest

vsiptest will execute each of the individual tests and give you an
overall pass/fail.  If you wish to run only a particular module,
please try:
 
 vsiptest_block
 vsiptest_view
 vsiptest_elwise
 vsiptest_sigproc

Each module lives in a subdirectory under EXEC.  All error output
will be in vsiptest.out under the module's subdirectory, unless changed
as per below.
 

Configuration:
There are two configuration issues to set up.

1) Macro Definitions
In the Makefile in this directory, set any compiler options here as in CC and
OPTIONS.  Also, you must configure the following options:
LIB_VSIP:     the name of the VSIP library you wish to use
LIB_VSIP_LOC: the path to the above named VSIP library
VSIP_INC:     the path where the vsip.h header file is
CC:           C compiler you wish to use
CFLAGS:       Any additional flags to the compiler
HEADERS:      Any additional headers you wish to include in the compile
LD:           The linker you wish to use
LFLAGS:       Any additional flags to the linker
EXTRALIBS:    Any additional libraries required by your platform
DEFINES:      Any additional #defines for the compile
 

2) Reporting Channel Definition
If you would like or need results reporting in any other than the
standard format, you will need to modify vsiptest_io.c in the util/ directory.
The standard format reports errors to the screen as well as to the file
error.log.  If your system does not have standard console or file I/O you
will need to modify the routine

     vtprintf (char *fmt, ...);

to work as you require.
 

Once configured, return to the top level directory and type make.  The
executables will be placed under the EXEC directory in subdirectories by
function type.  Since only the vsip_*block* have tests written for them, all
executables are in EXEC/block.

To run a test, execute vsiptest_function where "function" replaces everything
after "vsip_" for the corresponding VSIPL function.  For example, to test
vsip_blockcreate_f, run "vsiptest_blockcreate_f".

The return code from each program will be a bit-field representation of the
tests which did not complete succesfully.  The bits will correspond to the
numbers displayed for failing test.  For example a display of the following:

     Error in vsip_blockadmit_f(); (5)
     Admitted block bound to NULL data.

would indicate that test #5 for vsip_blockadmit_f failed, and bit 5 of the
return code would be set.

-- [ version 1.0f] --
This version includes the signal processing function testing, and various
bug fixes from previous versions.  The sigproc/data directory contains the
default data sets, and the sigproc/vsiptest_sigproc.h contains the
parameters for each test.  The same macros are set for sigproc as were
for elwise.

Fixed error where put and get were operating on non-admitted blocks.
Removed test for offset and stride matching original blocks on
 derived blocks.
Fixed many cases where vectors were not being properly destroyed in
 elwise module

-- [ version 1.0e] --
This is the first version with the element wise function testing.  The
elwise/data directory contains the default data sets, and the
elwise/vsiptest_elwise_test_defs.h contains the parameters for each test.
The following macros are of note for each test:

VSIPTEST_EPSILON_MAX
This is the maximum allowable difference in actual from expected results in order
to pass a test

VSIPTEST_ELWISE_DO_EPSILON_TEST
If this is defined, the function's outputs are compared to expected outputs, and
must be within the specified band to pass

VSIPTEST_ELWISE_DO_SIGN_TEST
If this is defined, the function's outputs' sign is compared to the sign of the
expected output value, and must match to pass

Some of the tests do not have the options - in these cases, the test is always
on.

This release also addresses several issues raised by forum members regarding
earlier releases:

Makefile incompatibility:  The old releases used a makefile construction that
is not standard, and was thus not supported on all platforms.  This has been
corrected.

Redefinition of vsip_vcopy_f_i:  The previous release had an incorrectly
prototyped internal implementation of vsip_vcopy_f_i.  This has been corrected.

Sub-makefile inclusion of -lm:  Some vendors do not wish to have -lm
automatically included in the makes, and asked that this option be moved to the
top level makefile for easier configuration.  This has been done.
 

-- [ version 1.0d] --
This is the view module alpha release.  This version has been verified against
Randy Judd's implementation in performance and development mode .  Testing
with development mode showed some errors that we believe are normal operation.

-- [ version 1.0c] --
In addition, this version contains an overriding malloc function in order to
test on demand memory allocation failures.  This is a third party, freeware
utility, which compiles on most platforms.  If you are having trouble with this
working correctly, or compiling, simply remove the malloc line from the top
level makefile, and remove or comment out the LIBALLOC entries in the
subdirectory makefiles.  Some of the tests will not be run without our
malloc, but most will work just fine.