Testing the Installation

There is a small regression test suite with a setup script contained in
<path_to_OpenAD>/xaifBooster/testRoundTrip/
We compare the numerical output against a reference file. The recent test results are found in the table at the bottom. Depending on the machine the tests run on, the compiler you use and the chosen transformation (tangent-linear, joint or split adjoint) the numbers may vary slightly. To execute all tests first
    cd <path_to_OpenAD>
and set up the OpenAD environment for
modify the Makefile to use the Fortran90 compiler of your choice (default is ifort) and the invoke the script
    ./testAll.bash
For the first example it asks a few questions determining the transformation mode as in the following example.  For regression testing you may choose
We marked the user inputs, the transformation and compile/link steps. The environment setup defines the absolute paths; your output may look slightly different. 
xaifBooster/testRoundTrip> ./testAll.bash
use reverse mode y/[n]n
using plain drivers
rm -f head.B head.prh* driver driver.o
rm -f -rf tmpOutput
rm -f head.f driver.f params.conf
rm -f -rf tmpOutput verifiedOutput
** running mini1 *************************************************
ln -sf <path_to_OpenaAD>/Open64/osprey1.0/targ_ia32_ia64_linux/crayf90/sgi/mfef90 .
./mfef90 -F -N132 head.f
ln -sf <path_to_OpenAD>/OpenADFortTk/obj/i686-Linux/obj/whirl2xaif .
./whirl2xaif -o head.xaif head.B
ln -sf <path_to_OpenAD>/xaif/schema/xaif.xsd .
ln -sf <path_to_OpenAD>/xaif/schema/xaif_base.xsd .
ln -sf <path_to_OpenAD>/xaif/schema/xaif_inlinable_intrinsics.xsd .
ln -sf <path_to_OpenAD>/xaif/schema/xaif_derivative_propagator.xsd .
ln -sf <path_to_OpenAD>/xaif/schema/xaif_output.xsd .
./pickAlgorithm.bash
pick one of the following algorithms
1 : BasicBlockPreaccumulation
2 : BasicBlockPreaccumulationReverse
3 : BasicBlockPreaccumulationTape
4 : BasicBlockPreaccumulationTapeAdjoint
5 : ControlFlowReversal
6 : Linearization
7 : MemOpsTradeoffPreaccumulation
pick a number: 1
./xaifBooster -i head.xaif -c <path_to_OpenAD>/xaif-1.0/schema/examples/inlinable_intrinsics.xaif -o head.xb.xaif
ln -sf <path_to_OpenAD>/OpenADFortTk/obj/i686-Linux/obj/xaif2whirl .
./xaif2whirl --structured head.B head.xb.xaif
ln -sf <path_to_OpenAD>/Open64/osprey1.0/targ_ia32_ia64_linux/whirl2f/whirl2f .
ln -sf <path_to_OpenAD>/Open64/osprey1.0/targ_ia32_ia64_linux/whirl2f/whirl2f_be .
./whirl2f -openad head.xb.x2w.B
./whirl2f translates head.xb.x2w.B into head.xb.x2w.w2f.f, based on source head.xb.x2w.f
ln -sf <path_to_OpenAD>/OpenADFortTk/postprocess/pp.pl .
perl pp.pl -f head.xb.x2w.w2f.f
f95 -c w2f__types.f
Obsolescent: w2f__types.f, line 1: Fixed source form
f95 -free -c active_module.f
f95 -free -c driver.f
f95 -c head.xb.x2w.w2f.pp.f
Obsolescent: head.xb.x2w.w2f.pp.f, line 6: Fixed source form
f95 w2f__types.o active_module.o driver.o head.xb.x2w.w2f.pp.o -o driver
ln -s simple.params.conf params.conf
mkdir -p tmpOutput
./driver
no diffs
xaifBooster/testRoundTrip

test results:
name
issues (small numerical differences are always expected)
tangent-linear
(using BasicBlockPreaccumulation)
adjoint (reverse, using BasicBlockPreaccumulationReverse)
joint
split
argumentArrayIndex


argumentArrayIndex2


argumentArrayIndex3


argumentArrayIndex4


argumentConversion_1


argumentConversion_2


argumentConversion_3


argumentConversion_4


argumentConversion_4a This is an example for f77 style pseudo pointer arithmetic where we interpret ax(1,1) and apx(1,1) as the beginning of a vector of length 2 rather than a scalar. This doesn't work with the f90 style conversion routines. This is an example for f77 style pseudo pointer arithmetic where we interpret ax(1,1) and apx(1,1) as the beginning of a vector of length 2 rather than a scalar. This doesn't work with the f90 style conversion routines. This is an example for f77 style pseudo pointer arithmetic where we interpret ax(1,1) and apx(1,1) as the beginning of a vector of length 2 rather than a scalar. This doesn't work with the f90 style conversion routines.
argumentConversion_4b The interface for foo in the definition of head does not pick up on the activity of the formal parameters bug report The interface for foo in the definition of head does not pick up on the activity of the formal parameters bug report The interface for foo in the definition of head does not pick up on the activity of the formal parameters bug report
argumentConversion_4c


argumentConversion_5


bat


boxmodel


box_timestep


bratu


cast1


ConsFold


ConsFoldSimp0


constant0


constant1


constPrec


daerfj


dfdcfj


dfdcfj_MemOps


directDependency1


directDependency2


directDependency3


duud1


duud2


duudChains1


duudChains2


externalCalls1


externalCalls2


externalCalls3


float_intrinsic


gcmBit1


globalActive_1


globalActive_2


globalActive_3


globalActive_4


globalActive_5


globalActive_6 R1: the analysis doesn't recognize the module variables as active, bug report R1: the analysis doesn't recognize the module variables as active, bug report R1: the analysis doesn't recognize the module variables as active, bug report
globalActive_7


globalActive_8


If_Loop_1


If_Loop_2


If_Loop_3


If_Loop_4


If_Loop_5


IfStatement_1


IfStatement_2


lion


Loop_1


Loop_2


Loop_3


Loop_simple_1


Loop_simple_10


Loop_simple_10a


Loop_simple_11


Loop_simple_12
the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_13


Loop_simple_14


Loop_simple_15


Loop_simple_1a


Loop_simple_1b


Loop_simple_1c


Loop_simple_1d


Loop_simple_1e


Loop_simple_1f


Loop_simple_2


Loop_simple_2a


Loop_simple_3


Loop_simple_4


Loop_simple_4a
We try to restore j but cannot see that head as top level routine is called with constant for the actual parameter. This is expected behavior. We try to restore j but cannot see that head as top level routine is called with constant for the actual parameter. This is expected behavior.
Loop_simple_4b
the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_4c


Loop_simple_5


Loop_simple_6


Loop_simple_7


Loop_simple_7a


Loop_simple_8


Loop_simple_9


Loop_simple_9a
the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
Loop_simple_9b
the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report the simple loop assumptions are violated, a more generic solution involves the recomputation by inversion etc.; bug report
mini1


nested_calls_1


nested_calls_2


nested_calls_3


nested_calls_4


nested_dfdcfj


nestedFunc0
postprocessor fails on contained subroutines bug report postprocessor fails on contained subroutines bug report
nestedFunc1
postprocessor fails on contained subroutines bug report postprocessor fails on contained subroutines bug report
NestedIf


NestedIfLoop


NestedLoopIf


NestedLoops


passiveStatement


passiveSubroutine


readWrite1 format failure for read of active variable, bug report format failure for read of active variable, bug report format failure for read of active variable, bug report
readWrite2 format failure for read of active variable, bug report format failure for read of active variable, bug report format failure for read of active variable, bug report
RoehFlux


RoehFlux_MemOps


Select_1


Select_2
control flow unparsing problem; bug report control flow unparsing problem; bug report
Select_3


SeqOfIfs


SeqOfLoops


sideEffect_1


sideEffect_2


sideEffect_3


sideEffect_4


signIntrinsic


simple0


simple1


simple2


simple3


speelpenning


tanh_f_arg


todd


todd1


u_def_struct_1 fix up structure access bug report fix up structure access bug report fix up structure access bug report
u_def_struct_2 fix up structure access bug report fix up structure access bug report fix up structure access bug report