source: trunk/omh/whats_new/whats_new_12.omh @ 3537

Last change on this file since 3537 was 3537, checked in by bradbell, 5 years ago

Merge github.com:bradbell/cppad:
Improve download instructions and change name of one of its headings.

  • Property svn:keywords set to Id
File size: 31.8 KB
Line 
1$Id: whats_new_12.omh 3537 2014-12-31 15:09:35Z bradbell $
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-14 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12
13$begin whats_new_12$$
14$dollar @$$
15$spell
16        checkpointing
17        Jacobians
18        doxygen
19        txt
20        sys
21        stdbool
22        datadir
23        pkgconfig
24        cppad_ipopt_nlp
25        includedir includedirs
26        libdir libdirs
27        Ubuntu
28        Microsoft
29        cmake
30        CondExpOp
31        src
32        std
33        hes
34        dw
35        uninitialised
36        resize
37        bool
38        taddr
39        eigen
40        fabs
41        mul
42        det_lu
43        adolc
44        fadbad
45        sacado
46        CppADvector
47        retape
48        Jacobian
49        dir
50        -lteuchos
51        trilinos
52        inorder
53        pthread
54        helgrind
55        Taylor
56        Debian
57        valgrind
58        num
59        alloc
60        makefile
61        hpp
62        gcc
63        cppad-%yyyymmdd%
64        lpthread
65        xout
66        fabs
67        fcur
68        CppAD
69        openmp
70$$
71
72$section CppAD Changes and Additions During 2012$$
73
74$head Introduction$$
75This section contains a list of the changes to CppAD during 2012
76(in reverse order by date).
77The purpose of this section is to
78assist you in learning about changes between various versions of CppAD.
79
80$head 12-30$$
81$list number$$
82Merge changes in $code branches/ipopt_solve$$ to $code trunk$$,
83delete that branch, and
84advance version number to $code cppad-20121230$$.
85$lnext
86Remove $code cppad/configure.hpp$$ from repository because
87it is built by the configuration process
88(even for MS Visual Studio, now that we are using $cref cmake$$).
89$lnext
90Add the $codei%AD<%Base%>%$$ input stream operator $cref/>>/ad_input/$$.
91$lend
92
93$head 12-29$$
94In $code branches/ipopt_solve$$:
95$list number$$
96Complete implementation of sparse Jacobian and Hessian calculations
97and add options that allow to user to choose between forward and reverse
98sparse Jacobians.
99$lnext
100The $cref ipopt_solve$$ routine seems to be faster and simpler
101than $cref cppad_ipopt_nlp$$.
102More speed comparisons would be good to have.
103$lnext
104All of the $cref/ADFun Drivers/Drivers/$$
105have added specifications for the zero order Taylor coefficients
106after the routine is called.
107For example, see
108$cref/Hessian uses forward/Hessian/Hessian Uses Forward/$$.
109$lend
110
111
112$head 12-28$$
113In $code branches/ipopt_solve$$:
114$list number$$
115Add the $cref ipopt_solve_retape.cpp$$ and $cref ipopt_solve_ode_inverse.cpp$$
116examples.
117$lnext
118Use $code ipopt::solve$$ $cref/options/ipopt_solve/options/$$
119argument (and not a file) for all the Ipopt options.
120As well as allowing for adding $code ipopt::solve$$ special options; e.g.,
121$cref/retape/ipopt_solve/options/Retape/$$.
122$lend
123
124$head 12-27$$
125In $code branches/ipopt_solve$$:
126Change documentation section names that begin with $code cppad_ipopt$$
127to begin with $cref/ipopt_nlp/cppad_ipopt_nlp/$$
128to distinguish them from $cref/CppAD::ipopt::solve/ipopt_solve/$$.
129
130$head 12-26$$
131In $code branches/ipopt_solve$$:
132$list number$$
133Convert documentation most all documentation references from
134the deprecated $cref InstallUnix$$ instructions to the new $cref cmake$$
135instructions.
136$lnext
137Include the $cref Introduction$$ programs in the
138$cref cmake_check$$ built using $cref cmake$$.
139$lnext
140Deprecate $cref cppad_ipopt_nlp$$ and replace it by $cref ipopt_solve$$
141which is easier to use.
142This is a first version of $code ipopt_solve$$ and its speed
143and memory use needs to be improved.
144$lend
145
146$head 12-23$$
147Copy development $code trunk$$ to $code branches/ipopt_solve$$.
148
149$head 12-22$$
150Define a doxygen module (group) for each file that has doxygen documentation.
151
152$head 12-20$$
153$list number$$
154The $cref/install instructions/install/Instructions/$$
155were installing $code cppad/CMakeLists.txt$$ and $code cppad/configure.hpp.in$$
156in the $code cppad$$ include directory.
157This has been fixed so that only $icode%*%.h%$$ and $icode%*%.hpp%$$ files
158get installed in the $code cppad$$ include directory.
159$lnext
160Advance the version number to $code cppad-20121220$$.
161$lend
162
163$head 12-19$$
164The files $code <stdbool.h>$$ and $code <sys/time.h>$$
165do not exist for all C compilers,
166and this caused a problem when using the Windows compiler.
167This has been fixed by defining the type bool inside the
168$code compare_c/det_by_minor.c$$ source code.
169
170$head 12-17$$
171There was a mistake in a check for a valid op code in the
172file $code hash_code.hpp$$.
173This mistake could generate a C++ assertion with an unknown error source.
174It has been fixed.
175 
176
177$head 12-15$$
178$list number$$
179Advance version number from $code 20121120$$ to $code 20121215$$.
180Note that the CppAD version number no longer automatically advances with the
181date and is rather chosen to advance to the current date.
182$lnext
183The $cref cmake$$ installation was putting the $code cppad.pc$$
184$cref pkgconfig$$ file in
185$codei%
186        cmake_install_prefix%/cmake_install_datadir%/cppad.pc
187%$$
188This has been fixed and is now
189$codei%
190        cmake_install_prefix%/cmake_install_datadir%/pkgconfig/cppad.pc
191%$$
192$lnext
193The $cref pkgconfig$$ documentation has been improved.
194$lnext
195The command for running the
196$cref/adolc examples/adolc_prefix/Examples/$$ and
197$cref/eigen examples/eigen_prefix/Examples/$$
198was fixed
199(changed from $code make check$$ to $code make check_example$$).
200$lend
201
202
203$head 12-14$$
204$list number$$
205Fix the old $cref InstallUnix$$ so that it works with the
206new $code cppad.pc$$.
207$lnext
208Fix the old installation
209$cref/--with-Documentation/InstallUnix/--with-Documentation/$$ option
210(it was attempting to copy from the wrong directory).
211$lend
212
213
214$head 12-13$$
215$list number$$
216Include documentation for $cref ipopt_prefix$$
217$lnext
218Fix the $code cppad.pc$$ $cref pkgconfig$$ file
219so that it includes the necessary libraries and include commands
220when $cref ipopt_prefix$$ is specified; see
221$cref/pkgconfig usage/pkgconfig/Usage/$$.
222$lend
223
224
225$head 11-28$$
226Update the $cref WishList$$:
227$list number$$
228Remove Microsoft compiler warning item that has been fixed.
229$lnext
230Remove faster sparse set operations item that was completed using
231$cref/cppad_sparse_list/cmake/cppad_sparse_list/$$.
232$lnext
233Remove $cref cmake$$ items that have been completed.
234$lnext
235Remove $cref CondExp$$ items related to using
236$code AD< std::complex<double> >$$ types because it is better to use
237$code std::complex< AD<double> >$$.
238$lnext
239Remove $cref thread_alloc$$ memory chunk item that has been completed.
240$lnext
241Remove $cref VecAD$$ item about slicing from floating point type to $code int$$
242(not important).
243$lnext
244Change an Ipopt item to a $cref cppad_ipopt_nlp$$
245(which was removed because $code cppad_ipopt_nlp$$ is now deprecated).
246Add new $code cppad_ipopt_sum$$ item to the wish list.
247(This has been removed because $cref/checkpointing/checkpoint/$$
248can now be used for this purpose.)
249$lnext
250Add new $code old_atomic$$ $cref WishList$$ item (since removed).
251
252$lend
253
254$head 11-21$$
255$list number$$
256Fix the version number in link to the
257$cref/current download files/download/Compressed Archives/Current Version/$$.
258$lnext
259Change the
260$cref/subversion/download/Subversion/$$ download instructions to use
261the $code export$$ instead of $code checkout$$ command.
262This avoids downloading the source code control files.
263$lend
264
265$head 11-20$$
266$list number$$
267The $code cmake$$ variables
268$code cmake_install_includedir$$ and
269$code cmake_install_libdir$$
270were changed to
271$cref/cmake_install_includedirs/cmake/cmake_install_includedirs/$$ and
272$cref/cmake_install_libdirs/cmake/cmake_install_libdirs/$$
273to signify the fact that they can now be a list of directories.
274$lnext
275Advance version number to $code cppad-20121120$$.
276$lend
277
278$head 11-17$$
279$list number$$
280Finish documenting the new $cref cmake$$ configuration instructions
281and deprecate the old $cref/unix/InstallUnix/$$ instructions.
282$lnext
283Change the specifications for
284$cref/CPPAD_MAX_NUM_THREADS/multi_thread/CPPAD_MAX_NUM_THREADS/$$
285to allow for a value of one.
286This enables one to have more tapes during a program execution.
287$lnext
288Include the $cref/C versus C++/compare_c/$$ speed comparison
289in the $cref cmake$$ build.
290$lend
291
292$head 11-16$$
293Fix a warning that occurred in $cref Rosen34$$
294when it was compiled with the preprocessor symbol $code NDEBUG$$ defined.
295
296$head 11-14$$
297Advanced the CppAD version to $code cppad-20121114$$.
298
299$list number$$
300Started documenting the
301$cref cmake$$ configuration procedure during installation.
302This included factoring out the
303$cref download$$ procedure as a separate section
304so that the same download instruction also apply to the
305$cref/unix/InstallUnix/$$ install procedure.
306
307$lnext
308Changed
309$cref%example/compare_change.cpp%compare_change.cpp%$$
310to just return true when $code NDEBUG$$ is defined.
311This enabled all the tests in the
312$code example$$ directory to be compiled
313with $code NDEBUG$$ is defined and to pass.
314
315$lnext
316In the case where $code NDEBUG$$ is defined,
317removed detection of $code nan$$ during forward mode from
318$code test_more/forward.cpp%$$.
319This enables all the tests in the
320$code test_more$$ directory to be compiled
321with $code NDEBUG$$ is defined and to pass.
322
323$lnext
324Started a wish list for CppAD's use of $cref cmake$$.
325The wish list items were completed and removed.
326
327$lend
328
329
330$head 11-09$$
331The $cref team_pthread.cpp$$ was failing to link on Ubuntu 12.04
332because the libraries were not at the end of the link line.
333This has been  fixed.
334
335$head 11-06$$
336$list number$$
337Remove some remaining references to the old licenses CPL-1.0 and GPL-2.0;
338see $cref/10-24/whats_new_12/10-24/$$.
339$lnext
340Remove out of date Microsoft project files from the distribution.
341The build system is being converted to use
342$href%http://www.cmake.org%cmake%$$ which builds these files automatically
343and thereby keeps them up to date.
344This feature is not yet documented, but one can inspect the file
345$code bin/run_cmake.sh$$ to see how to use $code cmake$$ with CppAD.
346$lend
347
348
349$head 11-04$$
350Add missing return value to the example $code base_alloc$$
351$cref/CondExpOp/base_alloc.hpp/CondExpOp/$$ function.
352This has been fixed and the comments for this example have been improved.
353
354$head 10-31$$
355The CppAD $cref/profiling/InstallUnix/Profiling CppAD/$$ was not compiling
356the $code speed/src/*.cpp$$ files with the profiling flag.
357This has been changes
358(only for the profiling speed test).
359
360$head 10-30$$
361The $cref/fadbad_dir/InstallUnix/fadbad_dir/$$ directory install instructions
362were changed.
363To be specific, $code FADBAD++$$ was changed to $code include/FADBAD++$$.
364This makes it more like the other optional packages.
365
366$head 10-25$$
367The test $cref runge45_1.cpp$$ was failing when using gcc-4.5.2.
368This has been fixed by properly defining $codei%fabs(%x%)%$$ where
369$icode x$$ is a double (without the $code std$$ in front).
370
371$head 10-24$$
372Change the CppAD licenses from CPL-1.0 and GPL-2.0 to
373EPL-1.0 and GPL-3.0.
374
375$head 10-12$$
376$list number$$
377Change all the multiple levels of AD examples to
378start with $cref mul_level$$.
379To be specific, move
380$code ode_taylor.cpp$$ to $cref mul_level_ode.cpp$$ and
381$code ode_taylor_adolc.cpp$$ to $cref mul_level_adolc_ode.cpp$$.
382$lnext
383Add $cref ode_taylor.cpp$$ as a example of Taylor's method for solving ODEs,
384($cref mul_level_ode.cpp$$ is an application of this method
385to multi-level AD.)
386$lend
387
388$head 10-04$$
389$list number$$
390Change $cref speed_main$$ so that it outputs small rates (less than 1000)
391with two decimal points of precision (instead of as integers).
392In addition, flush result for each size when it finishes to give user
393more feedback about how things are progressing.
394$lnext
395Add the optional $cref/test_size/time_test/test_size/$$ argument
396to the $code time_test$$ routine.
397$lend
398
399$head 10-03$$
400Change the $code hold_memory$$ speed to option to just
401$cref/memory/speed_main/option_list/memory/$$.
402In addition, in the speed test output, include all of the options
403that are present in the output variable name;
404see $cref/speed results/speed_main/Speed Results/$$.
405
406$head 10-02$$
407Fix another problem with Debian's $code /bin/sh$$ shell executing
408$code multi_thread/test.sh$$; see $cref/03-17/whats_new_12/03-17/$$
409
410$head 09-24$$
411Improve documentation for the
412$cref old_atomic$$
413$cref/rev_hes_sparse/old_atomic/rev_hes_sparse/$$
414argument
415$cref/v/old_atomic/rev_hes_sparse/v/$$.
416In addition,
417add sparsity calculations to the $cref old_reciprocal.cpp$$ example.
418
419$head 09-11$$
420Add $code user_simple.cpp$$,
421a simpler $cref old_atomic$$ example.
422
423$head 08-05$$
424$list number$$
425A new type was added for the internal representation of
426$cref/vector of sets/glossary/Sparsity Pattern/Vector of Sets/$$
427sparsity patterns; see the configure
428$cref/--with-sparse_option/InstallUnix/--with-sparse_option/$$.
429$lnext
430A new speed test, $cref compare_c$$, compares the speed of the same
431source code compiled with C and C++.
432$lend
433
434$head 07-30$$
435$list number$$
436The $cref/clear/CppAD_vector/clear/$$ function was added to
437$code CppAD::vector$$.
438$lnext
439Warning !!:
440The $code CppAD::vector$$ $cref/resize/CppAD_vector/resize/$$ specifications
441were changed so that $icode%x%.resize(0)%$$ no longer frees
442the corresponding memory (use $icode%x%.clear()%$$ instead).
443$lnext
444Fix a bug in error checking during $cref optimize$$ procedure
445had the following $code valgrind$$ symptom during the
446$cref optimize.cpp$$ example:
447$codep
448        ==6344== Conditional jump or move depends on uninitialised value(s)
449$$
450$lnext
451Fix mistake in $cref old_tan.cpp$$ where $code w[2] = 0$$
452was missing before the call
453$codep
454             dw    = F.Reverse(1, w);
455$$
456$lend
457
458$head 07-08$$
459$list number$$
460Improve the documentation for $cref pow$$ and $cref pow_int$$.
461$lnext
462Change all the example section names to be same as corresponding file names;
463e.g. change $code vectorBool.cpp$$ to $cref vector_bool.cpp$$
464for the example $code example/vector_bool.cpp$$.
465$lend
466
467$head 07-07$$
468Add the $code CPPAD_TAPE_ID_TYPE$$ argument to the
469$cref/configure/InstallUnix/Configure/$$ command line.
470
471$head 07-05$$
472Deprecate $cref/CPPAD_TEST_VECTOR/test_vector/$$ and use
473$cref/CPPAD_TESTVECTOR/testvector/$$ in its place.
474This fixes a problem introduced by changes on 07-03 whereby code that
475used $code CPPAD_TEST_VECTOR$$ would no longer work.
476
477$head 07-04$$
478$list number$$
479Replace the requirement that the $cref SimpleVector$$
480$cref/size/SimpleVector/Size/$$ function return a $code size_t$$ value to
481the requirement that it can be converted to a $code size_t$$ value.
482$lnext
483The $cref/--with-eigenvector/InstallUnix/Configure/$$ option was
484added to the $code configure$$ command line.
485$lend
486
487$head 07-03$$
488Fix bug in $cref old_atomic$$ functions identification of variables
489that caused $cref old_tan.cpp$$ to fail with error message
490$codep
491Error detected by false result for
492    y_taddr > 0
493at line 262 in the file cppad/local/dependent.hpp
494$$
495
496$head 07-02$$
497Add  $cref eigen_plugin.hpp$$ so that
498an Eigen vector can be used as a
499$cref/SimpleVector/$$.
500
501$head 07-01$$
502$list number$$
503Change $cref cppad_eigen.hpp$$
504to match new specifications and example in eigen help files on
505$href%
506        http://eigen.tuxfamily.org/dox/TopicCustomizingEigen.html%
507        customizing and extending eigen.
508%$$
509$lnext
510Fix bug whereby a newly constructed $cref VecAD$$ object was a
511$cref/variable/ParVar/$$ (instead of a parameter) directly after construction
512(when no previous $cref/ADFun/FunConstruct/$$ object had been created).
513$lnext
514Change a $code ok != a == 0.$$ to $code ok &= a == 0.$$ in
515the example $cref ad_ctor.cpp$$.
516$lnext
517Add the $cref eigen_array.cpp$$ example.
518$lend
519
520$head 06-17$$
521$list number$$
522Move $cref epsilon$$ to $cref/numeric_limits/limits/$$
523and add the functions $code min$$ and $code max$$
524in $icode%CppAD::numeric_limits<%Type%>%$$.
525$lnext
526Convert use of the deprecated $cref epsilon$$ in examples
527to use of $cref/numeric_limits/limits/$$ $code epsilon$$.
528$lnext
529Complete $cref cppad_eigen.hpp$$ interface to
530$code lowest$$ and $code highest$$ functions for
531all non-complex AD types.
532$lend
533
534
535$head 06-16$$
536Add the example $cref eigen_det.cpp$$ that uses the
537$href%http://eigen.tuxfamily.org%Eigen%$$
538linear algebra package.
539
540$head 06-15$$
541Include the $cref base_adolc.hpp$$ as
542$code <cppad/example/base_adolc.hpp>$$ under the
543$cref/prefix_dir/InstallUnix/prefix_dir/$$ directory.
544
545$head 06-12$$
546Increase the size and of the
547$cref/sparse Jacobian speed tests/link_sparse_jacobian/$$.
548
549$head 06-10$$
550$list number$$
551Add the $cref/hold_memory/speed_main/option_list/memory/$$ option
552to the speed test main program.
553This was changed to just $code memory$$; see
554$cref/10-03/whats_new_12/10-03/$$.
555$lnext
556In $cref cppad_sparse_jacobian.cpp$$,
557change $code USE_BOOL_SPARSITY$$ from true to false.
558In addition, change the number of non-zeros per row from about approximately
559three to approximately ten.
560$lend
561
562$head 06-09$$
563Change $cref adolc_sparse_jacobian.cpp$$ to use the sparse adolc
564Jacobian (instead of the full Jacobian) driver.
565This was also done for $cref adolc_sparse_hessian.cpp$$,
566but there is a problem with the test that is being investigated.
567
568$head 06-08$$
569Implement the matrix multiply speed test $cref link_mat_mul$$ for all packages
570(there is a problem with the $cref fadbad_mat_mul.cpp$$
571implementation and it is being looked into).
572
573$head 06-07$$
574Make all the speed tests implementations (for the specific packages)
575uniform by having a Specification and Implementation heading and similar
576indexing. For example, see
577$cref adolc_det_minor.cpp$$,
578$cref cppad_det_minor.cpp$$,
579$cref double_det_minor.cpp$$,
580$cref fadbad_det_minor.cpp$$, and
581$cref sacado_det_minor.cpp$$.
582
583$head 06-05$$
584Add the $cref sacado_ode.cpp$$ speed test.
585
586$head 06-04$$
587$list number$$
588The specifications for $cref Runge45$$ where changes so that
589it uses the $code fabs$$ function instead of the $code <$$ operation.
590This enabled the a more precise statement about its
591$cref/operation sequence/Runge45/Operation Sequence/$$.
592$lnext
593The $code fabs$$ function as added to the CppAD standard math library
594(see $cref abs$$)
595and the $cref/base type requirements/base_std_math/$$.
596This enables one to write code that works with $code AD<double>$$ as
597well as $code double$$ without having to define $code abs$$ for
598$code double$$ arguments
599(and similarly for $code float$$).
600$lnext
601Add the $cref adolc_ode.cpp$$ and $cref fadbad_ode.cpp$$ speed tests
602(and edit the $cref cppad_ode.cpp$$ test).
603$lend
604
605$head 06-03$$
606$list number$$
607The $code CppAD::vector$$ class was extended to allow assignment
608with the target of size zero and the source of non-zero size;
609see $cref/check size/CppAD_vector/Assignment/Check Size/$$.
610$lnext
611A memory leak and a bug in $code cppad_mat_mul.cpp$$ were fixed
612(the bug was related to the change to $code CppAD::vector$$ above).
613$lend
614
615$head 06-02$$
616$list number$$
617Remove the deprecated symbol
618$cref/CppADvector/test_vector/Deprecated/$$ from the
619$cref det_by_lu$$ speed test source code $cref det_by_lu.hpp$$.
620$lnext
621Include $cref memory_leak$$ in the list of
622$cref deprecated$$ features.
623$lnext
624Change the $cref ode_evaluate$$ speed test utility so that its
625$cref/operation sequence/glossary/Operation/Sequence/$$
626does not depend on the repetition; see
627$cref/p == 0/ode_evaluate/p/p == 0/$$ in its documentation.
628$lnext
629Use same argument for taping and derivative evaluation when
630$code retape$$ speed test option is true.
631$lnext
632Implement the $icode%retape% == false%$$ option
633in $cref cppad_ode.cpp$$.
634$lnext
635Have
636$cref cppad_det_lu.cpp$$,
637$cref cppad_det_minor.cpp$$,
638and $cref cppad_poly.cpp$$,
639return false when one of the specified options is not supported.
640Do the same for
641$icode%package%_%test%.cpp%$$ for $icode package$$ equal to
642$code adolc$$, $code fadbad$$, and $code sacado$$ and
643for $icode test$$ equal to
644$code det_lu$$, $code det_minor$$, $code poly$$.
645$lend
646
647$head 06-01$$
648Change
649$cref cppad_sparse_hessian.cpp$$ and
650$cref cppad_sparse_jacobian.cpp$$
651to use
652the $icode row$$, $icode col$$ interface to $cref sparse_hessian$$.
653In addition, implement the speed test
654$code retape$$ speed test option for these tests.
655
656$head 05-31$$
657Add the $code cppad_print_optimize$$ routine to so that the corresponding
658code does not need to be reproduced for all the
659$cref speed_cppad$$ tests.
660In addition, during CppAD speed tests,
661print out the optimization results for each test size.
662
663$head 05-30$$
664Change specifications for
665$cref link_sparse_hessian$$ so that the row and column indices are
666inputs (instead of being chosen randomly by the test for each repetition).
667This enables use of the
668$code retape$$ speed test option
669during sparse Hessian speed tests.
670
671$head 05-29$$
672Add $cref index_sort$$ to the general purpose template $cref library$$
673so that it can be used by the implementations of
674$cref link_sparse_jacobian$$ and $cref link_sparse_hessian$$.
675
676$head 05-27$$
677Split the sparse Jacobian and Hessian test function the separate function
678$cref sparse_jac_fun$$ and $cref sparse_hes_fun$$
679(do not use sparse Hessian for both).
680In addition, change row and column indices from $icode i$$
681and $icode j$$ to $icode row$$ and $icode col$$.
682
683$head 05-24$$
684Merged in changes from $code branches/sparse$$:
685$list number$$
686A new interface was added to
687$cref sparse_jacobian$$ and $cref sparse_hessian$$.
688This interface
689returns a sparse representation of the corresponding matrices
690using row and column index vectors.
691$lnext
692The examples
693$cref sparse_jacobian.cpp$$ and
694$cref sparse_hessian.cpp$$  were improved
695and extended to include the new interface.
696$lnext
697The definition of an
698$cref/AD function/glossary/AD Function/$$ was improved
699to include definition of the corresponding $icode n$$ and $icode m$$.
700$lend
701
702
703$head 04-19$$
704The $cref/BOOST_DIR/InstallUnix/boost_dir/$$
705configure command line value has been changed to be the corresponding
706prefix during the installation of boost.
707To be specific, it used to be that
708$codei%boost_dir%/boost%$$ was the boost include directory,
709now $codei%boost_dir%/include%$$ is the boost include directory.
710This make it the same as the other directory arguments on the configure
711command line.
712In addition, it fixes some bugs in the detection of the boost
713multi-threading library.
714
715
716$head 04-18$$
717Add documentation and testing for not using $cref/free_all/ta_free_all/$$ and
718$cref/old_atomic clear/old_atomic/clear/$$ while in
719$cref/parallel/ta_in_parallel/$$ mode.
720
721$head 04-17$$
722Fix bug when using $cref old_atomic$$ functions with
723$cref/multi_threading/multi_thread/$$.
724
725$head 04-10$$
726Add control of the
727$cref/max_num_threads/InstallUnix/max_num_threads/$$ argument
728to the unix
729$cref/configure/InstallUnix/Configure/$$ command.
730
731$head 04-06$$
732$list number$$
733A change was made to the way that the tapes were managed to reduce
734false sharing during $cref/multi-threading/multi_thread/$$.
735Because of this change, it is now suggest that the user call
736$cref parallel_ad$$ after the multi-threading section of the program.
737$lnext
738The routine $cref ta_free_all$$ was created to make it easier
739to manage memory and the routine $cref memory_leak$$
740was deprecated.
741$lnext
742Add the $code -lteuchos$$ flag to the link line for the
743$cref speed_sacado$$ tests.
744(This was not necessary for $code trilinos-10.8.3$$
745but is necessary for $code trilinos-10.10.1$$)
746$lend
747
748$head 04-05$$
749The restriction was added that
750$cref parallel_ad$$ cannot be called while a tape is being recorded.
751This was necessary inorder to initialize some new statics in the tape.
752
753$head 04-01$$
754Fixed a race condition when using CppAD with
755$cref/multi-threading/multi_thread/$$.
756This has been fixed and the error message below no longer occurs.
757Suppose that you ran the CppAD
758$cref/configure/InstallUnix/Configure/$$ command in the $code work$$
759directory.
760If you then edited the file $code work/multi_thread/makefile$$
761and changed
762$codep
763        # AM_CXXFLAGS     = -g @(CXX_FLAGS)
764        AM_CXXFLAGS = -DNDEBUG -O2 @(CXX_FLAGS)
765$$
766to
767$codep
768        AM_CXXFLAGS     = -g @(CXX_FLAGS)
769        # AM_CXXFLAGS = -DNDEBUG -O2 @(CXX_FLAGS)
770$$
771and then executed the commands
772$codep
773        make clean
774        make pthread_test
775        valgrind --tool=helgrind ./pthread_test simple_ad
776$$
777The following error message would result:
778$icode%
779        ... snip ...%
780==7041== Possible data race during write of size 4 at 0x8077460 by thread #1
781==7041==    at 0x804FE23: CppAD::AD<double>::tape_new() (tape_link.hpp:221)
782%       ... snip ...
783%$$
784
785
786
787$head 03-27$$
788Reduce the amount of memory allocation and copying of information during
789a $cref Dependent$$ operation or an $code ADFun$$
790$cref/sequence constructor/FunConstruct/Sequence Constructor/$$.
791
792$head 03-26$$
793Calling $code taylor_capacity$$, with to with capacity equal to zero,
794was not
795$cref/freeing memory/capacity_order/c/Freeing Memory/$$.
796This has been fixed.
797
798$head 03-23$$
799$list number$$
800Improve, the multi-threading examples
801$cref simple_ad_openmp.cpp$$,
802$cref simple_ad_bthread.cpp$$, and
803$cref simple_ad_pthread.cpp$$.
804This includes separating generic code that can be used for all applications
805from problem specific code.
806$lnext
807Add initialization of statics in
808$cref/CheckSimpleVector/parallel_ad/CheckSimpleVector/$$
809during $code parallel_ad$$ call.
810These statics are required to use
811$cref/CppAD::vector/CppAD_vector/$$.
812$lnext
813Add a debugging check to make sure $cref CheckSimpleVector$$
814is initialized in sequential mode.
815$lend
816
817$head 03-21$$
818Fix an incorrect error check in $code thread_alloc$$
819that did not allow $cref ta_return_memory$$
820to return memory in sequential execution mode that was allocated by a
821different thread during parallel execution.
822
823$head 03-17$$
824Debian recently converted the default shell corresponding to
825$code /bin/sh$$ to  $code dash$$
826(which caused $code multi_thread/test.sh$$ to fail).
827This has been fixed.
828In general, Debian's policy is that $code bin/sh$$ will be a
829$href%
830http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html%
831Posix Shell
832%$$.
833
834$head 03-11$$
835There was a bug in $cref thread_alloc$$ where extra memory was held
836onto even if $cref/hold_memory/ta_hold_memory/$$ was never called
837and only one thread was used by the program.  This caused
838$codei%
839valgrind --leak-check=full --show-reachable=yes
840%$$
841to generate an error message.
842If $cref/multiple threads/multi_thread/$$ are used,
843one should free this
844$cref/extra memory/ta_free_available/Purpose/Extra Memory/$$
845for threads other than thread zero.
846If $code hold_memory$$ is used,
847one should call $cref/free_available/ta_free_available/$$ for all threads.
848
849
850$head 03-03$$
851$list number$$
852Add the examples
853$cref simple_ad_openmp.cpp$$,
854$cref simple_ad_bthread.cpp$$
855and $cref simple_ad_pthread.cpp$$.
856$lnext
857Fix bug in finding boost multi-threading library
858(due to fact that $cref/boost_dir/InstallUnix/boost_dir/$$
859is not the prefix during the boost installation).
860$lend
861
862$head 03-02$$
863$list number$$
864Change the name $code simple_ad.cpp$$ to $cref team_example.cpp$$
865$lnext
866The multi-threading $code team_example.cpp$$ example was changed to use
867$latex f(x) = \sqrt{ x^2 }$$ instead of the function
868$latex {\rm atan2} [ \sin(x) , \cos (x) ]$$
869(both functions should behave like the identity function $latex f(x) = x$$).
870This enabled the removal of $code multi_thread/arc_tan.cpp$$.
871$lnext
872In $cref team_example.cpp$$ check that all of the threads
873pass their individual test; i.e. $codei%work_all_[%thread_num%]%.ok%$$
874is true for all $icode thread_num$$.
875$lend
876
877$head 02-11$$
878$list number$$
879The requirements in
880$cref base_member$$ were missing from the $cref base_require$$ documentation.
881In addition,
882the $cref base_require.cpp$$ example has been added.
883$lend
884The specifications for $cref memory_leak$$ where changes so that
885calling routine specifies the amount of static memory to add.
886In addition,
887it is now possible to call
888$code memory_leak$$ when $cref/num_threads/ta_num_threads/$$
889is greater than one
890(still can't be in parallel mode).
891
892$head 02-10$$
893$list number$$
894Add the missing Base class requirements in
895the entire $cref base_member$$ section
896and under the $cref/Output Operator/base_require/Output Operator/$$
897in the $cref base_require$$ section.
898$lnext
899Add the $cref base_alloc.hpp$$ example.
900$lend
901
902
903$head 02-09$$
904$list number$$
905Add the $icode set_static$$ to $cref memory_leak$$.
906This is necessary for testing base types that allocate memory
907for each element.
908$lnext
909Fix memory allocation bug in $code cppad/local/pod_vector.hpp$$
910when each element of the $cref/Base/base_require/$$ type allocated memory.
911$lend
912
913$head 01-30$$
914Make another attempt to fix linking with boost threads where the wrong
915version of the library is in the system include directory; i.e.,
916to have $cref/boost_dir/InstallUnix/boost_dir/$$ override the default
917library.
918
919$head 01-27$$
920There were some problems with
921$cref/configure's/InstallUnix/Configure/$$ automatic detection of
922the boost multi-threading library.
923These have been fixed.
924
925$head 01-24$$
926It used to be that $cref thread_alloc$$ did not hold onto memory
927when $icode num_threads$$ was one in the previous call to
928$cref/parallel_setup/ta_parallel_setup/$$.
929Holding onto memory is now controlled by the separate routine
930$cref/hold_memory/ta_hold_memory/$$.
931This give the user more control over the memory allocator
932and the ability to obtain a speed up even
933when there is only one thread.
934To convert old code to the new interface, after each call to
935$codei%
936thread_alloc::parallel_setup(%num_threads%, %in_parallel%, %thread_num%);
937%$$
938put the following call
939$codei%
940thread_alloc::hold_memory(%num_threads% > 1);
941%$$
942
943$head 01-23$$
944Change variable notation and use $cref optimize$$ in
945$cref mul_level.cpp$$.
946
947$head 01-20$$
948$list number$$
949Add the example $cref change_const.cpp$$
950which shows how to compute derivatives of functions that have
951parameters that can change (but derivatives are not computed
952                                    with respect to these parameters).
953$lnext
954The documentation for machine $cref epsilon$$
955has been improved.
956(The fact that it can be used for $icode Base$$ types was missing.)
957$lend
958
959$head 01-19$$
960$list number$$
961In cases where $code test.sh$$ is trivial,
962put its operations in corresponding makefile.
963$lnext
964Fix problem compiling $code cppad/speed/sparse_evaluate.hpp$$
965under gcc on Fedora 17.
966$lnext
967Run $code multi_thread/test.sh$$ from source directory
968(no need to copy to build directory).
969$lend
970
971$head 01-16$$
972The test program $code multi_thread/test.sh$$ failed if the
973$cref/openmp_flags/InstallUnix/openmp_flags/$$ not present in the
974$code configure$$ command.
975This has been fixed.
976In addition, this $code test.sh$$ has been made faster by cycling through
977the available threading systems instead of doing every system for every
978test.
979
980$head 01-15$$
981Fix $code make test$$ so it works when
982$cref/configure/InstallUnix/Configure/$$ is run in the distribution directory
983$codei%cppad-%yyyymmdd%$$
984(not just when it is run in a different directory).
985
986
987$head 01-12$$
988The $code -lpthread$$ library was missing from the
989$cref multi_thread$$ test program linker command.
990This has been fixed.
991
992$head 01-07$$
993$list number$$
994A duplicated code block beginning with
995$codep
996if( fabs( fcur ) <= epsilon_ )
997$$
998was removed from the routine $code multi_newton_worker$$, in the file
999$cref multi_newton_work.cpp$$.
1000
1001$lnext
1002The distance between solutions that are joined to one solution
1003has been corrected from $latex (b - a) / (2 n )$$ to
1004$latex (b - a) / n $$; see
1005$cref/xout/multi_newton.cpp/xout/$$.
1006The correction was in the file $cref multi_newton_work.cpp$$ where
1007$code sub_length_ / 2$$ was change to $code sub_length_$$.
1008
1009$lend
1010
1011$head 01-02$$
1012$list number$$
1013The $cref thread_alloc$$ memory allocator was changed to avoid
1014certain false sharing situations
1015(cases where two different thread were changing and using memory
1016that is on the same page of cache).
1017On one tests machine, the execution time for the 32 thread case for the test
1018$codep
1019./openmp_test multi_newton 1 32 1000 4800 10 true
1020$$
1021improved from  0.0302 seconds to 0.0135 seconds.
1022
1023$lnext
1024There was a problem with the correctness test section of the
1025$cref multi_newton_time.cpp$$ test.
1026The convergence criteria, and correctness criteria,
1027needed to be scaled by the largest argument values.
1028This was a problem with over a hundred zeros were included in the test
1029(and the largest argument value was $latex 100 \pi$$ or more).
1030
1031$lnext
1032There was a problem with the way that
1033$cref/multi_newton_combine/multi_newton_work.cpp/multi_newton_combine/$$
1034joined two solutions into one.
1035It is possible that one of the solutions that needs to be joined is on
1036the  boundary and very close to a solution in the next (or previous interval)
1037that is not on the  boundary. In this case,
1038the one with the smaller function value is chosen.
1039
1040$lend
1041for the previous
1042
1043$end
Note: See TracBrowser for help on using the repository browser.