[mathicgb] 141/393: Better log summary at end of run and now loggers for matrix construction.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Fri Apr 3 15:58:50 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch upstream
in repository mathicgb.

commit 8a7c9d30e077f558d680630bf6de6502d61be7c2
Author: Bjarke Hammersholt Roune <bjarkehr.code at gmail.com>
Date:   Tue Jan 29 13:55:17 2013 +0100

    Better log summary at end of run and now loggers for matrix construction.
---
 build/vs12/mathicgb-lib/mathicgb-lib.vcxproj       |  1 +
 .../vs12/mathicgb-lib/mathicgb-lib.vcxproj.filters |  3 +++
 src/cli/GBMain.cpp                                 |  3 +++
 src/mathicgb/F4MatrixBuilder.cpp                   |  9 +++++++
 src/mathicgb/F4MatrixBuilder2.cpp                  |  9 +++++++
 src/mathicgb/LogDomain.cpp                         | 17 ++++++-------
 src/mathicgb/LogDomain.hpp                         |  9 ++++---
 src/mathicgb/LogDomainSet.hpp                      | 29 ++++++++--------------
 8 files changed, 49 insertions(+), 31 deletions(-)

diff --git a/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj b/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj
index 03166b7..103365a 100755
--- a/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj
+++ b/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj
@@ -456,6 +456,7 @@
     <ClCompile Include="..\..\..\src\mathicgb\io-util.cpp" />
     <ClCompile Include="..\..\..\src\mathicgb\KoszulQueue.cpp" />
     <ClCompile Include="..\..\..\src\mathicgb\LogDomain.cpp" />
+    <ClCompile Include="..\..\..\src\mathicgb\LogDomainSet.cpp" />
     <ClCompile Include="..\..\..\src\mathicgb\MonTableNaive.cpp" />
     <ClCompile Include="..\..\..\src\mathicgb\MTArray.cpp" />
     <ClCompile Include="..\..\..\src\mathicgb\PairTriangle.cpp" />
diff --git a/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj.filters b/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj.filters
index fd74cd5..54c4492 100755
--- a/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj.filters
+++ b/build/vs12/mathicgb-lib/mathicgb-lib.vcxproj.filters
@@ -129,6 +129,9 @@
     <ClCompile Include="..\..\..\src\mathicgb\F4MatrixBuilder2.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\src\mathicgb\LogDomainSet.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\src\mathicgb\BjarkeGeobucket.hpp">
diff --git a/src/cli/GBMain.cpp b/src/cli/GBMain.cpp
index c8403ab..e94f4c0 100755
--- a/src/cli/GBMain.cpp
+++ b/src/cli/GBMain.cpp
@@ -4,6 +4,7 @@
 #include "SigGBAction.hpp"
 #include "MatrixAction.hpp"
 #include "HelpAction.hpp"
+#include "mathicgb/LogDomainSet.hpp"
 #include <mathic.h>
 #include <cctype>
 #include <iostream>
@@ -33,6 +34,8 @@ int main(int argc, char **argv) {
     // reasonable about this exception, so rethrow the exception.
     throw;
   }
+
+  LogDomainSet::singleton().printReport(std::cerr);
   return 0;
 };
 
diff --git a/src/mathicgb/F4MatrixBuilder.cpp b/src/mathicgb/F4MatrixBuilder.cpp
index 88a9ef9..b29aaf2 100755
--- a/src/mathicgb/F4MatrixBuilder.cpp
+++ b/src/mathicgb/F4MatrixBuilder.cpp
@@ -1,8 +1,14 @@
 #include "stdinc.h"
 #include "F4MatrixBuilder.hpp"
 
+#include "LogDomain.hpp"
 #include <tbb/tbb.h>
 
+MATHICGB_DEFINE_LOG_DOMAIN(
+  F4MatrixBuild,
+  "Displays statistics about F4 matrix construction."
+);
+
 MATHICGB_NO_INLINE
 std::pair<QuadMatrixBuilder::LeftRightColIndex, ConstMonomial>
 F4MatrixBuilder::findOrCreateColumn(
@@ -110,6 +116,9 @@ void F4MatrixBuilder::addPolynomialToMatrix
 }
 
 void F4MatrixBuilder::buildMatrixAndClear(QuadMatrix& matrix) {
+  MATHICGB_LOG_TIME(F4MatrixBuild) <<
+    "\n***** Constructing matrix *****\n";
+
   if (mTodo.empty()) {
     matrix = QuadMatrix();
     matrix.ring = &ring();
diff --git a/src/mathicgb/F4MatrixBuilder2.cpp b/src/mathicgb/F4MatrixBuilder2.cpp
index 7db04b0..8f8928c 100755
--- a/src/mathicgb/F4MatrixBuilder2.cpp
+++ b/src/mathicgb/F4MatrixBuilder2.cpp
@@ -1,8 +1,14 @@
 #include "stdinc.h"
 #include "F4MatrixBuilder2.hpp"
 
+#include "LogDomain.hpp"
 #include <tbb/tbb.h>
 
+MATHICGB_DEFINE_LOG_DOMAIN(
+  F4MatrixBuild2,
+  "Displays statistics about F4 matrix construction."
+);
+
 MATHICGB_NO_INLINE
 std::pair<F4MatrixBuilder2::ColIndex, ConstMonomial>
 F4MatrixBuilder2::findOrCreateColumn(
@@ -108,6 +114,9 @@ void F4MatrixBuilder2::addPolynomialToMatrix
 }
 
 void F4MatrixBuilder2::buildMatrixAndClear(QuadMatrix& quadMatrix) {
+  MATHICGB_LOG_TIME(F4MatrixBuild2) <<
+    "\n***** Constructing matrix *****\n";
+
   if (mTodo.empty()) {
     quadMatrix = QuadMatrix();
     quadMatrix.ring = &ring();
diff --git a/src/mathicgb/LogDomain.cpp b/src/mathicgb/LogDomain.cpp
index 0c06a9d..7476d81 100755
--- a/src/mathicgb/LogDomain.cpp
+++ b/src/mathicgb/LogDomain.cpp
@@ -2,8 +2,12 @@
 #include "LogDomain.hpp"
 
 #include "LogDomainSet.hpp"
+#include <mathic.h>
+#include <tbb/tbb.h>
 #include <iostream>
 
+static const auto logDomainGlobalStartTime= tbb::tick_count::now();
+
 LogDomain<true>::LogDomain(
   const char* const name,
   const char* const description,
@@ -17,14 +21,6 @@ LogDomain<true>::LogDomain(
   LogDomainSet::singleton().registerLogDomain(*this);
 }
 
-LogDomain<true>::~LogDomain() {
-  if (enabled() && mHasTime) {
-    stream() << mName << " total time:           ";
-    mInterval.print(stream());
-    stream() << '\n';
-  }
-}
-
 std::ostream& LogDomain<true>::stream() {
   return std::cerr;
 }
@@ -33,6 +29,10 @@ LogDomain<true>::Timer LogDomain<true>::timer() {
   return Timer(*this);
 }
 
+double LogDomain<true>::loggedSecondsReal() const {
+  return mInterval.realSeconds;
+}
+
 void LogDomain<true>::TimeInterval::print(std::ostream& out) const {
   const auto oldFlags = out.flags();
   const auto oldPrecision = out.precision();
@@ -74,7 +74,6 @@ void LogDomain<true>::Timer::stop() {
   mTimerRunning = false;
   if (!mLogger.enabled())
     return;
-  mTimerRunning = false;
   TimeInterval interval;
   interval.realSeconds = (tbb::tick_count::now() - mRealTicks).seconds();
   mLogger.recordTime(interval);
diff --git a/src/mathicgb/LogDomain.hpp b/src/mathicgb/LogDomain.hpp
index cbe0ea0..73d2d73 100755
--- a/src/mathicgb/LogDomain.hpp
+++ b/src/mathicgb/LogDomain.hpp
@@ -35,7 +35,6 @@ public:
     const char* const description,
     const bool enabled
   );
-  ~LogDomain();
 
   const char* name() const {return mName;}
   const char* description() const {return mDescription;}
@@ -45,12 +44,16 @@ public:
 
   std::ostream& stream();
 
-  /// Class for recording time that is logged.
+  bool hasTime() const {return mHasTime;}
+
+  /// Class for recording time that is logged. Movable.
   class Timer;
 
-  /// Returns a started timer that you can move from.
+  /// Returns a started timer.
   Timer timer();
 
+  double loggedSecondsReal() const;
+
 private:
   struct TimeInterval {
     // todo: support user time too. clock() doesn't seem to sum the time
diff --git a/src/mathicgb/LogDomainSet.hpp b/src/mathicgb/LogDomainSet.hpp
index 49fc0bf..9385f59 100755
--- a/src/mathicgb/LogDomainSet.hpp
+++ b/src/mathicgb/LogDomainSet.hpp
@@ -5,36 +5,27 @@
 #include <vector>
 #include <algorithm>
 #include <cstring>
+#include <ostream>
+#include <tbb/tbb.h>
 
 class LogDomainSet {
 public:
-  void registerLogDomain(LogDomain<true>& domain) {
-    mLogDomains.push_back(&domain);
-  }
+  void registerLogDomain(LogDomain<true>& domain);
+  void registerLogDomain(const LogDomain<false>& domain) {}
 
-  void registerLogDomain(const LogDomain<false>& domain) {
-  }
+  LogDomain<true>* logDomain(const char* const name);
 
-  LogDomain<true>* logDomain(const char* const name) {
-    const auto func = [&](const LogDomain<true>* const ld){
-      return std::strcmp(ld->name(), name) == 0;
-    };
-    const auto it = std::find_if(mLogDomains.begin(), mLogDomains.end(), func);
-    return it == mLogDomains.end() ? static_cast<LogDomain<true>*>(0) : *it;
-  }
+  const std::vector<LogDomain<true>*>& logDomains() const {return mLogDomains;}
 
-  const std::vector<LogDomain<true>*> logDomains() const {return mLogDomains;}
+  void printReport(std::ostream& out) const;
 
-  static LogDomainSet& singleton() {
-    static LogDomainSet set;
-    return set;
-  }
+  static LogDomainSet& singleton();
 
 private:
-  LogDomainSet() {}
+  LogDomainSet(); // private for singleton
 
   std::vector<LogDomain<true>*> mLogDomains;
+  tbb::tick_count mStartTime;
 };
 
-
 #endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/mathicgb.git



More information about the debian-science-commits mailing list