coin-or / adol-c Goto Github PK
View Code? Open in Web Editor NEWA Package for Automatic Differentiation of Algorithms Written in C/C++
License: Other
A Package for Automatic Differentiation of Algorithms Written in C/C++
License: Other
ADOL-C This new version of ADOL-C features new library functions for - sparse Jacobians and sparse Hessians - external differentiated functions - optimal checkpointing - adapted differentiation of fixed point iterations - parallel differentiation of OpenMP-parallel loops - Lie derivatives of scalar, vector and covector fields and many bug fixes. Furthermore the source code was adapted to allow a compilation with WINDOWS compilers. See file "INSTALL" for generic installation instructions and special instructions for the installation on a WINDOWS platform. The complete documentation can be found in the subdirectory "doc". LOCAL INSTALLATION ================== 1. Type autoreconf -fi 2. Run configure with possibly using one of these options: --prefix=PREFIX install library and header files in PREFIX (default: ${HOME}/adolc_base) --enable-sparse build sparse drivers [default=no] --with-openmp-flag=FLAG use FLAG to enable OpenMP at compile time [default=none] --enable-docexa build documented examples [default=no] --enable-addexa build additional examples [default=no] --enable-parexa build parallel example [default=no], if yes -with-openmp-flag=FLAG required --with-cflags=FLAGS use CFLAGS=FLAGS (default: -g -O2) --with-cxxflags=FLAGS use CXXFLAGS=FLAGS (default: -g -02 -std=c++11) --with-boost=BOOST_PATH path to the compiled boost library, otherwise the system one is chosen by default (if exists) 3. Type make 4. Type make install By default, `make install' will install all the files in ${PREFIX}/lib and ${PREFIX}/include. You can specify another installation directory by using the --prefix-option in the configure call. This procedure provides all makefiles required in the approporate directories. Execute 'configure --help' for more details on other available option. Nonlocal installation ===================== As mentioned in INSTALL one can configure the adolc package to be installed in a different directory than "${HOME}/adolc_base" by using the "--prefix=PATH" configure option. This is typically used for global installations. Common PATHs are "/usr" and "/usr/local/", and others are known to be used. Fine control over the installation directories can be gained by supplying additional configure options. See "./configure --help" for details. Completing the installation by executing "make install" requires write permissions for all target directories. Make sure to have them or the result may be surprising otherwise. A global installation can be helpfull if many users need the library. By adding the library's path to "/etc/ld.so.conf" the usage of LD_LIBRARY_PATH and the "-L" link switch becomes unnecessary. In many cases, for instance for PATH=/usr/local, the use of the -I directive for compiling sources becomes unnecessary too. Examples ======== Examples must be configured to build by using the configure switches --enable-docexa or --enable-addexa. They will never be installed by make install but can be found in the appropriate example subdirectory. Windows Compilation with MINGW ============================== Please refer to INSTALL Windows Compilation with Visual Studio ====================================== Please refer to the file windows/Readme_VC++.txt for building the library and ADOL-C/examples/Readme_VC++.txt for the documented examples. Unit tests ========== ADOL-C provides more than 400 unit tests to verify its basic functionality. For more information how to run the tests, please check the README file in ADOL-C/boost-test directory. Enjoy this new version!
I am working on a project which involves the evaluation of several functions and their derivatives. At each step, the derivatives of several different functions have to be evaluated (rather than several Jacobian rows or Taylor coefficients).
I use ADOL-C to compute these derivatives and am generally pleased with the results. However, I would like to compute all required derivatives in parallel. Unfortunately, it seems that ADOL-C is not by default thread-save. In my case, OpenMP-based parallel evaluation is not an option.
The thread unsafety seems (at least in part) due to the fact that the tape data structures are stored as global variables:
ADOL-C/ADOL-C/src/tape_handling.cpp
Lines 337 to 348 in e1fe476
As far as I can tell, the manual does not mention thread-safety, so this is certainly not a bug. What I would like to have is a guarantee of the form
Evaluation sequences for different tapes are save to execute in parallel
where an evaluation sequence involves a taping step using trace_on(id)
, ...,trace_off()
followed by any gradient(id,...)
or more complicated sweeping sequences.
As far as I can tell, most of the actual work is conducted on the current tape and the set of all tapes is only touched very infrequently. So I think making the current tape thread_local
and synchronizing the access to the other global variables would go a long way towards thread safety without sacrificing much in terms of performance.
I would be willing to try my hand at implementing this, provided you would merge such a feature.
bin/bash ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../ADOL-C/include -I../../ADOL-C/include -I../../ADOL-C/src -O2 -DADOLC_INTERNAL=1 -g -O2 -MT tape_handling.lo -MD -MP\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../ADOL-C/include -I../../ADOL-C/include -I../../ADOL-C/src -O2 -DADOLC_INTERNAL=1 -g -O2 -MT tape_handling.lo -MD -MP -MF .deps/tape_handling.Tpo -c tapeo tape_handling.cpp: In function ‘int initNewTape(short int)’: tape_handling.cpp:200:49: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 200 | vector<TapeInfos *>::iterator tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find tape_handling.cpp: In function ‘void openTape(short int, char)’: tape_handling.cpp:314:49: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 314 | vector<TapeInfos *>::iterator tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find tape_handling.cpp: In function ‘TapeInfos* getTapeInfos(short int)’: tape_handling.cpp:409:24: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 409 | auto tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find tape_handling.cpp: In function ‘void setTapeInfoJacSparse(short int, SparseJacInfos)’: tape_handling.cpp:472:49: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 472 | vector<TapeInfos *>::iterator tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find tape_handling.cpp: In function ‘void setTapeInfoHessSparse(short int, SparseHessInfos)’: tape_handling.cpp:510:49: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 510 | vector<TapeInfos *>::iterator tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find tape_handling.cpp: In function ‘int removeTape(short int, short int)’: tape_handling.cpp:748:49: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 748 | vector<TapeInfos *>::iterator tiIter = std::find_if(ADOLC_TAPE_INFOS_BUFFER.begin(), | ^~~~~~~ | find make[4]: *** [Makefile:707:tape_handling.lo] 错误 1 make[4]: 离开�录“/mnt/data/ADOL-C/ADOL-C/src” make[3]: *** [Makefile:727:all-recursive] 错误 1 make[3]: 离开�录“/mnt/data/ADOL-C/ADOL-C/src” make[2]: *** [Makefile:530:all] 错误 2 make[2]: 离开�录“/mnt/data/ADOL-C/ADOL-C/src” make[1]: *** [Makefile:571:all-recursive] 错误 1 make[1]: 离开�录“/mnt/data/ADOL-C/ADOL-C” make: *** [Makefile:536:all-recursive] 错误 1 root@tegra-ubuntu:/mnt/data/ADOL-C#
As mentioned above: #include<algorithm>
needs to be added in ADOL-C/ADOL-C/src/tape_handling.cpp
I want to output the results of a recorded tape to a C or C++ file for static compilation instead of relying on operator overloading. Since it is possible to output to latex I imagine that is possible. Do you have any pointers for how to accomplish that?
Thank you.
Issue created by migration from Trac.
Original creator: yurivict
Original creation time: 2020-02-01 16:42:44
Assignee: @awalther1
Version:
Error:
Prefix /usr/local not writable
please run ./configure --prefix=DIR
with a writable directory path otherwise administrator privileges
will be required to run `make install'
2.6.3 was building fine.
2.7.1 now has this problem.
Issue created by migration from Trac.
Original creator: @utke1
Original creation time: 2010-02-17 21:45:07
Assignee: somebody
Version:
after the code change done in revision 81 a test with changing the revreal define to "float" shows type mismatches.
Testing other intrinsics (i.e. not changed by e1d03a8) shows that
the results are wrong (see scalexam -7/-8) too.
The same change attempted in revision 2.0.0 does not compile at all.
I don't understand how the logic implemented in ho_rev.c
is supposed to work regarding the use of
rpp_T vs. dpp_A, , Targ/Tres vs. Aarg/Ares etc.
Issue created by migration from Trac.
Original creator: @utke1
Original creation time: 2010-02-17 20:32:18
Assignee: somebody
Version:
... so one can fix things there too... ;-)
Hello,
i got an issue when using fixpoint iteration abilities.
I used VS17 to compile library with "nosparse" and tried my own examples (with ipopt) - works well without issues. But when using fixpoint iteration abilities (fp_iteration) there occures a linker error. Same when linking the example (fixpoint_exam.cpp):
1>TestFixPoint.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "fp_iteration" in Funktion "main".
(Sorry, VS uses german language on this machine.)
The compiler finds adolc.h and fixpoint.h and the linker also links to adolc.lib (like my other projects).
Best regards,
Robert
Issue created by migration from Trac.
Original creator: lorenz
Original creation time: 2010-09-29 07:18:25
Assignee: @awalther1
Version:
When trying to compile this simple test file, the compiler stops with an "ambiguous call" error for fmax and fmin. The problem would probably occur with other overloaded functions too.
Source file:
#include <adolc/adolc.h>
int main(int, char **)
{
double x = 3, y = 4;
fmax(x, y);
fmin(x, y);
return 0;
}
Compiler call:
$ gcc -I../ADOL-C/include -L../ADOL-C/lib -ladolc fmax_test.cpp
Error messages:
fmax_test.cpp: In function 'int main(int, char**)':
fmax_test.cpp:7: error: call of overloaded 'fmax(double&, double&)' is ambiguous
../ADOL-C/include/adolc/adouble.h:72: note: candidates are: double fmax(const double&, const double&)
/usr/include/bits/mathcalls.h:339: note: double fmax(double, double)
fmax_test.cpp:8: error: call of overloaded 'fmin(double&, double&)' is ambiguous
../ADOL-C/include/adolc/adouble.h:71: note: candidates are: double fmin(const double&, const double&)
/usr/include/bits/mathcalls.h:342: note: double fmin(double, double)
System:
I want to cross-compile ADOL-C to arm linux,but I receivea problem.
Please tell me how to cross-compile.
Any suggestions are greatly appreciated.
error: ‘::calloc’ has not been declared
error: declaration of ‘void* rpl_malloc(size_t)’ has a different exception specifier
Dear developer,
I try to include ADOL-C in a CMake project on MacOS X and encountered problems with the file adouble.h. There is a check if the c++11 flag has been set which is something the build system should do, not the preprocessor. The compiler can support C++11 without explicitly setting a flag, which is the case here.
I can work around this problem by explicitly adding a c++11 flag to my CMake settings, but it should be possible to compile it anyway.
Please move this check to your configure script so that people who include this project into their CMake build system can easily do so.
Thanks
Schulz0r
ADOL-C was built and installed on a Debian 12.5 system. Afterwards, boost-test-adolc was built and run. The shell output from the last two steps is provided below:
debianuser@debian: ~/ADOL-C/ADOL-C/boost-test/build$ make boost-test-adolc
[ 9%] Building CXX object CMakeFiles/boost-test-adolc.dir/adouble.cpp.o
[ 18%] Building CXX object CMakeFiles/boost-test-adolc.dir/main.cpp.o
[ 27%] Building CXX object CMakeFiles/boost-test-adolc.dir/traceCompositeTests.cpp.o
[ 36%] Building CXX object CMakeFiles/boost-test-adolc.dir/tracelessCompositeTests.cpp.o
[ 45%] Building CXX object CMakeFiles/boost-test-adolc.dir/tracelessOperatorScalar.cpp.o
[ 54%] Building CXX object CMakeFiles/boost-test-adolc.dir/tracelessOperatorVector.cpp.o
[ 63%] Building CXX object CMakeFiles/boost-test-adolc.dir/traceOperatorScalar.cpp.o
[ 72%] Building CXX object CMakeFiles/boost-test-adolc.dir/traceOperatorVector.cpp.o
[ 81%] Building CXX object CMakeFiles/boost-test-adolc.dir/traceSecOrderScalar.cpp.o
[ 90%] Building CXX object CMakeFiles/boost-test-adolc.dir/traceSecOrderVector.cpp.o
[100%] Linking CXX executable boost-test-adolc
[100%] Built target boost-test-adolc
debianuser@debian: ~/ADOL-C/ADOL-C/boost-test/build$ ./boost-test-adolc
Running 470 test cases...
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
/home/debianuser/ADOL-C/ADOL-C/boost-test/traceOperatorVector.cpp(2989): error: in "trace_vector/FminOperator_FOV_Forward_1": check yd[0][1] == bDerivative has failed [0 != -3.7000000000000002]: absolute value exceeds tolerance [|-3.7| > 1e-08]
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
ADOL-C warning: fmin/fmax used with equal arguments, adjoints might be incorrect.
*** 1 failure is detected in the test module "boost-adolc-test"
Issue created by migration from Trac.
Original creator: cteeter
Original creation time: 2010-06-04 00:48:50
Assignee: @awalther1
Version:
Keywords: Windows Visual Studio 2008
Attached are project files and documentation to build ADOL-C as a static library under windows using Visual Studio 2008. Please contact me at chuck.teeter@
gmail.com if you have any questions.
I am currently trying to use ADOL-C under Windows VS2019. During the installation I ran into some problems. One of them is that the folder structure of ColPack does not match the structure set up in the ADOL-C/MSVisualStudio/v14/ColPack.vcxproj file.
Folder names:
Btw. I am not completely sure if I am supposed to place ColPackHeaders.h and Definitions.h in .../v14/ColPack/main or directly in .../v14/ColPack, because both locations were reported as missing these files during building.
Issue migrated from gitlab.
Hello, I'm experimenting memory problems with the sparse jacobian.
To make them reproducible I've used the code from additional_examples/sparse/sparse_jacobian.cpp, kept the part containing the spare jacobian computation, and run it 10000 times to make bugs occur more frequently:
/*----------------------------------------------------------------------------
ADOL-C -- Automatic Differentiation by Overloading in C++
File: sparse_jacobian.cpp
Revision: $Id: sparse_jacobian.cpp 299 2012-03-21 16:08:40Z kulshres $
Contents: example for computation of sparse jacobians
Copyright (c) Andrea Walther, Andreas Griewank, Andreas Kowarz,
Hristo Mitev, Sebastian Schlenkrich, Jean Utke, Olaf Vogel
This file is part of ADOL-C. This software is provided as open source.
Any use, reproduction, or distribution of the software constitutes
recipient's acceptance of the terms of the accompanying license file.
---------------------------------------------------------------------------*/
#include <math.h>
#include <cstdlib>
#include <cstdio>
#include <adolc/adolc.h>
#include <adolc/adolc_sparse.h>
#define tag 1
void ceval_ad(adouble *x, adouble *c);
int main() {
int n=6, m=3;
double x[6], c[3];
adouble xad[6], cad[3];
int i, j;
/****************************************************************************/
/******* function evaluation ***************/
/****************************************************************************/
for(i=0;i<n;i++)
x[i] = log(1.0+i);
/* Tracing of function c(x) */
trace_on(tag);
for(i=0;i<n;i++)
xad[i] <<= x[i];
ceval_ad(xad,cad);
for(i=0;i<m;i++)
cad[i] >>= c[i];
trace_off();
/****************************************************************************/
/******* sparse Jacobians, complete driver ***************/
/****************************************************************************/
for (i = 0; i < 10000; i++) {
std::cout << i << std::endl;
/* coordinate format for Jacobian */
unsigned int *rind = NULL; /* row indices */
unsigned int *cind = NULL; /* column indices */
double *values = NULL; /* values */
int nnz;
int options[4];
options[0] = 0; /* sparsity pattern by index domains (default) */
options[1] = 0; /* safe mode (default) */
options[2] = 0; /* not required if options[0] = 0 */
options[3] = 0; /* column compression (default) */
sparse_jac(tag, m, n, 0, x, &nnz, &rind, &cind, &values, options);
free(rind); rind=NULL;
free(cind); cind=NULL;
free(values); values=NULL;
}
}
/***************************************************************************/
void ceval_ad(adouble *x, adouble *c) {
c[0] = 2*x[0]+x[1]-2.0;
c[0] += cos(x[3])*sin(x[4]);
c[1] = x[2]*x[2]+x[3]*x[3]-2.0;
c[2] = 3*x[4]*x[5] - 3.0+sin(x[4]*x[5]);
}
/***************************************************************************/
I can observe double free or corruption (out)
and sometimes free(): invalid next size (fast)
bugs occurring randomly (it needs on average 1000 calls to sparse_jac
before having a bug).
Compiling the code with -fsanitize=address, I could get the following trace:
=================================================================
==12746==ERROR: AddressSanitizer: attempting free on address which was not malloc()-ed: 0x603000c6f5b0 in thread T0
#0 0x7ff75a37cc40 in operator delete[](void*) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xebc40)
#1 0x7ff759a25f5c in ColPack::BipartiteGraphPartialColoring::Seed_reset() (/usr/lib/x86_64-linux-gnu/libColPack.so.0+0x42f5c)
#2 0x7ff759a2bcee in ColPack::BipartiteGraphPartialColoringInterface::~BipartiteGraphPartialColoringInterface() (/usr/lib/x86_64-linux-gnu/libColPack.so.0+0x48cee)
#3 0x7ff759a2bd18 in ColPack::BipartiteGraphPartialColoringInterface::~BipartiteGraphPartialColoringInterface() (/usr/lib/x86_64-linux-gnu/libColPack.so.0+0x48d18)
#4 0x7ff75a275617 in freeSparseJacInfos (/usr/lib/x86_64-linux-gnu/libadolc.so.2+0xbe617)
#5 0x7ff75a1d6740 in setTapeInfoJacSparse (/usr/lib/x86_64-linux-gnu/libadolc.so.2+0x1f740)
#6 0x7ff75a275d6b in sparse_jac (/usr/lib/x86_64-linux-gnu/libadolc.so.2+0xbed6b)
#7 0x55ad70fd595c in main /home/sebastien/CLionProjects/Test_Adol-C/sparse_jacobian.cpp:73
#8 0x7ff759cf909a in __libc_start_main ../csu/libc-start.c:308
#9 0x55ad70fd52b9 in _start (/home/sebastien/CLionProjects/Test_Adol-C/cmake-build-debug/sparse+0x22b9)
Address 0x603000c6f5b0 is a wild pointer.
SUMMARY: AddressSanitizer: bad-free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xebc40) in operator delete[](void*)
==12746==ABORTING
It seems however that this is not the only source of errors, but I couldn't catch all of them with sanitizers.
After some investigation, I found out that the bug only occurs when using column compression, and everything is fine with row compression (e.g. with options[3] = 1
).
So there might be an error with the lines from sparsedrivers.cpp
:
g->GenerateSeedJacobian(&(sJinfos.Seed), &(sJinfos.seed_rows),
&(sJinfos.seed_clms), "SMALLEST_LAST","COLUMN_PARTIAL_DISTANCE_TWO");
sJinfos.seed_rows = depen;
ret_val = sJinfos.seed_clms;
From what I've understood, it seems that the memory is being corrupted at some point (the memory is written at some place where it shouldn't be, but without causing segfault), and when this memory is freed we get the double free or corruption
or invalid next size
depending on which part of the allocated bloc is corrupted. However I couldn't find what caused this.
OS: Debian 10
Adol-C version: tested with v2.6.3 and with the current master branch (9d229164)
I have problems parallelizing some part of code with OpenMP.
This is an example:
#include <iostream>
#include <omp.h>
#include <adolc/adolc.h>
#include <adolc/adolc_openmp.h>
int main(){
int max_t = omp_get_num_threads();
double x[max_t];
double y[max_t];
#pragma omp parallel for ADOLC_OPENMP_NC
for(int i = 0; i < 10000; ++i)
{
int numt = omp_get_thread_num();
double** tensor2 = myalloc(1,3);
double** S = myalloc(1,1);
S[0][0] = 1.0;
adouble a_y, a_x;
trace_on(numt);
a_x <<= x[numt];
a_y = pow(2*a_x,3);
a_y >>= y[numt];
trace_off();
double o = 1.0*i;
// function(numt,1,1,&o,&y[numt]);
// zos_forward(numt,1,1,1,&o,&y[numt]);
// fos_reverse(numt,1,1,&o,&y[numt]);
tensor_eval(numt,1,1,2,1,&o,tensor2,S);
std::cout << tensor2[0][2] << std::endl;
// std::cout << y[numt] << std::endl;
}
return 0;
}
When executing with #pragma omp parallel for ADOLC_OPENMP_NC
it gives me Segmentation fault (core dumped)
, no problem with function()
or zos_forward()
and fos_reverse()
.
Thanks for your patience.
OS: Ubuntu 19.10
Adol-C version: tested with v2.7.2
ADOL-C 2.6.3 is confused when detecting ColPack on MacOS, using g++ 10.1 as compiler.
From the ./configure output:
checking ColPack/ColPackHeaders.h presence... yes
configure: WARNING: ColPack/ColPackHeaders.h: present but cannot be compiled
configure: WARNING: ColPack/ColPackHeaders.h: check for missing prerequisite headers?
configure: WARNING: ColPack/ColPackHeaders.h: see the Autoconf documentation
configure: WARNING: ColPack/ColPackHeaders.h: section "Present But Cannot Be Compiled"
configure: WARNING: ColPack/ColPackHeaders.h: proceeding with the compiler's result
configure: WARNING: ## -------------------------------------- ##
configure: WARNING: ## Report this to [email protected] ##
configure: WARNING: ## -------------------------------------- ##
checking for ColPack/ColPackHeaders.h... no
From config.log:
configure:18078: checking ColPack/ColPackHeaders.h usability
configure:18078: g++ -c -g -O2 -I/opt/local/include -I/Users/ckirches/External/ColPack/Src/build/include conftest.cpp >&5
In file included from /opt/local/include/gcc10/c++/stdlib.h:36,
from conftest.cpp:68:
/opt/local/include/gcc10/c++/cstdlib:144:11: error: 'calloc' has not been declared in '::'
144 | using ::calloc;
| ^~~~~~
/opt/local/include/gcc10/c++/cstdlib:151:11: error: 'malloc' has not been declared in '::'
151 | using ::malloc;
| ^~~~~~
/opt/local/include/gcc10/c++/cstdlib:164:11: error: 'realloc' has not been declared in '::'
164 | using ::realloc;
| ^~~~~~~
In file included from conftest.cpp:68:
/opt/local/include/gcc10/c++/stdlib.h:59:12: error: 'calloc' has not been declared in 'std'
59 | using std::calloc;
| ^~~~~~
/opt/local/include/gcc10/c++/stdlib.h:65:12: error: 'malloc' has not been declared in 'std'
65 | using std::malloc;
| ^~~~~~
/opt/local/include/gcc10/c++/stdlib.h:73:12: error: 'realloc' has not been declared in 'std'
73 | using std::realloc;
| ^~~~~~~
configure:18078: $? = 1
configure: failed program was:
As per
https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Present-But-Cannot-Be-Compiled.html
there are dependent headers (#include <cstdlib>) that should be listed in the autoconf script, but are missing. Unfortunately, my autoconf abilities are too limited to provide a fix.
FWIW after a lot of fiddling I managed a build by
building '_adolc' extension
swigging adolc-python.i to adolc-python_wrap.cpp
swig -python -c++ -dirvtable -o adolc-python_wrap.cpp adolc-python.i
error: command 'swig' failed with exit status 1
gmake[6]: *** [Makefile:492: install] Error 1
gmake[6]: Leaving directory '/disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2/ADOL-C/swig'
gmake[5]: *** [Makefile:560: install-recursive] Error 1
gmake[5]: Leaving directory '/disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2/ADOL-C'
gmake[4]: *** [Makefile:720: install] Error 2
gmake[4]: Leaving directory '/disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2/ADOL-C'
gmake[3]: *** [Makefile:538: install-recursive] Error 1
gmake[3]: Leaving directory '/disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2'
gmake[2]: *** [Makefile:851: install-strip] Error 2
gmake[2]: Leaving directory '/disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2'
The command swig -python -c++ -dirvtable -o adolc-python_wrap.cpp adolc-python.i
runs fine standalone in the directory /disk-samsung/freebsd-ports/math/adol-c/work/ADOL-C-2.7.2/ADOL-C/swig
.
OS: FreeBSD 13
clang-11
Hi,
I am trying to install adol-c to use with my CMake based project on my macbook. I am kind of a beginner with C++, and not sure how to use/install adol-c. Currently my CMakeLists.txt file is looking like this:
`cmake_minimum_required(VERSION 3.17)
project(Thesis)
set(CMAKE_CXX_STANDARD 17)
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
find_package(autodiff REQUIRED)
find_package(adolc REQUIRED)
add_executable(Thesis main.cpp constants.h main.h utils.cpp utils.h integration.cpp integration.h optimization.cpp optimization.h STMs.cpp STMs.h)
find_package(OpenMP REQUIRED)
if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
#add_subdirectory(autodiff)
target_link_libraries (Thesis adolc Eigen3::Eigen autodiff::autodiff OpenMP::OpenMP_CXX)`
However, I get the following error message;
CMake Error at CMakeLists.txt:8 (find_package):
By not providing "Findadolc.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "adolc", but
CMake did not find one.
Could not find a package configuration file provided by "adolc" with any of
the following names:
adolcConfig.cmake
adolc-config.cmake
Add the installation prefix of "adolc" to CMAKE_PREFIX_PATH or set
"adolc_DIR" to a directory containing one of the above files. If "adolc"
provides a separate development package or SDK, be sure it has been
installed.
I tried using 'configure / make / make install' in the ADOL-C directory, also with different prefixes to install adol-c in different places (Thesis project root, usr/local/, etc).
Any idea what I am doing wrong?
Also, should I add '--with-openmp-flag=FLAG' during configuring if I want to use OpenMP with Adol-C?
Hopefully somebody can help me with this. Thanks in advance!
Making all in ADOL-C
make[1]: Entering directory '/home/ubuntu/SOURCE/adolc-version/adolc_source/ADOL-C-master/ADOL-C'
Makefile:525: .deps/dummy.Plo: 没有那个文件或目录
make[1]: *** No rule to make target '.deps/dummy.Plo'。 停止。
make[1]: Leaving directory '/home/ubuntu/SOURCE/adolc-version/adolc_source/ADOL-C-master/ADOL-C'
Makefile:537: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
I can successfully make and install the C/C++ library, but then, the install rule eventually fails when running make install
in the swig directory and I get the error below (prefix is not propagated)
Also, I do not need the python wrappers, bu I do not see how I can disable it from configure
$ ./configure --prefix=someprefix --enable-shared --enable-sparse
$ make
$ make install
...
Making install in swig
gmake[4]: Entering directory '/home/szampini/Devel/jointinversion/pkgs/petsc/arch-joint/externalpackages/ADOL-C-2.7.2/ADOL-C/swig'
CXX=mpicxx /usr/bin/python setup.py install --prefix=/home/szampini/Devel/jointinversion/pkgs/petsc/arch-joint --only-swig
running install
running build
running build_lib
skipping build of ADOL-C
running build_ext
prefix = /home/szampini/adolc_base
Issue created by migration from Trac.
Original creator: rbarnes
Original creation time: 2015-07-13 21:34:35
Assignee: @awalther1
Version:
I have been trying for a few hours to get ColPack to include in the build, but without success.
The ColPack source is now available at (https://github.com/CSCsw/ColPack). I have been modifying a fork of the repository here (https://github.com/CSCsw/ColPack) and the author has been accepting changes, so the code is still active. The code compiles without issues.
However, if I place the compiled code into ThirdParty/ColPack, ADOL-C does not seem able to find it. I suspect the build directories have changed. For instance, the "libs" directory which ADOL-C expects no longer appears. Instead, a ".libs" directory appears.
I am getting the error message above during a 'make install'.
Here are the steps to reproduce the problem
git clone https://github.com/coin-or/ADOL-C.git adolc.git
cd adolc.git
git checkout master
autoreconf --force --install
mkdir build
cd build
../configure \
--prefix=/home/bradbell/prefix/adolc \
--with-colpack=/home/bradbell/prefix/colpack \
--libdir=/home/bradbell/prefix/adolc/lib64 \
--enable-static \
--enable-shared \
--with-cflags='-g -O0' \
--with-cxxflags='-g -O0' \
--enable-docexa \
--enable-addexa
make install
Here is some information about my system:
adolc.git>uname -a
Linux localhost.localdomain 5.3.7-301.fc31.x86_64 #1 SMP Mon Oct 21 19:18:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
adolc.git>git show-ref master
34227950ffac4619183932dc26eb735d1eb182cf refs/heads/master
adolc.git>python --version
Python 3.7.4
adolc.git>find . -name setup.py
./ADOL-C/swig/setup.py
adolc.git>swig -version
SWIG Version 4.0.1
Compiled with g++ [x86_64-redhat-linux-gnu]
Configured options: +pcre
adolc.git>g++ --version
g++ (GCC) 9.2.1 20190827 (Red Hat 9.2.1-1)
Here is a more complete error message:
cd build
build>make install > junk
/usr/bin/python: can't open file 'setup.py': [Errno 2] No such file or directory
make[3]: *** [Makefile:492: install] Error 2
make[2]: *** [Makefile:560: install-recursive] Error 1
make[1]: *** [Makefile:720: install] Error 2
make: *** [Makefile:536: install-recursive] Error 1
Build with python swig module: no ./configure: line 22356: xno: command not found
(due to python/swig missing)
There is apparently some error in the configure script.
OS: FreeBSD 13
Tickets and wiki from Trac were migrated to this GitHub project and the Trac system was set read-only.
Can you look into cleaning up the wiki pages (https://github.com/coin-or/ADOL-C/wiki), e.g., check formatting errors?
You may also consider to just merge all wiki pages into one README.md, committed to the code git repository.
Issue created by migration from Trac.
Original creator: @utke1
Original creation time: 2010-02-17 20:34:17
Assignee: somebody
Version:
e.g. instead of "component1", "component2"
may be
libadolc
examples
documentation
configuration/build
I get the following message when I try to compile the current master:
ADOL-C/src/uni5_for.c:3298:28: error: 'j' undeclared (first use in this function)
3298 | for (j=0;j<i;j++)
... snip ...
These errors do not occur if one goes back to the commit just before
ac15412
I was able to fix these these errors with the following sed command in the top source directory for the project:
sed -i ADOL-C/src/uni5_for.c -e 's|for (\([ij]\)=|for(int \1=|'
Issue created by migration from Trac.
Original creator: yurivict
Original creation time: 2020-01-27 08:10:15
Assignee: @awalther1
Version:
config.status: creating ADOL-C/examples/additional_examples/param/Makefile
config.status: creating ADOL-C/test/Makefile
config.status: error: cannot find input file: `ADOL-C/swig/Makefile.in'
===> Script "configure" failed unexpectedly.
FreeBSD 12
My use case is a multi-process parallel task each of which runs several derivative computations (gradient, Jacobian, etc.). Therefore the traces need to be differentiated by process AND by task (i.e. gradient, Jacobian etc.). Even if I assumed that I could use the process ID to distinguish traces between the processes, then the current type for the trace tag does not provide sufficient values to also distinguish by task inside each process. So, I would rather take a constant tag for each trace associated with a given process process but place them in a subdirectory named by process ID e.g. /tmp/traces_
Hence the request for such an interface to set the directory name.
This was copied from gitlab where the issue had been opened on March 17, 2016
Hello all,
I found a presentation on the internet concerning this project, and it was mentioned there that's there's a possibilty to integrate ADOL-C in Matlab.Unfortunately, I've found no implementable possibilities yet. I plan to use this in a project concerning non linear control systems (Lie derivative etc).
I'd appreciate any contribtutions/further suggestions.
Thanks
Issue created by migration from Trac.
Original creator: rucarden
Original creation time: 2012-01-25 20:59:06
Assignee: @awalther1
Version: 2.0
Keywords: tapedoc
"extern fctn", "ignore\\_me"
fprintf(fp," %i & %i & %i & start of tape & & & & & & & & & & \\\\ \\hline \n",op_cnt, rev_op_cnt,opcode);
fprintf(fp," %i & %i & %i & start of tape & & & & & & & \\\\ \\hline \n",op_cnt, rev_op_cnt,opcode);
The liborpar
example in ADOL-C/examples/additional_examples/openmp_exam often fails with an error message like:
ADOL-C error: forward sweep on tape 12 aborted!
Number of dependent(1) and/or independent(120) variables passed to forward is
inconsistent with number recorded on tape (1, 112)
terminate called after throwing an instance of 'FatalError'
what(): errorcode=-1 function=zos_forward file=./uni5_for.c line=1112 what=
Aborted
Running the example through ThreadSanitizer hints at data races in ADOL-C/src/tape_handling.cpp.
The following is an excerpt from the full log file for quick reference:
==================
WARNING: ThreadSanitizer: data race (pid=2993043)
Write of size 1 at 0x7f858c6ccaea by main thread:
#0 beginParallel() ../../../../ADOL-C/src/tape_handling.cpp:1227 (libadolc.so.2+0x32323)
#1 ADOLC_OpenMP::ADOLC_OpenMP(ADOLC_OpenMP const&) ../../../../ADOL-C/include/adolc/adolc_openmp.h:36 (liborpar+0x4
02b19)
#2 main._omp_fn.0 ../../../../ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp:166 (liborpar+0x402b19)
#3 GOMP_parallel ../../../libgomp/parallel.c:178 (libgomp.so.1+0x15295)
#4 __libc_start_main ../csu/libc-start.c:308 (libc.so.6+0x24082)
Previous read of size 1 at 0x7f858c6ccaea by thread T3:
#0 beginParallel() ../../../../ADOL-C/src/tape_handling.cpp:1229 (libadolc.so.2+0x31969)
#1 ADOLC_OpenMP::ADOLC_OpenMP(ADOLC_OpenMP const&) ../../../../ADOL-C/include/adolc/adolc_openmp.h:36 (liborpar+0x4
02b19)
#2 main._omp_fn.0 ../../../../ADOL-C/examples/additional_examples/openmp_exam/liborpar.cpp:166 (liborpar+0x402b19)
#3 gomp_thread_start ../../../libgomp/team.c:125 (libgomp.so.1+0x1da55)
Location is global 'waitForMaster_begin' of size 1 at 0x7f858c6ccaea (libadolc.so.2+0x000000177aea)
Thread T3 (tid=2993063, running) created by main thread at:
#0 pthread_create ../../../../libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x5edc5)
#1 gomp_team_start ../../../libgomp/team.c:845 (libgomp.so.1+0x1e06b)
#2 __libc_start_main ../csu/libc-start.c:308 (libc.so.6+0x24082)
SUMMARY: ThreadSanitizer: data race ../../../../ADOL-C/src/tape_handling.cpp:1227 in beginParallel()
==================
I am trying to get an openmp for loop with reduction to compile and run. Based on the documentation and examples I would have thought something like:
#pragma omp parallel for reduction(+:y) ADOLC_OPENMP
for ( i = 0 ; i < n ; i++ ) {
y += x[i]*x[i];
y+= cos(x[i]);
}
would work, but the g++ compiler complains:
error: user defined reduction not found for ‘y’
so it's not figuring out how to reduce y...
playing around with things:
#pragma omp ADOLC_OPENMP parallel for reduction(+:y)
for ( i = 0 ; i < n ; i++ ) {
y += x[i]*x[i];
y+= cos(x[i]);
}
does compile and run (correctly it seems), but is only using a single processor.
If I just ignore the reduction (yes, it will be wrong) and go back to the original syntax:
#pragma omp parallel for ADOLC_OPENMP
for ( i = 0 ; i < n ; i++ ) {
y += x[i]*x[i];
y+= cos(x[i]);
}
will compile (no error: user defined reduction not found for ‘y’ ), and it does use all the threads given it...but of course it gives the incorrect answer.
Is ADOL-C forcing the reduction down to 1 thread? And am I employing the syntax correctly?
Hello. I have encountered this red warning when I configure during the installation.
Compressed sparse structures will not be available
Only sparsity patterns can be computed.
I think I have correctly installed the ColPack Library in the default path. I dont know why this happens.
It seems that i will not be able to use the sparse AD.
Please forrgive me if this question is naive. I'm quite new to this.
Thanks a lot. Best wishes.
This is with: ac89ea4
checking for ColPack/ColPackHeaders.h... yes
./configure: 18943: Syntax error: Bad for loop variable
workaround:
diff --git a/configure b/configure
index b929859b..81842168 100755
--- a/configure
+++ b/configure
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /usr/bin/env bash
# From configure.ac Revision.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for adolc 2.7.3-trunk.
cc: @caidao22
I notice in you swig interface code
https://github.com/coin-or/ADOL-C/blob/master/ADOL-C/swig/adolc-python.i
at line number 442
adub* __rdiv__ (double a) {
return (adub*) (a / (*($self)));
}
This no longer works in python3; see
https://stackoverflow.com/questions/34344025/have-the-rdiv-and-idiv-operators-changed-in-python-3-x
I have error with boost library:
checking whether errno is thread save... no
checking which flag to use to enable OpenMP... -fopenmp
checking for boostlib >= 1.54... yes
checking boost/pool/pool_alloc.hpp usability... yes
checking boost/pool/pool_alloc.hpp presence... yes
checking for boost/pool/pool_alloc.hpp... yes
checking whether the Boost::System library is available... yes
configure: error: Could not find a version of the library!
but if I have --with-boost=no
the compilation is OK.
Issue created by migration from Trac.
Original creator: ad007804
Original creation time: 2013-03-22 20:32:37
Assignee: @awalther1
Version:
Keywords: advector
Hi,
I am trying to use the new advector.h from the 2.4.1 version. My intel compiler mpiicpc complains about ambiguous vector definition at lines 115, 117 & 118. It fixed it in my version by adding std:: in from of the vector.
It crashes since we already defined a C struct named exactly vector in our code.
Please advise if you had a better idea for a fix,
thank you,
Antoine
Can you point where one can get sources? If it's impossible, maybe bundle it?
Do you need to support AMPI integration? Are there anywhere a supported version of AMPI? Are there alternatives?
Maybe AMPI support can be dropped?
I get the following warning when I build adolc using g++ 10.2.1:
../../../../ADOL-C/src/tapedoc/tapedoc.c: In function ‘filewrite_start’:
../../../../ADOL-C/src/tapedoc/tapedoc.c:57:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
57 | strncpy(fileName, baseName, strlen(baseName));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ADOL-C/src/tapedoc/tapedoc.c:59:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
59 | strncpy(fileName+strlen(baseName)+num, extension, strlen(extension));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Issue created by migration from Trac.
Original creator: ad007804
Original creation time: 2013-03-22 13:15:11
Assignee: @awalther1
Version:
Keywords: sparce jacobian
Hi,
I am a new user of the ADOL-C library.
I am trying to solve the jacobian of a residual function in my structured CFD solver. In my application, I have 5 dependent variables and roughly 1700 independent variables. The number of non-zero values in the jacobian matrix is roughly 200, hence the usage of the sparse_jac driver.
The jacobian driver works perfectly fine, but I obtain inf's and nan's in the non-zeros values array. Note that the row and column index arrays are fine when compared to the entire matrix output of the jacobian driver. I tried changing the option array without success.
I was using version 2.3.0 and recently upgraded to 4.3.1 with the same behavior.
Can you please help me with my problem?
Thank you for your time,
Antoine
Issue created by migration from Trac.
Original creator: zampanteymedio
Original creation time: 2015-02-27 11:24:22
Assignee: @awalther1
Version: 2.0
I didn't know how to contact you, so I'm opening a ticket.
I have a function f(x). I have another function g(x) which is a function of f(x) and its partial derivatives. I want the derivatives of g(x).
My first guess was to add f(x) into a tape, then add g(x) into another tape that uses the first tape. I couldn´t find any method to retrieve the partials of f(x) as adouble... How can I do that? Is there another way to obtain the derivatives of g(x)?
Thanks!
libtool: link: c++ -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -fstack-protector-strong -o .libs/fminmax fminmax.o -L/usr/local/lib -lboost_system ../.libs/libadolc.so -lColPack -lm -Wl,-rpath -Wl,/usr/local/lib
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::RecoveryCore::RecoveryCore() [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::RecoveryCore::~RecoveryCore() [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::HessianRecovery::DirectRecover_CoordinateFormat_usermem(ColPack::GraphColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::HessianRecovery::DirectRecover_CoordinateFormat_unmanaged(ColPack::GraphColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::HessianRecovery::IndirectRecover_CoordinateFormat_usermem(ColPack::GraphColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::HessianRecovery::IndirectRecover_CoordinateFormat_unmanaged(ColPack::GraphColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::JacobianRecovery1D::RecoverD2Cln_CoordinateFormat_usermem(ColPack::BipartiteGraphPartialColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::JacobianRecovery1D::RecoverD2Row_CoordinateFormat_usermem(ColPack::BipartiteGraphPartialColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::JacobianRecovery1D::RecoverD2Cln_CoordinateFormat_unmanaged(ColPack::BipartiteGraphPartialColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
ld: error: ../.libs/libadolc.so: undefined reference to ColPack::JacobianRecovery1D::RecoverD2Row_CoordinateFormat_unmanaged(ColPack::BipartiteGraphPartialColoringInterface*, double**, unsigned int**, unsigned int**, unsigned int**, double**) [--no-allow-shlib-undefined]
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Version: 2.7.2
Colpack: 1.0.10.249 (latest github hash)
Issue created by migration from Trac.
Original creator: @utke1
Original creation time: 2013-11-12 15:09:45
Assignee: @awalther1
Version:
ADOL-C/examples/Makefile.am: installing `autoconf/depcomp'
In file included from adouble_tl.cpp:24:0:
../../ADOL-C/include/adolc/adtl.h: In function 'void adtl::setNumDir(size_t)':
../../ADOL-C/include/adolc/adtl.h:296:262: warning: unknown conversion type character 0xa in format [-Wformat]
../../ADOL-C/include/adolc/adtl.h: In function 'void adtl::setMode(adtl::Mode)':
../../ADOL-C/include/adolc/adtl.h:307:260: warning: unknown conversion type character 0xa in format [-Wformat]
After configuring with the following
./configure --enable-sparse --with-openmp-flag=-qopenmp --enable-docexa --enable-addexa --enable-parexa --with-colpack=/opt/ColPack
After invoking make I get the following error
make[5]: Entering directory '/home/panos/Applications/ADOL-C/ADOL-C/src/drivers'
CC drivers.lo
CC driversf.lo
CC odedrivers.lo
CC odedriversf.lo
CC psdrivers.lo
psdrivers.c(177): error: expected a "}"
compilation aborted for psdrivers.c (code 2)
make[5]: *** [Makefile:440: psdrivers.lo] Error 1
I tried with both icc and gcc. Same error.
Issue created by migration from Trac.
Original creator: chrschul
Original creation time: 2016-09-21 00:52:33
Assignee: @awalther1
Version: 2.0
Keywords: tensor bug
Hi,
I use windows, c++ and visual studio. The tensor_eval function does not work for the taylor example. I could run it by changing the following lines (858-864) in the function definition in taylor.c:
old:
free((char*) jm);
free((char*) X);
free((char) X);
free((char) X);
free((char) *Y);
free((char) Y);
free((char) Y);
new:
free((char*) jm);
//free((char*) X);
//free((char) X);
free((char) X);
//free((char) *Y);
//free((char) Y);
free((char) Y);
The configure script does not allow users to disable external packages such as ColPack and swig. The option --without-colpack
does not stop configure looking for ColPack at default locations. This issue makes package management really hard on the user side. It would be nice to have an API that disables auto-guessing in the configure script.
Issue created by migration from Trac.
Original creator: @utke1
Original creation time: 2010-02-10 22:32:02
Assignee: somebody
Version:
when configure e.g. with -O0 then the compile command still contains (later in the command)-O2 which
configure -h shows as the default:
--with-cflags=FLAGS use CFLAGS=FLAGS (default: -O2)
--with-cxxflags=FLAGS use CXXFLAGS=FLAGS (default: -O2)
e.g. compile string:
gcc -DHAVE_CONFIG_H -I. -I. -I. -I../.. -I../.. -g -O0 -pedantic -ansi -Wall -DADOLC_INTERNAL=1 -g -O2 -MT hos_forward.lo -MD -MP -MF .deps/hos_forward.Tpo -c hos_forward.c -fPIC -DPIC -o .libs/hos_forward.o
Issue created by migration from Trac.
Original creator: schulz
Original creation time: 2010-01-21 22:55:46
Assignee: somebody
Version:
Hy,
I'm trying to compile the 2.1.2 adolc version under windows xp,
when running the comp_win.bat, I get:
Syntax error: end of file unexpected (expecting "then")
make: *** [library] Error 2
Do I have to make any changes to the script?
Thank You,
Christian
Hi,
I am trying to compile adol-c on a linux system (CentOS 7.9) and after configuring the build with
./configure --prefix=/cluster/apps/nss/gcc-6.3.0/adol-c/2.7.2/x86_64 --enable-shard --enable-sparse --enable-atrig-erf
and when compiling the code afterwards, it always fails with the error "ld: cannot find -link":
/bin/sh ../libtool --tag=CXX --mode=link /cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/bin/g++ -g -O2 -version-info 4:0:2 -no-undefined -o libadolc.la -rpath /cluster/apps/nss/gcc-6.3.0/adol-c/2.7.2/x86_64/lib64 dummy.lo src/libadolcsrc.la src/drivers/libdrivers.la src/tapedoc/libtapedoc.la src/lie/liblie.la src/sparse/libsparse.la -lm
libtool: link: /cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/bin/g++ -o .libs/libadolc.so.2.2.0 .libs/dummy.o -Wl,--whole-archive src/.libs/libadolcsrc.a src/drivers/.libs/libdrivers.a src/tapedoc/.libs/libtapedoc.a src/lie/.libs/liblie.a src/sparse/.libs/libsparse.a -Wl,--no-whole-archive -g -O2 `echo " -Wl,-rpath -Wl,/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/../lib64 -Wl,-rpath -Wl,/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/../lib64 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib64/../lib64 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/../lib64 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/gcc/x86_64-pc-linux-gnu/6.3.0 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib64 -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib -L/cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../.. /cluster/spack/apps/linux-centos7-x86_64/gcc-4.8.5/gcc-6.3.0-sqhtfh32p5gerbkvi5hih7cfvcpmewvj/lib/../lib64/libstdc++.so -lm -lc -lgcc_s" | /cluster/apps/sfos/bin/sed -e 's/ -lc$//'` -link -dll
/cluster/apps/sfos/bin/ld: cannot find -link
For some reason the linker is not correctly recognized by the configure script and therefore the options "-link -dll" are added.
Best regards
Sam
When calling setNumDir
in a C++ code, I always get this warning
ADOL-C Warning: Tapeless: Setting numDir could change memory allocation of
derivatives in existing adoubles and may lead to erronious results
or memory corruption
The code however runs fine. Is there any potential issue with the warning above? Using a small test case, the warning does not occur. Therefore, I don't know where this can come from. Do you have idea to avoid this warning?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.