[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