GithubHelp home page GithubHelp logo

coin-or / adol-c Goto Github PK

View Code? Open in Web Editor NEW
130.0 130.0 25.0 64.74 MB

A Package for Automatic Differentiation of Algorithms Written in C/C++

License: Other

Makefile 1.60% CMake 0.07% C 33.28% C++ 51.35% TeX 8.45% Cuda 0.31% Shell 0.09% SWIG 2.56% Python 0.67% R 0.01% M4 1.61%

adol-c's Introduction

coin-or

Repository for organization-wide discussions and other organization documents.

adol-c's People

Contributors

aburch avatar andrewshadura avatar awalther1 avatar barak avatar barrysmith avatar cgraeser avatar kkulshre avatar mladenbanovic avatar osander1 avatar svigerske avatar utke1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adol-c's Issues

Warning in calling setNumDir

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?

changing revreal to float gives bad numerical results

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.

comp_win problem

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

Linker error using fixpoint iteration abilities

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

Cannot disable external packages

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.

trac: define some meaningfull components

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

make fail cause not include <algorithm>

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

Failed to compile

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.

OpenMP and tensor_eval()

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

安装,在make的时候出现如下错误

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

possible bug in tensor evaluation

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);

breakage on freebsd due to bash code in configure script

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.

config.log

cc: @caidao22

Sparse jacobian: inf's and nan's in non-zero values array

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

cleanup wiki pages

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.

boost and mingw64 (msys)

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.

strncpy bound depends on the length of the source

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));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Memory problems with sparse jacobian

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.

Additional information

OS: Debian 10
Adol-C version: tested with v2.6.3 and with the current master branch (9d229164)

How to cross-compile ADOL-C to arm linux

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

boost-test-adolc Fails with absolute value exceeding tolerance

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"

Need an API to set the directory for trace files on the fly (immediately prior to trace_on) - transferred issue from gitlab

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

2.7.2 prefix install fails

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

OPENMP for loop with reduction

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?

Build fails with ColPack

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)

advector.h: ambiguous vector definition

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

call of overloaded 'fmax(double&, double&)' is ambiguous

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:

  • gcc 4.4.3
  • ADOL-C 2.1.10

configure mistakenly adding "-link -dll" option on a linux system lead to errors

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

Data races in OpenMP thread-parallel implementation

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()
==================

Configuration/Build: advertised override of compile flags using --with-cflags / --with-cxxflags does not work

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

format compile warnings in adtl

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]

ColPack detection on MacOS / g++ 10.1 gets confused

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

  • forcing ColPack detecting in configure.ac
  • removing #defines for calloc, malloc, and realloc in config.h
  • disabling the reverse #defined in common.h inside the ADOLC_NO_MALLOC block

ADOL-C thread safety

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:

vector<TapeInfos *> ADOLC_TAPE_INFOS_BUFFER_DECL;
/* stack of pointers to tape infos
* represents the order of tape usage when doing nested taping */
stack<TapeInfos *> ADOLC_TAPE_STACK_DECL;
/* the main tape info buffer and its fallback */
TapeInfos ADOLC_CURRENT_TAPE_INFOS_DECL;
TapeInfos ADOLC_CURRENT_TAPE_INFOS_FALLBACK_DECL;
/* global tapeing variables */
GlobalTapeVars ADOLC_GLOBAL_TAPE_VARS_DECL;

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.

python build fails: error: command 'swig' failed with exit status 1

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

Use tape within a tape definition

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!

Preprocessor should not check if C++11 is available

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

AMPI upstream repository is dead

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?

can't open file 'setup.py'

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

ColPack folder structure does not match ColPack.vcxproj

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:

  • GraphColoring vs. GeneralGraphColoring
  • Main vs inc (inc is also in ColPack/inc and not in ColPack/src/main)

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.

Output tape to c or C++ file

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.

ADOL-C installation macbook

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!

tapedoc typos

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

Noticed the following typo while testing out the extern_fctn features. It leads to tex files that do not compile on account of the underscore and the missing comma.
107,108c107,108
< "extern fctn"
< "ignore_me"

                   "extern fctn",
                   "ignore\\_me"

The following typo leads to their being too few columns on the second line of the table produced by tapedoc.
141c141,142
< fprintf(fp," %i & start of tape & & & & & & & & & & \\ \hline \n",opcode);

fprintf(fp," %i & %i & %i & start of tape & & & & & & & & & & \\\\ \\hline \n",op_cnt, rev_op_cnt,opcode);

145c146
< fprintf(fp," %i & start of tape & & & & & & & \\ \hline \n",opcode);

fprintf(fp," %i & %i & %i & start of tape & & & & & & & \\\\ \\hline \n",op_cnt, rev_op_cnt,opcode);

ColPack inclusion doesn't work

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.

Implementation in Matlab

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

uni5_for.c:3298:28: error: 'j' undeclared

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=|'

Visual Studio 2008 Project Files

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.

about Compressed sparse installation

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.
2020-03-27 14-18-57屏幕截图

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.