Changeset 12696


Ignore:
Timestamp:
07/23/12 16:24:52 (13 years ago)
Author:
Eric.Larour
Message:

Generalized profiling in issm.cpp to be applicable even when Petsc is not available.
Concentrated all profiling stuff in two routines, ProfilingStart and ProfilingEnd.

Location:
issm/trunk-jpl/src
Files:
7 added
4 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r12677 r12696  
    149149        SettingsResultsAsPatchesEnum,
    150150        SettingsWaitonlockEnum,
    151         DebugPetscProfilingEnum,
    152         PetscProfilingCurrentMemEnum,
    153         PetscProfilingCurrentFlopsEnum,
    154         PetscProfilingSolutionTimeEnum,
     151        DebugProfilingEnum,
     152        ProfilingCurrentMemEnum,
     153        ProfilingCurrentFlopsEnum,
     154        ProfilingSolutionTimeEnum,
    155155        MaxIterationConvergenceFlagEnum,
    156156        SteadystateMaxiterEnum,
  • issm/trunk-jpl/src/c/Makefile.am

    r12677 r12696  
    209209                                        ./shared/Wrapper/ModuleBoot.cpp\
    210210                                        ./shared/Wrapper/ModuleEnd.cpp\
     211                                        ./shared/Sys/sys.h\
     212                                        ./shared/Sys/ProfilingStart.cpp\
     213                                        ./shared/Sys/ProfilingEnd.cpp\
    211214                                        ./toolkits/metis/metisincludes.h\
    212215                                        ./toolkits/issm/issmtoolkit.h\
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r12677 r12696  
    154154                case SettingsResultsAsPatchesEnum : return "SettingsResultsAsPatches";
    155155                case SettingsWaitonlockEnum : return "SettingsWaitonlock";
    156                 case DebugPetscProfilingEnum : return "DebugPetscProfiling";
    157                 case PetscProfilingCurrentMemEnum : return "PetscProfilingCurrentMem";
    158                 case PetscProfilingCurrentFlopsEnum : return "PetscProfilingCurrentFlops";
    159                 case PetscProfilingSolutionTimeEnum : return "PetscProfilingSolutionTime";
     156                case DebugProfilingEnum : return "DebugProfiling";
     157                case ProfilingCurrentMemEnum : return "ProfilingCurrentMem";
     158                case ProfilingCurrentFlopsEnum : return "ProfilingCurrentFlops";
     159                case ProfilingSolutionTimeEnum : return "ProfilingSolutionTime";
    160160                case MaxIterationConvergenceFlagEnum : return "MaxIterationConvergenceFlag";
    161161                case SteadystateMaxiterEnum : return "SteadystateMaxiter";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r12677 r12696  
    5757        parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyFactorEnum));
    5858        parameters->AddObject(iomodel->CopyConstantObject(SettingsLowmemEnum));
    59         parameters->AddObject(iomodel->CopyConstantObject(DebugPetscProfilingEnum));
     59        parameters->AddObject(iomodel->CopyConstantObject(DebugProfilingEnum));
    6060        parameters->AddObject(iomodel->CopyConstantObject(MeshAverageVertexConnectivityEnum));
    6161        parameters->AddObject(iomodel->CopyConstantObject(ConstantsReferencetemperatureEnum));
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r12684 r12696  
    158158              else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;
    159159              else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
    160               else if (strcmp(name,"DebugPetscProfiling")==0) return DebugPetscProfilingEnum;
    161               else if (strcmp(name,"PetscProfilingCurrentMem")==0) return PetscProfilingCurrentMemEnum;
    162               else if (strcmp(name,"PetscProfilingCurrentFlops")==0) return PetscProfilingCurrentFlopsEnum;
    163               else if (strcmp(name,"PetscProfilingSolutionTime")==0) return PetscProfilingSolutionTimeEnum;
     160              else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
     161              else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
     162              else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;
     163              else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
    164164              else if (strcmp(name,"MaxIterationConvergenceFlag")==0) return MaxIterationConvergenceFlagEnum;
    165165              else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
  • issm/trunk-jpl/src/c/shared/shared.h

    r12435 r12696  
    99#include "Alloc/alloc_module.h"
    1010#include "Alloc/xNewDelete.h"
    11 #include "MemOps/xMemCpy.h"
     11#include "Bamg/shared.h"
     12#include "Elements/elements.h"
    1213#include "Exceptions/exceptions.h"
    1314#include "Exp/exp.h"
     15#include "Matrix/matrix.h"
     16#include "MemOps/xMemCpy.h"
     17#include "Numerics/numerics.h"
     18#include "Sorting/sorting.h"
     19#include "Sys/sys.h"
     20#include "Threads/issm_threads.h"
    1421#include "TriMesh/trimesh.h"
    15 #include "Sorting/sorting.h"
    16 #include "Elements/elements.h"
    17 #include "Matrix/matrix.h"
    18 #include "Numerics/numerics.h"
    19 #include "Threads/issm_threads.h"
    20 #include "Bamg/shared.h"
    2122#include "Wrapper/wrappershared.h"
    2223
  • issm/trunk-jpl/src/c/solutions/issm.cpp

    r12655 r12696  
    3535        int      ierr;
    3636
    37         /*PETSc profiling*/   
    38         bool petsc_profiling = false;
    39         PetscLogDouble petscTime_start, petscTime_finish;
    40         PetscLogDouble petsc_memUse, petscFlops_start, petscFlops_finish;
     37        /*profiling*/   
     38        bool profiling = false;
     39        IssmPDouble Time_start, Flops_start;
     40        IssmPDouble Solution_time, Memory_use, Current_flops;
    4141
    4242        ISSMBOOT();
     
    9999        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
    100100        femmodel->parameters->FindParam(&tao_analysis,InversionTaoEnum);
    101    femmodel->parameters->FindParam(&petsc_profiling,DebugPetscProfilingEnum);
     101        femmodel->parameters->FindParam(&profiling,DebugProfilingEnum);
    102102
    103103        #ifdef _HAVE_MPI_
     
    114114        #endif
    115115       
    116         if(petsc_profiling){
    117                 PetscGetTime(&petscTime_start);
    118                 PetscGetFlops(&petscFlops_start);
    119         }
     116        if(profiling)ProfilingStart(&Time_start,&Flops_start);
    120117
    121118        if(dakota_analysis){
     
    140137        }
    141138
    142         if(petsc_profiling){
    143                 PetscGetTime(&petscTime_finish);
    144                 PetscGetFlops(&petscFlops_finish);
    145                 PetscMemoryGetCurrentUsage(&petsc_memUse);
    146 
    147                 _pprintLine_("PETSc elapsed time  : " << (petscTime_finish-petscTime_start) << "  Seconds");
    148                 _pprintLine_("PETSc elapsed flops : " << (petscFlops_finish-petscFlops_start) << "  Flops");
    149                 _pprintLine_("PETSc memory used   : " << petsc_memUse << "  Bytes");
    150                
    151                 femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingSolutionTimeEnum, (petscTime_finish-petscTime_start), 1, 0));
    152                 femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingCurrentMemEnum, petsc_memUse, 1, 0));
    153                 femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, PetscProfilingCurrentFlopsEnum, (petscFlops_finish-petscFlops_start), 1, 0));
    154         }
     139        if(profiling){
     140                ProfilingEnd(&Solution_time,&Memory_use,&Current_flops,Time_start,Flops_start);
     141                femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, ProfilingSolutionTimeEnum, Solution_time, 1, 0));
     142                femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, ProfilingCurrentMemEnum, Memory_use, 1, 0));
     143                femmodel->results->AddObject(new DoubleExternalResult(femmodel->results->Size()+1, ProfilingCurrentFlopsEnum, Current_flops, 1, 0));
     144        }
     145
    155146
    156147        #ifdef _HAVE_MPI_
  • issm/trunk-jpl/src/m/classes/debug.m

    r11958 r12696  
    88                valgrind = false;
    99                gprof    = false;
    10                 petsc_profiling = false;
     10                profiling = false;
    1111        end
    1212        methods
     
    2727                        fielddisplay(obj,'valgrind','use Valgrind to debug (0 or 1)');
    2828                        fielddisplay(obj,'gprof','use gnu-profiler to find out where the time is spent');
    29                         fielddisplay(obj,'petsc_profiling','enables PETSc profiling (memory, flops, time)');
     29                        fielddisplay(obj,'profiling','enables profiling (memory, flops, time)');
    3030
    3131                end % }}}
    3232                function marshall(obj,fid) % {{{
    33                         WriteData(fid,'object',obj,'fieldname','petsc_profiling','format','Boolean');
     33                        WriteData(fid,'object',obj,'fieldname','profiling','format','Boolean');
    3434                end % }}}
    3535        end
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r12685 r12696  
    13771377        return StringToEnum('SettingsWaitonlock')
    13781378
    1379 def DebugPetscProfilingEnum():
    1380         """
    1381         DEBUGPETSCPROFILINGENUM - Enum of DebugPetscProfiling
    1382 
    1383            Usage:
    1384               macro=DebugPetscProfilingEnum()
    1385         """
    1386 
    1387         return StringToEnum('DebugPetscProfiling')
    1388 
    1389 def PetscProfilingCurrentMemEnum():
    1390         """
    1391         PETSCPROFILINGCURRENTMEMENUM - Enum of PetscProfilingCurrentMem
    1392 
    1393            Usage:
    1394               macro=PetscProfilingCurrentMemEnum()
    1395         """
    1396 
    1397         return StringToEnum('PetscProfilingCurrentMem')
    1398 
    1399 def PetscProfilingCurrentFlopsEnum():
    1400         """
    1401         PETSCPROFILINGCURRENTFLOPSENUM - Enum of PetscProfilingCurrentFlops
    1402 
    1403            Usage:
    1404               macro=PetscProfilingCurrentFlopsEnum()
    1405         """
    1406 
    1407         return StringToEnum('PetscProfilingCurrentFlops')
    1408 
    1409 def PetscProfilingSolutionTimeEnum():
    1410         """
    1411         PETSCPROFILINGSOLUTIONTIMEENUM - Enum of PetscProfilingSolutionTime
    1412 
    1413            Usage:
    1414               macro=PetscProfilingSolutionTimeEnum()
    1415         """
    1416 
    1417         return StringToEnum('PetscProfilingSolutionTime')
     1379def DebugProfilingEnum():
     1380        """
     1381        DEBUGPROFILINGENUM - Enum of DebugProfiling
     1382
     1383           Usage:
     1384              macro=DebugProfilingEnum()
     1385        """
     1386
     1387        return StringToEnum('DebugProfiling')
     1388
     1389def ProfilingCurrentMemEnum():
     1390        """
     1391        PROFILINGCURRENTMEMENUM - Enum of ProfilingCurrentMem
     1392
     1393           Usage:
     1394              macro=ProfilingCurrentMemEnum()
     1395        """
     1396
     1397        return StringToEnum('ProfilingCurrentMem')
     1398
     1399def ProfilingCurrentFlopsEnum():
     1400        """
     1401        PROFILINGCURRENTFLOPSENUM - Enum of ProfilingCurrentFlops
     1402
     1403           Usage:
     1404              macro=ProfilingCurrentFlopsEnum()
     1405        """
     1406
     1407        return StringToEnum('ProfilingCurrentFlops')
     1408
     1409def ProfilingSolutionTimeEnum():
     1410        """
     1411        PROFILINGSOLUTIONTIMEENUM - Enum of ProfilingSolutionTime
     1412
     1413           Usage:
     1414              macro=ProfilingSolutionTimeEnum()
     1415        """
     1416
     1417        return StringToEnum('ProfilingSolutionTime')
    14181418
    14191419def MaxIterationConvergenceFlagEnum():
Note: See TracChangeset for help on using the changeset viewer.