AD< AD<double> >argument, whereby the corresponding
AD<double>operation sequence depended on the value of the argument to the
AD<Base>list of available functions. In addition, add the sign function to the list of base type requirements .
cppad/cppad.hpp. This has been fixed.
ADVector, were in the global namespace and this was causing warnings about the shadowing of these declarations. The cppad_ipopt namespace was created to avoid these problems. The simplest way to make old cppad_ipopt_nlp code work with this change is to use the command
using namespace cppad_ipopt;
team_startto team_create and
team_stopto team_destroy .
NDEBUGmentions to include link to NDEBUG .
multi_thread.cppto thread_test.cpp and fix its running instructions.
boost_dirfor team_bthread.cpp with out using boost vectors.
sum_i_inv.cppto harmonic.cpp .
test_timeto the nearest integer. This has been fixed.
test_time(it used to always run at least two).
sum_i_inv_time.cppand multi_newton.cpp routines were calling the test an extra time at the end to check for correctness. The results of the last test are now cached and used for the correctness test so that an extra call is not necessary (to make the tests run faster when only a few repetitions are necessary).
doubleinstead of a
size_t. The use it for the timing tests in
sum_i_inv_time.cppand multi_newton_time .
test_timeas a command line argument to the multi-threading
sum_i_invand multi_newton timing tests.
thread_team.hppto team_thread.hpp and do the same for all other names that ended in
_team; e.g., team_openmp.cpp .
sum_i_inv.cppresults were failing when
mega_sumwas large. This check has been modified to include a correction for
example/multi_thread/openmp. and create
multi_thread/pthreadwith similar tests.
multi_threaddirectory and threading system specific code in
bug/optimize.shfile (no longer a bug).
arc_tan.cpputility that can be used by multiple multi-threading tests.
would run the tests for the current directory.make test
sum_i_inv.cppand multi_newton.cpp so they run using Boost threads and pthreads (as well as OpenMP threads).
pthreadlibrary does not include the
pthread_barrier_waitfunction; i.e., is not compliant with the IEEE Std 1003.1, 2004 Edition for
pthread. This caused the
pthread_simple_ad.cppto fail to compile on the MAC. This has been fixed by not compiling the
pthread_simple_ad.cpp, including avoiding a Bug in Cygwin .
openmp/run.cppwas not setting the number of threads for the one thread case (so dynamic thread adjustment was used). This has been fixed.
example/example.vcprojfile and a attempt was made to link to missing OpenMP routines (this has been fixed). In addition, some Microsoft compiler warning have been fixed; see the examples and tests in the Windows install instructions.
CPPAD_MAX_NUM_THREADwas being set to 2 when
_OPENMPwas not defined. This has been fixed and CPPAD_MAX_NUM_THREADS has been documented and is now part of the CppAD API.
pthread_simple_ad.cpptest failed under cygwin. This was because the previous test
openmp_ad.cppwas set up calls to OpenMP routines that were still in effect when
pthread/simple_adran. This has been fixed by making
num_threads == 1a special case in parallel_setup .
These changes are described below under the headings 08-21 through 08-31 .https://projects.coin-or.org/svn/CppAD/branches/pthread
--with-openmpto OPENMP_FLAGS=openmp_flags configure command line argument.
openmp/run.cppprogram and move the
openmp/run.cpp. This uses configure information for building the tests.
--with-openmpconfigure command line argument.
pthread_simple_ad.cppexample that does AD using the pthread library. In addition, fix some problems in
openmp/example_a11c.cppto example/a11c_openmp.cpp .
omp_, and change all thread_alloc section names to begin with
openmp_simple_ad.cpp. These OpenMP examples were originally in the
openmpdirectory, and have been moved, and modified to conform, to the normal example directory.
These changes are described below under the headings 08-04 through 08-10 .https://projects.coin-or.org/svn/CppAD/branches/base_require
See zero order forward mode and PrintFor .
f.Forward(0, x, s)
epsilonto AD types.
abs_geqto the requirements for a user defined
optimizeand hence the zero order forward mode results may not be exactly the same.)
AD<Base>arguments and a non-standard
nanprint because it results in false for all comparisons.
which only prints when
PrintFor(text, y, z)
z <= 0. This is useful for error reporting during forward mode; i.e., reporting when the argument to the
logfunction is not valid.
get_max_num_threadswere created. User's will need to replace calls to max_num_threads by calls to
test_moresubdirectory project files.
tanhatomic operations; see tan_forward and tan_reverse .
tanhCppAD atomic operations.
k, were not passed into the
old_atomicforward callback function.
Tan and Tanh.
openmpdirectory (and convert it from a function to a program).
example_a11c.cppby making it just a correctness test.
openmp/run.shso that it runs correctness tests with the compiler debugging flags.
AD<Base>operations omp_in_parallel execution mode. This has been fixed.
example_a11c.cppexample so that is just a correctness (not speed) test.
nan, Rosen34 , and Runge45 .
openmp/run.shmaximum number of threads instead of specifying the entire set of values to be tested.
n_girdis a multiple of the maximum number of threads.
openmpdirectory (was commented out).
openmp/run.shwas moved to the
sum_i_inv_time.cppassumed was being done.
AD<Base>in parallel execution mode.
Error detected by false result for
at line n in the file
openmp/run.shroutine was changed to use zero, instead of
automatic, for automatic choice of
openmp/run.shnumber of repeats and maximum number of threads.
openmp/run.sh) was changed to be valid matlab / octave assignment statements.
sizeof(CppAD_TAPE_ADDR_TYPE)where it used to use
cppad/config.hfrom CppAD distribution, (put the information in
cppad/configure.hpp.) This removes the need to undefine symbols that were defined by
cppad/config.hand that did not begin with
omp_alloctracing so it prints the same pointer as returned to the user (not an offset version of that pointer).
cppad/omp_alloc.hpp, suppress the following Microsoft Visual Studio warning
warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized
omp_allochas been throughout the CppAD source code, including the examples that used
TrackNewDel; namely, mul_level_adolc.cpp , mul_level_adolc_ode.cpp .
omp_allocmemory manager. This should improves its speed of memory allocation omp_in_parallel sections of a program.
make testwere not being detected. This has been fixed.
NDEBUGis not defined, the hasnan function is used to make sure that the results of any Forward operation does not contain a nan (not a number). If so, an error message is generated and the program terminates. This error message and termination can be caught; see ErrorHandler .
NDEBUGis not defined and the default error handler has not been replaced).
speed_cppadbefore the new speed test organization was created on 2006-12-11 (revision 715 of the repository). The old speed tests have not been used for years and so have been deleted.
openmp/run.shscript what changed to take an argument that specifies which tests is run (it no longer runs all the tests). Also improve the openmp test program output formatting.
use_adoption was added to the
bin/.svnwas mistakenly part of the compressed tar file . It has been removed.
rev_hes_sparsemust have size greater than or equal to
n. There was a check that its size was greater than or equal
q. This was incorrect and has been fixed.
NDEBUGwas not defined, the thread corresponding to parameters was one, but the only valid thread number was zero (only one thread) and an CPPAD stopped with an assertion error. This has been fixed.
openmp/run.shwhere it attempted to remove a non-existent file in the case where
openmp/run.shopenmp_flag was not
"". This has been fixed.
old_atomic.hppwas declare of type
Basewhen it should have been declared of type
size_t. It caused the old_atomic feature to fail with some base types. This has been fixed.
The old_mat_mul.hpp example has been improved by caching the @(@ x @)@ variable information and using it during reverse Hessian sparsity calculations.
Some of the old_atomic documentation was extended to include more explanation.
The documentation for RevSparseHes had a dimension error. This has been fixed.
A faster set operations item was added to the wish list. This has since been satisfied by
cppad_sparse_listchoice during the install process (since removed).
cppad.pcis stored has been moved from
prefixdir/share/pkgconfig/cppad.pc; see firstname.lastname@example.org .
omh/appendix/whats_new_11.omhhas been required to build the documentation (and it has been missing from the distribution).
-Wshadowflag with the
g++compiler. The Fadbad speed tests have a special flag with this warning removed from the cxx_flags .
make testin the releases
makefile.infiles did not define
cppad_ipopt_nlp.hppwas always installed, even if ipopt_dir was not defined on the
libspeed.awas being installed (it is only intended for testing).
will not have this problem.