Changeset 16242
- Timestamp:
- 09/24/13 13:25:58 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/ad_core.cpp
r16229 r16242 41 41 42 42 #ifdef _HAVE_ADOLC_ 43 if(VerboseAutodiff())_printf0_(" start ad core\n"); 43 44 44 45 /*First, stop tracing: */ 45 46 trace_off(); 46 47 47 /* preliminary checks: */48 /*retrieve num_dependents and num_independents only on rank 0: */ 48 49 if (my_rank==0) { 49 50 femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum); 50 51 femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum); 51 if(!(num_dependents*num_independents)) return;52 52 } 53 54 if(VerboseAutodiff())_printf0_(" start ad core\n"); 53 54 /*if we don't have dependents or independents, no point in running ad_core: */ 55 if(!(num_dependents*num_independents)) return; 56 57 /*Print tape statistics so that user can kill this run if something is off already:*/ 58 tapestats(my_rank,tape_stats); //reading of tape statistics 59 if(VerboseAutodiff()){ 60 _printf0_(" ADOLC statistics: \n"); 61 _printf0_(" "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0] << "\n"); 62 _printf0_(" "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1] << "\n"); 63 _printf0_(" "<<setw(45)<<left<<"Maximum number of live active variables: " <<tape_stats[2] << "\n"); 64 _printf0_(" "<<setw(45)<<left<<"Number of values in the taylor (value) stack: " <<tape_stats[3] << "\n"); 65 _printf0_(" "<<setw(45)<<left<<" Number of operations per buffer == OBUFSIZE (usrparms.h) " <<tape_stats[4] << "\n"); 66 _printf0_(" "<<setw(45)<<left<<" overall number of operations " <<tape_stats[5] << "\n"); 67 _printf0_(" "<<setw(45)<<left<<" operations file written or not " <<tape_stats[6] << "\n"); 68 _printf0_(" "<<setw(45)<<left<<" overall number of locations " <<tape_stats[7] << "\n"); 69 _printf0_(" "<<setw(45)<<left<<" locations file written or not " <<tape_stats[8] << "\n"); 70 _printf0_(" "<<setw(45)<<left<<" overall number of values " <<tape_stats[9] << "\n"); 71 _printf0_(" "<<setw(45)<<left<<" values file written or not " <<tape_stats[10] << "\n"); 72 _printf0_(" "<<setw(45)<<left<<" Number of locations per buffer == LBUFSIZE (usrparms.h) " <<tape_stats[11] << "\n"); 73 _printf0_(" "<<setw(45)<<left<<" Number of values per buffer == CBUFSIZE (usrparms.h) " <<tape_stats[12] << "\n"); 74 _printf0_(" "<<setw(45)<<left<<" Number of taylors per buffer <= TBUFSIZE (usrparms.h) " <<tape_stats[13] << "\n"); 75 _printf0_(" "<<setw(45)<<left<<" Number of eq_*_prod for sparsity pattern " <<tape_stats[14] << "\n"); 76 _printf0_(" "<<setw(45)<<left<<" represents the size of the stats vector " <<tape_stats[15] << "\n"); 77 } 78 55 79 56 80 /*retrieve state variable: */ … … 73 97 anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m); 74 98 75 if (strcmp(driver,"fos_forward")==0){ 99 if (strcmp(driver,"fos_forward")==0){ /*{{{*/ 76 100 77 101 int anIndepIndex; … … 110 134 xDelete(jacTimesTangentDir); 111 135 xDelete(tangentDir); 112 } 113 else if ((strcmp(driver,"fov_forward")==0) || (strcmp(driver,"fov_forward_all")==0)){ 136 } /*}}}*/ 137 else if ((strcmp(driver,"fov_forward")==0) || (strcmp(driver,"fov_forward_all")==0)){ /*{{{*/ 114 138 115 139 int tangentDirNum; … … 181 205 xDelete(jacTimesSeed); 182 206 xDelete(indepIndices); 183 } 184 else if (strcmp(driver,"fos_reverse")==0) { 207 } /*}}}*/ 208 else if (strcmp(driver,"fos_reverse")==0) { /*{{{*/ 185 209 186 210 int aDepIndex=0; … … 219 243 xDelete(weightVectorTimesJac); 220 244 xDelete(aWeightVector); 221 } 222 else if ((strcmp(driver,"fov_reverse")==0) || (strcmp(driver,"fov_reverse_all")==0)){ 245 } /*}}}*/ 246 else if ((strcmp(driver,"fov_reverse")==0) || (strcmp(driver,"fov_reverse_all")==0)){ /*{{{*/ 223 247 224 248 int* depIndices=NULL; … … 246 270 247 271 /*set the forward method function pointers: */ 248 #ifdef _HAVE_GSL_272 #ifdef _HAVE_GSL_ 249 273 anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx; 250 #endif274 #endif 251 275 252 276 /*allocate the space for the parameters to invoke the EDF fos_reverse :*/ … … 282 306 xDelete(weightsTimesJac); 283 307 xDelete(depIndices); 284 } 308 } /*}}}*/ 285 309 else _error_("driver: " << driver << " not yet supported!"); 286 310 … … 297 321 xDelete(anEDF_for_solverx_p->dpp_Z); 298 322 299 /*Print statistics:*/300 tapestats(my_rank,tape_stats); //reading of tape statistics301 if(VerboseAutodiff()){302 _printf0_(" ADOLC statistics: \n");303 _printf0_(" "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0] << "\n");304 _printf0_(" "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1] << "\n");305 _printf0_(" "<<setw(45)<<left<<"Maximal number of live active variables: " <<tape_stats[2] << "\n");306 _printf0_(" "<<setw(45)<<left<<"Size of value stack (number of overwrites): " <<tape_stats[3] << "\n");307 _printf0_(" "<<setw(45)<<left<<"Buffer size (a multiple of eight): " <<tape_stats[4] << "\n");308 _printf0_(" "<<setw(45)<<left<<"Total number of operations recorded: " <<tape_stats[5] << "\n");309 }310 323 if(VerboseAutodiff())_printf0_(" end AD core\n"); 311 324
Note:
See TracChangeset
for help on using the changeset viewer.