Changeset 16242


Ignore:
Timestamp:
09/24/13 13:25:58 (11 years ago)
Author:
Eric.Larour
Message:

CHG fixing check + verbosing tape statistics

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/ad_core.cpp

    r16229 r16242  
    4141
    4242                #ifdef _HAVE_ADOLC_
     43                        if(VerboseAutodiff())_printf0_("   start ad core\n");
    4344
    4445                        /*First, stop tracing: */
    4546                        trace_off();
    4647
    47                         /*preliminary checks: */
     48                        /*retrieve num_dependents and num_independents only on rank 0: */
    4849                        if (my_rank==0) {
    4950                                femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
    5051                                femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
    51                                 if(!(num_dependents*num_independents)) return;
    5252                        }
    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
    5579
    5680                        /*retrieve state variable: */
     
    7397                        anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m);
    7498
    75                         if (strcmp(driver,"fos_forward")==0){
     99                        if (strcmp(driver,"fos_forward")==0){ /*{{{*/
    76100
    77101                                int     anIndepIndex;
     
    110134                                xDelete(jacTimesTangentDir);
    111135                                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)){ /*{{{*/
    114138
    115139                                int      tangentDirNum;
     
    181205                                xDelete(jacTimesSeed);
    182206                                xDelete(indepIndices);
    183                         }
    184                         else if (strcmp(driver,"fos_reverse")==0) {
     207                        } /*}}}*/
     208                        else if (strcmp(driver,"fos_reverse")==0) { /*{{{*/
    185209
    186210                                int     aDepIndex=0;
     
    219243                                xDelete(weightVectorTimesJac);
    220244                                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)){ /*{{{*/
    223247
    224248                                int* depIndices=NULL;
     
    246270
    247271                                /*set the forward method function pointers: */
    248 #ifdef _HAVE_GSL_
     272                                #ifdef _HAVE_GSL_
    249273                                anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
    250 #endif
     274                                #endif
    251275
    252276                                /*allocate the space for the parameters to invoke the EDF fos_reverse :*/
     
    282306                                xDelete(weightsTimesJac);
    283307                                xDelete(depIndices);
    284                         }
     308                        } /*}}}*/
    285309                        else _error_("driver: " << driver << " not yet supported!");
    286310
     
    297321                        xDelete(anEDF_for_solverx_p->dpp_Z);
    298322
    299                         /*Print statistics:*/
    300                         tapestats(my_rank,tape_stats); //reading of tape statistics
    301                         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                         }
    310323                        if(VerboseAutodiff())_printf0_("   end AD core\n");
    311324
Note: See TracChangeset for help on using the changeset viewer.