Prev | Next | whats_new_12 |
branches/ipopt_solve
to trunk
,
delete that branch, and
advance version number to cppad-20121230
.
cppad/configure.hpp
from repository because
it is built by the configuration process
(even for MS Visual Studio, now that we are using cmake
).
AD<Base>
input stream operator >>
.
branches/ipopt_solve
:
branches/ipopt_solve
:
ipopt::solve
options
argument (and not a file) for all the Ipopt options.
As well as allowing for adding ipopt::solve
special options; e.g.,
retape
.
branches/ipopt_solve
:
Change documentation section names that begin with cppad_ipopt
to begin with ipopt_nlp
to distinguish them from CppAD::ipopt::solve
.
branches/ipopt_solve
:
ipopt_solve
and its speed
and memory use needs to be improved.
trunk
to branches/ipopt_solve
.
cppad/CMakeLists.txt
and cppad/configure.hpp.in
in the cppad
include directory.
This has been fixed so that only
*.h
and
*.hpp
files
get installed in the cppad
include directory.
cppad-20121220
.
<stdbool.h>
and <sys/time.h>
do not exist for all C compilers,
and this caused a problem when using the Windows compiler.
This has been fixed by defining the type bool inside the
compare_c/det_by_minor.c
source code.
hash_code.hpp
.
This mistake could generate a C++ assertion with an unknown error source.
It has been fixed.
20121120
to 20121215
.
Note that the CppAD version number no longer automatically advances with the
date and is rather chosen to advance to the current date.
cppad.pc
pkgconfig
file in
cppad_prefix/cmake_install_datadir/cppad.pc
This has been fixed and is now
cppad_prefix/cmake_install_datadir/pkgconfig/cppad.pc
make check
to make check_example
).
cppad.pc
.
cppad.pc
pkgconfig
file
so that it includes the necessary libraries and include files
when include_ipopt
is specified; see
pkgconfig
.
cppad_sparse_list
(not part of user API).
AD< std::complex<double> >
types because it is better to use
std::complex< AD<double> >
.
int
(not important).
cppad_ipopt_nlp
is now deprecated).
Add new cppad_ipopt_sum
item to the wish list.
(This has been removed because checkpointing
can now be used for this purpose.)
atomic_one
wish_list
item (since removed).
subversion
download instructions to use
the export
instead of checkout
command.
This avoids downloading the source code control files.
cmake
variables
cmake_install_includedir
and
cmake_install_libdir
were changed to
cmake_install_includedirs
and
cmake_install_libdirs
to signify the fact that they can now be a list of directories.
cppad-20121120
.
NDEBUG
defined.
cppad-20121114
.
NDEBUG
is defined.
This enabled all the tests in the
example
directory to be compiled
with NDEBUG
is defined and to pass.
NDEBUG
is defined,
removed detection of nan
during forward mode from
test_more/forward.cpp%
.
This enables all the tests in the
test_more
directory to be compiled
with NDEBUG
is defined and to pass.
bin/run_cmake.sh
to see how to use cmake
with CppAD.
base_alloc
CondExpOp
function.
This has been fixed and the comments for this example have been improved.
speed/src/*.cpp
files with the profiling flag.
This has been changes
(only for the profiling speed test).
FADBAD++
was changed to include/FADBAD++
.
This makes it more like the other optional packages.
fabs(x)
where
x
is a double (without the std
in front).
taylor_ode.cpp
to mul_level_ode.cpp
and
taylor_ode_adolc.cpp
to mul_level_adolc_ode.cpp
.
time_test
routine.
hold_memory
speed to option to just
memory
.
In addition, in the speed test output, include all of the options
that are present in the output variable name;
see speed results
.
/bin/sh
shell executing
example/multi_thread/test.sh
; see 03-17
user_simple.cpp
,
a simpler atomic_one
example.
--with-sparse_option
(since removed).
CppAD::vector
.
CppAD::vector
resize
specifications
were changed so that
x.resize(0)
no longer frees
the corresponding memory (use
x.clear()
instead).
valgrind
symptom during the
optimize.cpp
example:
==6344== Conditional jump or move depends on uninitialised value(s)
w[2] = 0
was missing before the call
dw = F.Reverse(1, w);
vectorBool.cpp
to vector_bool.cpp
for the example example/utility/vector_bool.cpp
.
CPPAD_TAPE_ID_TYPE
argument to the
configure
command line.
CPPAD_TEST_VECTOR
and use
CPPAD_TESTVECTOR
in its place.
This fixes a problem introduced by changes on 07-03 whereby code that
used CPPAD_TEST_VECTOR
would no longer work.
size_t
value to
the requirement that it can be converted to a size_t
value.
configure
command line.
Error detected by false result for
y_taddr > 0
at line 262 in the file cppad/local/dependent.hpp
eigen_plugin.hpp
so that
an Eigen vector can be used as a
SimpleVector
.
This has since been removed; see
2017-05-11
.
ok != a == 0.
to ok &= a == 0.
in
the example ad_ctor.cpp
.
min
and max
in
CppAD::numeric_limits<Type>
.
numeric_limits
epsilon
.
lowest
and highest
functions for
all non-complex AD types.
<cppad/example/base_adolc.hpp>
under the
prefix_dir
directory.
memory
; see
10-03
.
USE_BOOL_SPARSITY
from true to false.
In addition, change the number of non-zeros per row from about approximately
three to approximately ten.
fabs
function instead of the <
operation.
This enabled the a more precise statement about its
operation sequence
.
fabs
function as added to the CppAD standard math library
(see abs
)
and the base type requirements
.
This enables one to write code that works with AD<double>
as
well as double
without having to define abs
for
double
arguments
(and similarly for float
).
CppAD::vector
class was extended to allow assignment
with the target of size zero and the source of non-zero size;
see check size
.
cppad_mat_mul.cpp
were fixed
(the bug was related to the change to CppAD::vector
above).
CppADvector
from the
det_by_lu
speed test source code det_by_lu.hpp
.
retape
speed test option is true.
retape == false
option
in cppad_ode.cpp
.
package_test.cpp
for
package
equal to
adolc
, fadbad
, and sacado
and
for
test
equal to
det_lu
, det_minor
, poly
.
row
,
col
interface to sparse_hessian
.
In addition, implement the speed test
retape
speed test option for these tests.
cppad_print_optimize
routine to so that the corresponding
code does not need to be reproduced for all the
speed_cppad
tests.
In addition, during CppAD speed tests,
print out the optimization results for each test size.
retape
speed test option
during sparse Hessian speed tests.
i
and
j
to
row
and
col
.
branches/sparse
:
n
and
m
.
boost_dir/boost
was the boost include directory,
now
boost_dir/include
is the boost include directory.
This make it the same as the other directory arguments on the configure
command line.
In addition, it fixes some bugs in the detection of the boost
multi-threading library.
-lteuchos
flag to the link line for the
speed_sacado
tests.
(This was not necessary for trilinos-10.8.3
but is necessary for trilinos-10.10.1
)
work
directory.
If you then edited the file work/multi_thread/makefile
and changed
# AM_CXXFLAGS = -g $(CXX_FLAGS)
AM_CXXFLAGS = -DNDEBUG -O2 $(CXX_FLAGS)
to
AM_CXXFLAGS = -g $(CXX_FLAGS)
# AM_CXXFLAGS = -DNDEBUG -O2 $(CXX_FLAGS)
and then executed the commands
make clean
make pthread_test
valgrind --tool=helgrind ./pthread_test simple_ad
The following error message would result:
... snip ...
==7041== Possible data race during write of size 4 at 0x8077460 by thread #1
==7041== at 0x804FE23: CppAD::AD<double>::tape_new() (tape_link.hpp:221)
... snip ...
ADFun
sequence constructor
.
taylor_capacity
, with to with capacity equal to zero,
was not
freeing memory
.
This has been fixed.
parallel_ad
call.
These statics are required to use
CppAD::vector
.
thread_alloc
that did not allow ta_return_memory
to return memory in sequential execution mode that was allocated by a
different thread during parallel execution.
/bin/sh
to dash
(which caused example/multi_thread/test.sh
to fail).
This has been fixed.
In general, Debian's policy is that bin/sh
will be a
Posix Shell
.
valgrind --leak-check=full --show-reachable=yes
to generate an error message.
If multiple threads
are used,
one should free this
extra memory
for threads other than thread zero.
If hold_memory
is used,
one should call free_available
for all threads.
simple_ad.cpp
to team_example.cpp
team_example.cpp
example was changed to use
@(@
f(x) = \sqrt{ x^2 }
@)@ instead of the function
@(@
{\rm atan2} [ \sin(x) , \cos (x) ]
@)@
(both functions should behave like the identity function @(@
f(x) = x
@)@).
This enabled the removal of example/multi_thread/arc_tan.cpp
.
work_all_[thread_num].ok
is true for all
thread_num
.
memory_leak
when num_threads
is greater than one
(still can't be in parallel mode).
set_static
to memory_leak
.
This is necessary for testing base types that allocate memory
for each element.
cppad/local/pod_vector.hpp
when each element of the Base
type allocated memory.
num_threads
was one in the previous call to
parallel_setup
.
Holding onto memory is now controlled by the separate routine
hold_memory
.
This give the user more control over the memory allocator
and the ability to obtain a speed up even
when there is only one thread.
To convert old code to the new interface, after each call to
thread_alloc::parallel_setup(num_threads, in_parallel, thread_num);
put the following call
thread_alloc::hold_memory(num_threads > 1);
Base
types was missing.)
test.sh
is trivial,
put its operations in corresponding makefile.
cppad/speed/sparse_evaluate.hpp
under gcc on Fedora 17.
example/multi_thread/test.sh
from source directory
(no need to copy to build directory).
example/multi_thread/test.sh
failed if the
openmp_flags
not present in the
configure
command.
This has been fixed.
In addition, this test.sh
has been made faster by cycling through
the available threading systems instead of doing every system for every
test.
make test
so it works when
configure
is run in the distribution directory
cppad-yyyymmdd
(not just when it is run in a different directory).
-lpthread
library was missing from the
multi_thread
test program linker command.
This has been fixed.
if( fabs( fcur ) <= epsilon_ )
was removed from the routine multi_newton_worker
.
sub_length_ / 2
was change to sub_length_
.
./openmp_test multi_newton 1 32 1000 4800 10 true
improved from 0.0302 seconds to 0.0135 seconds.