speed_xpackage

View page source

Speed Test Example and Template for a New Package

Purpose

CppAD has a set of speed tests that are used to compare AD packages. This section can be used as a starting point for linking a new package to he CppAD speed tests.

Files

Use the following command, in the Distribution Directory , to see which files link the example package xpackage to the speed tests:

git grep -l xpackage

Template

Suppose your_package is the name of a package you want to add to the speed tests. If you are using a Unix system, executing the following commands in the distribution directory will use xpackage as a template for your package:

      cp -r speed/xpackage speed/ your_package
      for file in ` ls speed/ your_package `
      do
            sed -i speed/ your_package / $file \
                  -es/xpackage/ your_package /’ \
                  -es/Xpackage/ Your_package /’ \
                  -es/CPPAD_XPACKAGE_SPEED/ YOUR_PACKGE /’
      done
      git checkout speed/CMakeLists.txt
      sed -i speed/CMakeLists.txt \
            -es/^. * ( xpackage )/ ADD_SUBDIRECTORY ( your_package )\ n&/
      git checkout speed/main.cpp
      line1 =’# ifdef CPPAD_ YOUR_PACKAGE _ SPEED
      line2 =’# define AD_PACKAGEyour_package “’
      line3 =’# endif
      sed -i speed/main.cpp \
            -e “/ CPPAD_XPACKAGE_SPEED/s/^/$line1\n$line2\n$line3\n/

where your_package has been replaced by the name of the new package Your_package is a capitalized version of the name, and YOUR_PACKAGE is an all caps version of the name.

Running Tests

Starting in the distribution directory, the following commands will build the new package version of the tests:

      bin/run_cmake.sh --no_optional
      cd build/speed/ your_package
      make check_speed_ your_package VERBOSE =1

This should result in the following output:

      …
      your_package _ det_lu_available = false
      your_package _ det_minor_available = false
      your_package _ mat_mul_available = false
      your_package _ ode_available = false
      your_package _ poly_available = false
      your_package _ sparse_hessian_available = false
      your_package _ sparse_jacobian_available = false
      All 0 correctness tests passed.
      No memory leak detected
      speed main: OK
      [100%] Built target check_speed_ your_package

You can not edit one or more of the * . cpp files in the your_package directory so that the corresponding speed test is available and then run the corresponding test using the speed_main instructions. See speed_cppad for examples of how to do this for each of the speed tests.

Contents