Remove old profiler.hpp

This commit is contained in:
Matthias Hochsteger 2019-01-07 11:26:46 +01:00
parent baca4a57a0
commit c6a401e066
11 changed files with 29 additions and 302 deletions

View File

@ -1,4 +1,4 @@
Checks: '*,-clang-analyzer-alpha.*,-*braces-around-statements,-fuchsia-*,-google-runtime-references,-readability-implicit-bool-conversion,-google-explicit-constructor,-hicpp-explicit-conversions,-google-runtime-int,-llvm-header-guard,-modernize-pass-by-value,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic' Checks: '*,-clang-analyzer-alpha.*,-*braces-around-statements,-fuchsia-*,-google-runtime-references,-readability-implicit-bool-conversion,-google-explicit-constructor,-hicpp-explicit-conversions,-google-runtime-int,-llvm-header-guard,-modernize-pass-by-value'
CheckOptions: CheckOptions:
- key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
value: 1 value: 1

View File

@ -4,6 +4,7 @@
#include "archive.hpp" #include "archive.hpp"
#include "exception.hpp" #include "exception.hpp"
#include "logging.hpp" #include "logging.hpp"
#include "profiler.hpp"
#include "symboltable.hpp" #include "symboltable.hpp"
#include "version.hpp" #include "version.hpp"

View File

@ -4,7 +4,7 @@
namespace ngcore namespace ngcore
{ {
std::array<NgProfiler::TimerVal,NgProfiler::SIZE> NgProfiler::timers; // NOLINT std::vector<NgProfiler::TimerVal> NgProfiler::timers(NgProfiler::SIZE); // NOLINT
std::string NgProfiler::filename; std::string NgProfiler::filename;

View File

@ -30,7 +30,7 @@ namespace ngcore
int usedcounter = 0; int usedcounter = 0;
}; };
NGCORE_API static std::array<TimerVal,SIZE> timers; NGCORE_API static std::vector<TimerVal> timers;
NGCORE_API static TTimePoint * thread_times; NGCORE_API static TTimePoint * thread_times;
NGCORE_API static TTimePoint * thread_flops; NGCORE_API static TTimePoint * thread_flops;
@ -69,17 +69,17 @@ namespace ngcore
static void StartThreadTimer (size_t nr, size_t tid) static void StartThreadTimer (size_t nr, size_t tid)
{ {
thread_times[tid*SIZE+nr] -= GetTimeCounter(); thread_times[tid*SIZE+nr] -= GetTimeCounter(); // NOLINT
} }
static void StopThreadTimer (size_t nr, size_t tid) static void StopThreadTimer (size_t nr, size_t tid)
{ {
thread_times[tid*SIZE+nr] += GetTimeCounter(); thread_times[tid*SIZE+nr] += GetTimeCounter(); // NOLINT
} }
static void AddThreadFlops (size_t nr, size_t tid, size_t flops) static void AddThreadFlops (size_t nr, size_t tid, size_t flops)
{ {
thread_flops[tid*SIZE+nr] += flops; thread_flops[tid*SIZE+nr] += flops; // NOLINT
} }
/// if you know number of flops, provide them to obtain the MFlop - rate /// if you know number of flops, provide them to obtain the MFlop - rate
@ -123,6 +123,22 @@ namespace ngcore
static std::string GetName (int nr) { return timers[nr].name; } static std::string GetName (int nr) { return timers[nr].name; }
/// print profile /// print profile
NGCORE_API static void Print (FILE * ost); NGCORE_API static void Print (FILE * ost);
class RegionTimer
{
int nr;
public:
/// start timer
RegionTimer (int anr) : nr(anr) { NgProfiler::StartTimer(nr); }
/// stop timer
~RegionTimer () { NgProfiler::StopTimer(nr); }
RegionTimer() = delete;
RegionTimer(const RegionTimer &) = delete;
RegionTimer(RegionTimer &&) = delete;
void operator=(const RegionTimer &) = delete;
void operator=(RegionTimer &&) = delete;
};
}; };
@ -184,8 +200,8 @@ namespace ngcore
~RegionTimer () { timer.Stop(); } ~RegionTimer () { timer.Stop(); }
RegionTimer() = delete; RegionTimer() = delete;
RegionTimer(RegionTimer &&) = delete;
RegionTimer(const RegionTimer &) = delete; RegionTimer(const RegionTimer &) = delete;
RegionTimer(RegionTimer &&) = delete;
void operator=(const RegionTimer &) = delete; void operator=(const RegionTimer &) = delete;
void operator=(RegionTimer &&) = delete; void operator=(RegionTimer &&) = delete;
}; };

View File

@ -1,8 +1,8 @@
add_definitions(-DNGINTERFACE_EXPORTS) add_definitions(-DNGINTERFACE_EXPORTS)
add_library(gen OBJECT add_library(gen OBJECT
array.cpp bitarray.cpp dynamicmem.cpp flags.cpp array.cpp bitarray.cpp dynamicmem.cpp flags.cpp
hashtabl.cpp mystring.cpp ngexception.cpp optmem.cpp parthreads.cpp hashtabl.cpp mystring.cpp optmem.cpp parthreads.cpp
profiler.cpp seti.cpp sort.cpp spbita2d.cpp table.cpp seti.cpp sort.cpp spbita2d.cpp table.cpp
mpi_interface.cpp gzstream.cpp mpi_interface.cpp gzstream.cpp
) )
@ -12,13 +12,11 @@ endif(NOT WIN32)
set_target_properties( gen PROPERTIES POSITION_INDEPENDENT_CODE ON ) set_target_properties( gen PROPERTIES POSITION_INDEPENDENT_CODE ON )
install( FILES ngexception.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE} COMPONENT netgen_devel )
install(FILES install(FILES
array.hpp autodiff.hpp autoptr.hpp bitarray.hpp array.hpp autodiff.hpp autoptr.hpp bitarray.hpp
dynamicmem.hpp flags.hpp hashtabl.hpp mpi_interface.hpp myadt.hpp dynamicmem.hpp flags.hpp hashtabl.hpp mpi_interface.hpp myadt.hpp
ngsimd.hpp mystring.hpp netgenout.hpp ngexception.hpp ngpython.hpp ngsimd.hpp mystring.hpp netgenout.hpp ngpython.hpp
optmem.hpp parthreads.hpp profiler.hpp seti.hpp sort.hpp optmem.hpp parthreads.hpp seti.hpp sort.hpp
spbita2d.hpp stack.hpp table.hpp template.hpp spbita2d.hpp stack.hpp table.hpp template.hpp
gzstream.h gzstream.h
DESTINATION ${NG_INSTALL_DIR_INCLUDE}/general COMPONENT netgen_devel DESTINATION ${NG_INSTALL_DIR_INCLUDE}/general COMPONENT netgen_devel

View File

@ -21,8 +21,8 @@
namespace netgen namespace netgen
{ {
using namespace ngcore; using namespace ngcore;
using NgException = Exception;
} }
#include "ngexception.hpp"
#include "parthreads.hpp" #include "parthreads.hpp"
// #include "moveablemem.hpp" // #include "moveablemem.hpp"
#include "dynamicmem.hpp" #include "dynamicmem.hpp"
@ -43,7 +43,6 @@ namespace netgen
#include "sort.hpp" #include "sort.hpp"
#include "stack.hpp" #include "stack.hpp"
#include "mystring.hpp" #include "mystring.hpp"
#include "profiler.hpp"
#include "mpi_interface.hpp" #include "mpi_interface.hpp"
#include "netgenout.hpp" #include "netgenout.hpp"

View File

@ -1,33 +0,0 @@
/**************************************************************************/
/* File: ngexception.cpp */
/* Author: Joachim Schoeberl */
/* Date: 16. Jan. 02 */
/**************************************************************************/
#include <myadt.hpp>
namespace netgen
{
//using namespace netgen;
NgException :: NgException (const string & s)
: m_what(s)
{
;
}
NgException :: ~NgException ()
{
;
}
/// append string to description
void NgException :: Append (const string & s)
{
m_what += s;
}
}

View File

@ -1,34 +0,0 @@
#ifndef FILE_NGEXCEPTION
#define FILE_NGEXCEPTION
/**************************************************************************/
/* File: ngexception.hpp */
/* Author: Joachim Schoeberl */
/* Date: 16. Jan. 2002 */
/**************************************************************************/
namespace netgen
{
/// Base class for all ng exceptions
class NgException : public std::exception
{
/// verbal description of exception
string m_what;
public:
///
DLL_HEADER NgException (const string & s);
///
DLL_HEADER virtual ~NgException ();
/// append string to description
DLL_HEADER void Append (const string & s);
// void Append (const char * s);
/// verbal description of exception
const string & What() const { return m_what; }
virtual const char* what() const noexcept override { return m_what.c_str(); }
};
}
#endif

View File

@ -1,131 +0,0 @@
/**************************************************************************/
/* File: profiler.cpp */
/* Author: Joachim Schoeberl */
/* Date: 19. Apr. 2002 */
/**************************************************************************/
#include <myadt.hpp>
namespace netgen
{
//using namespace netgen;
long int NgProfiler::tottimes[SIZE];
long int NgProfiler::starttimes[SIZE];
long int NgProfiler::counts[SIZE];
string NgProfiler::names[SIZE];
int NgProfiler::usedcounter[SIZE];
NgProfiler :: NgProfiler()
{
for (int i = 0; i < SIZE; i++)
{
tottimes[i] = 0;
usedcounter[i] = 0;
}
total_timer = CreateTimer ("total CPU time");
StartTimer (total_timer);
}
NgProfiler :: ~NgProfiler()
{
#ifndef PARALLEL
StopTimer (total_timer);
#endif
//ofstream prof;
//prof.open("ng.prof");
// ofstream-constructor may be called after STL-stuff is destructed,
// which leads to an "order of destruction"-problem,
// thus we use the C-variant:
if (getenv ("NGPROFILE"))
{
char filename[100];
#ifdef PARALLEL
sprintf (filename, "netgen.prof.%d", id);
#else
sprintf (filename, "netgen.prof");
#endif
if (id == 0) printf ("write profile to file netgen.prof\n");
FILE *prof = fopen(filename,"w");
Print (prof);
fclose(prof);
}
}
// void NgProfiler :: Print (ostream & prof)
// {
// for (int i = 0; i < SIZE; i++)
// if (counts[i] != 0 || usedcounter[i] != 0)
// {
// prof.setf (ios::fixed, ios::floatfield);
// prof.setf (ios::showpoint);
// prof // << "job " << setw(3) << i
// << "calls " << setw(8) << counts[i]
// << ", time " << setprecision(2) << setw(6) << double(tottimes[i]) / CLOCKS_PER_SEC << " sec";
// if (usedcounter[i])
// prof << " " << names[i];
// else
// prof << " " << i;
// prof << endl;
// }
// }
void NgProfiler :: Print (FILE * prof)
{
for (int i = 0; i < SIZE; i++)
if (counts[i] != 0 || usedcounter[i] != 0)
{
//fprintf(prof,"job %3i calls %8i, time %6.2f sec",i,counts[i],double(tottimes[i]) / CLOCKS_PER_SEC);
#ifndef USE_TSC
fprintf(prof,"calls %8li, time %6.2f sec",counts[i],double(tottimes[i]) / CLOCKS_PER_SEC);
#else
fprintf(prof,"calls %8li, time %6.2f sec",counts[i],double(tottimes[i]) / 2.7e9);
#endif
if(usedcounter[i])
fprintf(prof," %s",names[i].c_str());
else
fprintf(prof," %i",i);
fprintf(prof,"\n");
}
}
int NgProfiler :: CreateTimer (const string & name)
{
for (int i = SIZE-1; i > 0; i--)
if(names[i] == name)
return i;
for (int i = SIZE-1; i > 0; i--)
if (!usedcounter[i])
{
usedcounter[i] = 1;
names[i] = name;
return i;
}
return -1;
}
void NgProfiler :: ClearTimers ()
{
for (int i = 0; i < SIZE; i++)
{
tottimes[i] = 0;
counts[i] = 0;
}
}
NgProfiler prof;
}

View File

@ -1,88 +0,0 @@
#ifndef FILE_NG_PROFILER
#define FILE_NG_PROFILER
/**************************************************************************/
/* File: profiler.hpp */
/* Author: Joachim Schoeberl */
/* Date: 5. Jan. 2005 */
/**************************************************************************/
#ifdef VTRACE
#include "vt_user.h"
#else
#define VT_USER_START(n)
#define VT_USER_END(n)
#define VT_TRACER(n)
#endif
// #define USE_TSC
#ifdef USE_TSC
#include <x86intrin.h> // for __rdtsc() CPU time step counter
#endif
namespace netgen
{
class NgProfiler
{
enum { SIZE = 1000 };
static long int tottimes[SIZE];
static long int starttimes[SIZE];
static long int counts[SIZE];
static string names[SIZE];
static int usedcounter[SIZE];
int total_timer;
public:
NgProfiler();
~NgProfiler();
static int CreateTimer (const string & name);
#ifndef USE_TSC
static void StartTimer (int nr)
{
starttimes[nr] = clock(); counts[nr]++;
// VT_USER_START (const_cast<char*> (names[nr].c_str()));
VT_USER_START ( (char * const) (names[nr].c_str()));
}
static void StopTimer (int nr)
{
tottimes[nr] += clock()-starttimes[nr];
VT_USER_END (const_cast<char*> (names[nr].c_str()));
}
#else
static void StartTimer (int nr)
{
starttimes[nr] = __rdtsc(); counts[nr]++;
// VT_USER_START (const_cast<char*> (names[nr].c_str()));
// VT_USER_START ( (char * const) (names[nr].c_str()));
}
static void StopTimer (int nr)
{
tottimes[nr] += __rdtsc()-starttimes[nr];
VT_USER_END (const_cast<char*> (names[nr].c_str()));
}
#endif
//static void Print (ostream & ost);
static void Print (FILE * prof);
static void ClearTimers ();
class RegionTimer
{
int nr;
public:
RegionTimer (int anr) : nr(anr)
{ StartTimer (nr); }
~RegionTimer () { StopTimer (nr); }
};
};
}
#endif

View File

@ -598,7 +598,6 @@ void STLSurfaceMeshing1 (STLGeometry & geom,
for (int fnr = 1; fnr <= mesh.GetNFD(); fnr++) for (int fnr = 1; fnr <= mesh.GetNFD(); fnr++)
{ {
if (fnr == 100) NgProfiler::ClearTimers();
if (!opensegsperface[fnr]) continue; if (!opensegsperface[fnr]) continue;
if (multithread.terminate) return; if (multithread.terminate) return;