<div dir="ltr">Hello,<div><br></div><div>First thanks a lot for your work on this fantastic library and the really good documentation. I have a few questions about the use of ADOL-C combined with OpenMP.</div><div><br></div><div>I am trying to use ADOL-C for a neural network for an auto-encoder, meaning there are quickly a lot of parameters to deal with. To shorten the computation time I wanted to parallelize the process as I am computing batch of datapoints independently. However I am not sure if it is possible since there is only one taping, can multiple thread access the same tape at the same time? If not what would you suggest.</div><div><br></div><div>Anyway I tried to install ADOL-C with the OpenMP with the -fopenmp flag, configuration was fine but when using make I got </div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><br></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>In file included from tape_handling.cpp:15:0:</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>tape_handling.cpp: In constructor 'Keeper::Keeper()':</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>taping_p.h:372:47: error: 'ADOLC_threadNumber' was not declared in this scope</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div> #define ADOLC_GLOBAL_TAPE_VARS globalTapeVars[ADOLC_threadNumber]</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>                                               ^</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>tape_handling.cpp:1021:17: note: in expansion of macro 'ADOLC_GLOBAL_TAPE_VARS'</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>             if (ADOLC_GLOBAL_TAPE_VARS.initialStoreSize > </div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>                 ^</div></div></blockquote></div><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>Makefile:618: recipe for target 'tape_handling.lo' failed</div></div></blockquote></div></blockquote><div><br></div><div>I solved it by declaring     </div><div>                      ADOLC_OPENMP_THREAD_NUMBER;</div><div>right after the </div><div>                      inline Keeper()</div><div>But I am not sure this is the right solution (anyway it compiles).</div><div><br></div><div>Finally, I copied the example and included</div><div>                      #include <omp.h></div><div>                      #include <adolc/adolc_openmp.h></div><div>and added     #pragma omp parallel ADOLC_OPENMP</div><div>It compiles but when running I get :</div><div>                      Symbol lookup error : undefined symbol : ADOLC_OpenMP_Handler</div><div>By the way I am using gcc for compiling and Code::Blocks for the IDE.</div><div><br></div><div>Thanks for your help!</div><div><br></div><div>Théo Galy-Fajou</div><div><br></div><div><br></div></div>