Auto Tools Unix Test and Installation
Keywords: auto tools unix test installation speed profile prefix std vector boost eigen sparse internal sets ctor implicit explicit compile flags Openmp postfix Adolc Fadbad Ipopt Sacado memory usage tape deprecated 2012-12-26 distribution directory work configure make examples tests profiling cppad prefix_dir --with-documentation --with-testvector --with-sparse_option --with-deprecated max_num_threads cxx_flags openmp_flags postfix_dir adolc_dir linux cygwin boost_dir eigen_dir fadbad_dir ipopt_dir sacado_dir tape_addr_type tape_id_type install

| Prev | Next |  |  |  |  | auto_tools |

Auto Tools Unix Test and Installation
Deprecated 2012-12-26
These install instructions have been deprecated and no improvements have been added since 2012. For example, this install procedure will not detect any of the `c++11` extensions. You should use the cmake instructions to install CppAD.
Distribution Directory
You must first obtain a copy of the CppAD distribution directory using the download instructions. The install instructions below correspond to the current version which has distribution directory `cppad-20121230`.
Work Directory
Create the directory `cppad-20121230/build`, which will be referred to as the build directory below.
Configure
Execute the following command in the build directory: `
./configure \
--prefix=prefix_dir \
--with-Documentation \
--with-testvector \
--with-sparse_option \
--with-deprecated \
MAX_NUM_THREADS=max_num_threads \
CXX_FLAGS=cxx_flags \
OPENMP_FLAGS=openmp_flags \
POSTFIX_DIR=postfix_dir \
ADOLC_DIR=adolc_dir \
BOOST_DIR=boost_dir \
EIGEN_DIR=eigen_dir \
FADBAD_DIR=fadbad_dir \
SADADO_DIR=sacado_dir \
IPOPT_DIR=ipopt_dir \
TAPE_ADDR_TYPE=tape_addr_type \
TAPE_ID_TYPE=tape_id_type
` where only the `configure` line need appear; i.e., the entries in all of the other lines are optional. The text in italic is replaced values that you choose; see discussion below.
make
CppAD has some object libraries that are used for its correctness tests. (Currently, none of these libraries get installed.) You can build these libraries by executing the command `
make
` in the build directory.
Examples and Tests
Once you have executed the `make` command, you can run the correctness and speed tests. `
` The following command will build all the correctness and speed tests. In addition, it will run all the correctness tests: `

         make test

` `
` The following links describe how to build and run subsets of these tests:

get_started | Getting Started Using CppAD to Compute Derivatives
exp_apx_main | Correctness Tests For Exponential Approximation in Introduction
example | CppAD Examples and Tests
print_for_cout | Printing During Forward Mode: Example and Test
speed_example | Run the Speed Examples
speed_double | Speed Test of Functions in Double
speed_adolc | Speed Test of Derivatives Using Adolc
speed_cppad | Speed Test Derivatives Using CppAD
speed_fadbad | Speed Test Derivatives Using Fadbad
speed_sacado | Speed Test Derivatives Using Sacado

In addition, you can run a large subset of correctness tests (that are not intended to be examples) by executing the following commands starting in the build directory: `
cd test_more
make test
`
Profiling CppAD
The CppAD derivative speed tests mentioned above can be profiled. You can test that the results computed during this profiling are correct by executing the following commands starting in the build directory: `
cd speed/profile
make test
` After executing `make test`, you can run a profile speed test by executing the command `./profile`; see speed_main for the meaning of the command line options to this program. `
` After you have run a profiling speed test, you can then obtain the profiling results with `
gprof -b profile
` If you are using a windows operating system with Cygwin or MinGW, you may have to replace `profile` by `profile.exe` in the `gprof` command above; i.e., `

         gprof -b profile.exe

` In C++, template parameters and argument types become part of a routines's name. This can make the `gprof` output hard to read (the routine names can be very long). You can remove the template parameters and argument types from the routine names by executing the following command `

         gprof -b profile | sed -f gprof.sed

` If you are using a windows operating system with Cygwin or MinGW, you would need to use `

         gprof -b profile.exe | sed -f gprof.sed

`
prefix_dir
The default value for prefix directory is `$HOME` i.e., by default the CppAD include files will install below `$HOME`. If you want to install elsewhere, you will have to use this option. As an example of using the `--prefix=prefix_dir` option, if you specify `

         ./configure --prefix=/usr/local

` the CppAD include files will be installed in the directory `
/usr/local/include/cppad
` If --with-Documentation is specified, the CppAD documentation files will be installed in the directory `
/usr/local/share/doc/cppad-20121230
`
--with-Documentation
If the command line argument `--with-Documentation` is specified, the CppAD documentation HTML and XML files are copied to the directory `
prefix_dir/share/doc/postfix_dir/cppad-20121230
` (see postfix_dir ). The top of the CppAD HTML documentation tree (with mathematics displayed as LaTex command) will be located at `
prefix_dir/share/doc/postfix_dir/cppad-20121230/cppad.htm
` and the top of the XML documentation tree (with mathematics displayed as MathML) will be located at `
prefix_dir/share/doc/postfix_dir/cppad-20121230/cppad.xml
`
--with-testvector
The CPPAD_TESTVECTOR template class is used for many of the CppAD examples and tests. The default for this template class is `CppAD::vector<Scalar>` . If one, and only one, of the following command line arguments is specified: `

         --with-stdvector
         --with-boostvector
         --with-eigenvector

` the corresponding of the following template classes is used `
std::vector<Scalar>
boost::numeric::ublas::vector<Scalar>
Eigen::matrix<Scalar, Eigen::Dynamic, 1>
` See also, boost_dir and eigen_dir .
--with-sparse_option
There are two options for the preprocessor symbol `CPPAD_INTERNAL_SPARSE_SET`. If `--with-sparse_set` (`--with-sparse_list`) is specified, this symbol is `sparse_set` (`sparse_list`). This should affect the speed and memory required by the sparse_jacobian , sparse_hessian , and the sparse drivers .
--with-deprecated
If this configure argument is present, then all the deprecated features are included in the install. Otherwise, they are not included.
max_num_threads
this specifies the value for the default value for the preprocessor symbol CPPAD_MAX_NUM_THREADS . It must be greater than or equal to four; i.e., `max_num_threads >= 4` .
cxx_flags
If the command line argument `CompilerFlags` is present, it specifies compiler flags. For example, `
CXX_FLAGS="-Wall -ansi"
` would specify that warning flags `-Wall` and `-ansi` should be included in all the C++ compile commands. The error and warning flags chosen must be valid options for the C++ compiler. The default value for `CompilerFlags` is the empty string.
openmp_flags
If the command line argument `OpenmpFlags` is present, it specifies the necessary flags so that the compiler will properly interpret OpenMP directives. For example, when using the GNU `g++` compiler, the following setting includes the OpenMP tests: `
OPENMP_FLAGS=-fopenmp
` If you specify configure command, the CppAD OpenMP correctness and speed tests will be built; see threading multi-threading tests.
postfix_dir
By default, the postfix directory is empty; i.e., there is no postfix directory. As an example of using the `POSTFIX_DIR=postfix_dir` option, if you specify `

         ./configure --prefix=/usr/local POSTFIX_DIR=coin

` the CppAD include files will be installed in the directory `
/usr/local/include/coin/cppad
` If --with-Documentation is specified, the CppAD documentation files will be installed in the directory `
/usr/local/share/doc/coin/cppad-20121230
`
adolc_dir
If you have ADOL-C installed on your system, you can specify a value for `adolc_dir` in the configure command line. The value of `adolc_dir` must be such that `
adolc_dir/include/adolc/adouble.h
` is a valid way to reference `adouble.h`. In this case, you can run the Adolc speed correctness tests by executing the following commands starting in the build directory: `
cd speed/adolc
make test
` After executing `make test`, you can run an Adolc speed tests by executing the command `./adolc`; see speed_main for the meaning of the command line options to this program. Note that these speed tests assume Adolc has been configure with its sparse matrix computations enabled using `
--with-colpack=colpack_dir
`
Linux
If you are using Linux, you will have to add `adolc_dir/lib` to `LD_LIBRARY_PATH`. For example, if you use the `bash` shell to run your programs, you could include `
LD_LIBRARY_PATH=adolc_dir/lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
` in your `$HOME/.bash_profile` file.
Cygwin
If you are using Cygwin, you will have to add to following lines to the file `.bash_profile` in your home directory: `
PATH=adolc_dir/bin:${PATH}
export PATH
` in order for Adolc to run properly. If `adolc_dir` begins with a disk specification, you must use the Cygwin format for the disk specification. For example, if `d:/adolc_base` is the proper directory, `/cygdrive/d/adolc_base` should be used for `adolc_dir` .
boost_dir
If the command line argument `
BOOST_DIR=boost_dir
` is present, it must be such that files `
boost_dir/include/boost/numeric/ublas/vector.hpp
boost_dir/include/boost/thread.hpp
` are present. In this case, these files will be used by CppAD. See also, --with-boostvector
eigen_dir
If you have Eigen installed on your system, you can specify a value for `eigen_dir` . It must be such that `
eigen_dir/include/Eigen/Core
` is a valid include file. In this case CppAD will compile and test the Eigen examples; e.g., eigen_array.cpp . See also, --with-eigenvector
fadbad_dir
If you have Fadbad 2.1 installed on your system, you can specify a value for `fadbad_dir` . It must be such that `
fadbad_dir/include/FADBAD++/badiff.h
` is a valid reference to `badiff.h`. In this case, you can run the Fadbad speed correctness tests by executing the following commands starting in the build directory: `
cd speed/fadbad
make test
` After executing `make test`, you can run a Fadbad speed tests by executing the command `./fadbad`; see speed_main for the meaning of the command line options to this program.
ipopt_dir
If you have Ipopt installed on your system, you can specify a value for `ipopt_dir` . It must be such that `
ipopt_dir/include/coin/IpIpoptApplication.hpp
` is a valid reference to `IpIpoptApplication.hpp`. In this case, the CppAD interface to Ipopt examples can be built and tested by executing the following commands starting in the build directory: `
make
#
cd cppad_ipopt/example
make test
#
cd ../test
make test
#
cd ../speed
make test
` Once this has been done, you can execute the program `./speed` in the `build/cppad_ipopt/speed` directory; see ipopt_ode_speed.cpp .
sacado_dir
If you have Sacado installed on your system, you can specify a value for `sacado_dir` . It must be such that `
sacado_dir/include/Sacado.hpp
` is a valid reference to `Sacado.hpp`. In this case, you can run the Sacado speed correctness tests by executing the following commands starting in the build directory: `
cd speed/sacado
make test
` After executing `make test`, you can run a Sacado speed tests by executing the command `./sacado`; see speed_main for the meaning of the command line options to this program.
tape_addr_type
If the command line argument `tape_addr_type` is present, it specifies the type used for address in the AD recordings (tapes). The valid values for this argument are `unsigned short int`, `unsigned int`, `size_t`. The smaller the value of `sizeof(tape_addr_type)` , the less memory is used. On the other hand, the value `
std::numeric_limits<tape_addr_type>::max()
` must be larger than any of the following: size_op , size_op_arg , size_par , size_par , size_par .
tape_id_type
If the command line argument `tape_id_type` is present, it specifies the type used for identifying tapes. The valid values for this argument are `unsigned short int`, `unsigned int`, `size_t`. The smaller the value of `sizeof(tape_id_type)` , the less memory is used. On the other hand, the value `
std::numeric_limits<tape_id_type>::max()
` must be larger than the maximum number of tapes per thread times max_num_threads .
make install
Once you are satisfied that the tests are giving correct results, you can install CppAD into easy to use directories by executing the command `

         make install

` This will install CppAD in the location specified by prefix_dir . You must have permission to write in the `prefix_dir` directory to execute this command. You may optionally specify a destination directory for the install; i.e., `
make install DESTDIR=DestinationDirectory
`

Input File: omh/install/auto_tools.omh