[mathicgb] branch upstream created (now c72c945)
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Fri Apr 3 15:58:19 UTC 2015
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a change to branch upstream
in repository mathicgb.
at c72c945 Connected the module input library basis to a module backend and added a unit test for it that passes.
This branch includes the following new commits:
new 31d363b Initial commit of mathicgb code.
new 3503d8f Added .gitignore files to ignore files generated by Emacs and autotools.
new bdd3fe6 Added option for less verbose automake output (pass --enable-silent-rules to configure or V=0 to make)
new d15546b Moved BitTriangle out of mathicgb and into mathic.
new e0da914 Added .exe to .gitignore to ignore executable files on Cygwin.
new a78d6f1 Updated README.md to describe Mathicgb in more detail.
new 4d253c6 changed copyright header
new 3af75ef Making a BjarkeGeobucket2 class that will eventually replace BjarkeGeobucket. For now, this is being added in order to incrementally test mathic::HashTable
new c2445ce working on HashTable, soon to be HashMap in mathic, and how it is used in mathicgb. So far, BjarkeGeobucket2 is in the midst of being simlpified.
new fc7be21 Changed code to compile with changed interface to HashTable. But code doesn't yet really use new HashTable code.
new f1f9d91 Fixed Makefile.am to rebuild unittest.exe when non-test files are changed. Also commented out printing from BjarkeGeobucket2 that were slowing tests.
new 12e99be Removed AM_PROG_AR macro from configure.ac since it isn't needed now and apparently isn't supported on all systems.
new c1c0614 Made mathicgb turn asserts on/off based on MATHICGB_DEBUG rather than DEBUG.
new 5322a2e Moved grobner basis tests from testing all combinations to testing only all pairs of combinations. This drastically reduces the time taken to run the tests.
new 2975521 Added make-Makefile.sh which will write out a Makefile that downloads and sets up memtailor, mathic and mathicgb with release, debug and other targets.
new 314fd4b Transformed PairQueue to use mathic::PairQueue in place of its own previous implementation.
new ccd826d Added more targets to and improved code for make-Makefile.sh
new 14c7242 Added support for MATHICGB_SLOW_DEBUG and MATHICGB_SLOW_ASSERT to disable the very slowest asserts for a standard build with asserts. make check is now much faster.
new e5f0f97 Updated make-Makefile to support targets setting LDFLAGS which was necessary to support profile builds correctly.
new a35d196 Removed support for stopping siggb computations early on a Grobner basis since if turning that option on was a win, then using classic buchberger was better in all our experiments and the feature was complex.
new e0cba69 Renamed SPairHandler to SigSPairs, moved responsibility for ordering sig S-pairs into FreeModuleOrder.cpp and speed up sig S-pair ordering by using scrambled signatures.
new 015259a Fixed issue with configure.ac that wasn't working on my Cygwin installation.
new 5d5648b Added improved modular inverse code and typedefs for uint8, uint16, uint32, uint64.
new 23b7ad6 Fixed previous commit that unintentionally included an intentional debugging error.
new c106f4c Added a sparse matrix class in preparation for F4 along with a few tests.
new a34360b Added QuadMatrixBuilder for building F4 matrices along with tests of this class.
new 69ff7f8 Added support for sorting columns in the F4 QuadMatrixBuilder + tests.
new 88bd2d1 Changed Reducer to only offer a higher level interface. Moved all its implementation stuff into TypicalReducer and made all 13 reducer classes derive from that instead (ugh). This is in preparation for F4 reduction which requires a significantly different representation than the current reducer classes.
new f6980a1 Added an F4MatrixBuilder and an F4Reducer - they do not work yet.
new 61c61e4 Fixed a few typos in the help system.
new ac3506d Added tests for F4MatrixBuilder and fixed it so that now it seems to work. Also introduced a QuadMatrix class and used it as output of both QuadMatrixBuilder and F4MatrixBuilder.
new ead56f0 Enabled support for some C++11 features and changed all uses of std::auto_ptr to std::unique_ptr.
new bad8d21 Added missing #include to TypicalReducer.
new 907cd4a Added F4MatrixReducer which reduces an F4 matrix to reduced row echelon form. Also added a single non-trivial test that passes, so maybe it actually works. This is a code dump of the prototype code I wrote for matrix reduction previously so it needs to be cleaned up - I only did some search-replace to make it compile and a bit of effort to hook things up correctly and shake out the bugs in the glue code.
new 14a7b33 Made F4MatrixReducer remove empty rows in each subcomputation and added tests for this. Also removed unused reduction code in F4MatrixReducer.
new 9c3143e Added a make_unique function that simulates variadic templates so that it should work on MSVC too even though it does not have variadic templates.
new 577509a F4Reducer now successfully computes the same result as the fallback reducer for all reductions of classic S-pairs that I've tried.
new 5edd095 Migrated QuadMatrixBuilder to use a hash table and made F4Matrix not defer to a fallback on clasically reducing an S-pair. Fixed some bugs that was corrupting hash values.
new 7ae17cc Added an option -sPairGroupSize that makes MathicGB reduce that many S-pairs at the same time. As you would expect, this is a big benefit for the F4Reducer (reducer 25).
new 3e3fdf3 Added a -threadCount option that sets the number of parallel threads used during reduction. The tests also use this.
new 1843f48 Fixed a bug where hash values are stored as exponents but calculated with as size_t which was causing an ASSERT if those types are different. Also, made allocMonomial fill the returned buffer full of set bits to make it more likely for asserts to trigger on uninitilized values.
new 9955f49 Fixed a capitalization error in an #include
new 7d2fb8e added example dir and two example files
new 92a1db9 Merge branch 'master' of https://github.com/broune/mathicgb
new bfc0b25 Fixed a bug: we were inappropriately assuming that all input polynomials have their terms already sorted. Also added asserts in places checking that a polynomial is sorted.
new dce4e88 Added support for reducing a set of polynomials in addition to the support for reducing a set of S-pairs. BuchbergerAlg uses this features now. This made the F4 reducer faster even though it is still just doing inter-reductions one at a time using the fall-back (non-matrix) reducer, presumably because collecting all the reductions and updating the basis fully allows a fuller reduction which could imply fewer rounds of interreduction.
new 4777120 Moved ./src/examples/ to ./examples/ and added files generated by MGB when running on an example to .gitignore.
new 27f3d71 Now only add 1 bottom row to F4 matrices per S-pair.
new b6a273c F4Reducer now uses F4 reduction to reduce sets of polynomials (as opposed to just sets of S-polynomials). Also did a few microreductions that increased speed on hcyclic8 by about 10%.
new 02cdb6a No longer sort rows by increasing pivots. Also, decreased the load factor on the hash table.
new c417558 Got rid of matrix concatenation of left and right matrices in F4, though strangely this turned out to slow things down a little bit - but it still halves the memory used on matrices. The current version of storing the right part and then processing the right part later was faster than processing the right part right away or in a second loop without storing - at least on hcyclic8.
new 4c8ffc7 Now makes a new matrix for each degree. This is a speed up on homogenous ideals though it needs to be turned off for non-homogenous matrices - currently there is no option to do so.
new 9544aed Changes to remove some errors and warnings when compiling with MS V++ 2012.
new d03aae2 Made std::unordered_map in QuadMatrixBuilder use an Arena for allocation. Fixed MSVC warnings and MSVC OpenMP issue (only allows signed index variables). Fixed a bug for threadCount == 0.
new 296a1f4 Added Visual Studio 2012 pro project files.
new 13e888d Fixed erroneous intermediate directory in MSVC project files.
new 935e5aa Added notes on how I made Visual Studio Pro 2012 project files. I had to figure out more about this topic than I ever wanted to know.
new 73b5e4e Miscellaneous code improvements. Removed many MSVC warnings, changed pointers to references or unique_ptr.
new 5a1c8e4 Fixed overflow issue that would only happen on 64 bit compiles with hash tables or geobuckets larger than 2^31. After this change, all remaining issues found by the static analysis of Visual Studio 2012 Professional are false positives.
new dca8151 Fixed what is, to the best of my ability to determine, an issue caused by a bug in the MSVC implementation of OpenMP. Go read the comment I added for the details. So that was more than a few hours out of my life. Great. I really enjoyed that. Wonderful. No really. (if someone has an explanation other than "compiler bug", I'd really be interested to hear it).
new c4cf0ff Added a MonomialMap template. This removes a lot of complexity and ifdef'ing from QuadMatrixBuilder. Also, I expect to use this outside of QuadMatrixBuilder in future.
new 2261565 Matrix construction is now a bit faster due to hash table allowing look-up of a product without storing the product anywhere.
new 8547192 Made SparseMatrix require explicit addition of new columns.
new 17914b2 Moved a lot of code out of the header file for SparseMatrix and also changed its interface to expose less details of its implementation.
new 7f0111e Moved basis output to C file IO which doubled performance. Also turned the output off.
new 2431c70 Changed MonomialMap interface to use pointers instead of iterators to be able to support the case where std::unordered_map::iterator and std::unordered_map::local_iterator are not compatible. This was required to compile on GCC.
new 4f7f944 Added custom chained hash table for MonomialMap and now uses a bit-technique for faster equality check when looking up monomials in a hash table. Takes hcyc8 from 8.4s to 8.0s for a 4.8% improvement.
new 2450633 Made monomials be inline of nodes in the hash table, which reduced time from 8.0s to 7.7s for hcyc8 for a 3.8% improvement.
new f5efe9b Added a RawVector class that works like std::vector but has manual memory management. This allowed to optimize appendEntry on SparseMatrix which reduced hcyc8 from 7.7s to 7.4s for a 3.8% performance increase.
new 433cf6e Now uses exponent and coefficient typedefs in more places where they should be used. Also added OMPIndex typedef for use in OpenMP loops where the loop variable is (perversely) not allowed to be unsigned by MSVC 2012. I tried to make it possible to have coefficient be unsigned, but there is some bug somewhere, so for now it remains signed.
new 8f19bbe Removed 4 .cpp files with no content that MSVC was complaining about.
new e0fb348 Oops, removed one too many files from Makefile build list in last commit.
new 282e2f8 I made the hash-table verification of a hit process two exponents at a time by comparing them as an int64 instead of two int32's. Turns out the strict aliasing rule makes this very tricky to get right, and, after a lot of effort, I finally found out that the only correct solution that also achieves good performance uses... memcpy. Yes, on individual int64 values. Turns out at least MSVC and GCC understand memcpy and won't actually call a memcpy function for something [...]
new e867046 updated .gitignore to include more file types generated by Visual Studio.
new f5a3acf Changed SparseMatrix to use pointers instead of interger indices to keep track of where the data for a row is. This is in preparation for eliminating copy operations (they take about 5% of time) and making parallel matrix construction easier to do. I would have expected a tiny slowdown from this step, but I actually got a 17% speed increase on hcyc8! I don't understand it. My best guess is that the compiler somehow better understands what is going on. Maybe also beca [...]
new 980501c Fixed a memory leak in SparseMatrix. Also miscellaneous code cleanup in SparseMatrix.
new bdcdbbc Made SparseMatrix allocate memory in multiple blocks instead of reallocating an ever-larger buffer. This saves the copy and will make the parallelization-to-come easier. It was a 4% performance improvement at 2 threads on hcyc8.
new bb9af1e Moving closer to adding support for parallel matrix construction. This changed the order that rows are constructed which surprisingly gave an 8% speedup on hcyc8 on Cygwin when running on 2 cores.
new 88ed03b Turned off link time optimization for Visual Studio in the Release-Assert configuration since that allows a faster compile-test cycle.
new fca6893 Finally parallelized the main step in matrix construction. Getting 7% less time on hcyc8 on 2/2 threads/cores.
new 0921cbe Parallelized the sorting and reordering of matrices. Also added a set of macroes that give a way to tell the optimizer extra information, such as saying that two pointers are not aliases.
new e3304d3 Minor code improvements.
new d3ad560 Parallelized also the construction of the bottom matrix of S-pairs and removed some memory leaks of monomials.
new 928528a Fixed bug in hash table hit-verification code.
new 0d95f8f Made F4MatrixReducer a bit simpler, mainly by removing a lot of unused code.
new 1948f45 More simplification of F4MatrixReducer and improvement to tracing output for showing matrix dimensions and number of non-zero entries in a more visual way.
new 4cf5281 Corrected MATHIC_INLINE to MATHICGB_INLINE.
new 8f98b58 Fixed a performance regression on MSVC 2012 due to the compiler erroneously thinking that two pointers might be aliases.
new e1e1ae7 Made the memory quamtum of the matrices a command line parameter.
new cb11a5b Got a 2% speed-up by processing two hash table monomial product queries at the same time.
new be029b3 All code now uses MATHICGB_ASSERT - ASSERT is gone.
new 5d333db Improved tracking output for size and memory used by matrices. Use -trac 5 -cla -reducer 25 to see.
new 2eaef52 Merge branch 'master' of https://github.com/broune/mathicgb
new 44cb064 Added make_unique_array to stdinc to go with make_unique.
new f0f1d62 Fixed missing MATHICGB_RESTRICT macro for non MSVC.
new 6c3cf91 Made some changes to MonomialMap to prepare for using a single concurrent hashtable instead of per-thread hash tables. This (temporarily) has made it fixed-size. Performance is, unexpectedly, better by 1% single-core. This happened when forcing the internal table pointer and mask onto the stack of clients (via a handle). I'm not sure if the cause of the better performance is due to better compiler information (const-on-stack is easy to prove things about for compiler [...]
new c3802e6 MonomialMap now grows automatically again.
new 0f0202f FixedSizeMonomialMap is not exposed instead of being an implementation detail of MonomialMap. MonomialMap is now concurrent and also performant. Horribly, the std::atomic of MSVC 2012 has abysmal performance, so there was no other option than to write my own :( On other compilers the new Atomic class is just implemented in terms of std::atomic, but on x86 and x64 for MSVC it uses compiler intrinsics to implement std::atomic using memory barriers. The implementation o [...]
new 6fda319 Now not forcing inlining in debug builds.
new 25ead0b Hash table not initializes itself to null as it should. It seems MSVC was doing this while GCC was not - std::atomic has trivial constructor so that may be the difference.
new ef2bb8c Removed method from FixedsizeMonomialMap elementCount since it was returning mEntryCount which now does not exist.
new e51faa8 Fixed typo in not-called function MonomialMap::entryCount.
new 69ed581 Apparently GCC does not zero initialize on new T[x]() though it is supposed to. So manual zeroing it is.
new 33ca3fc More modular implementation of x86 and x64 Atomic which will allow having that implementation also work on GCC instead of only MSVC, since apparently the GCC 4.6 implementation is also slow.
new c1105ec Added a custom Atomic implementation for GCC. The GCC 4.6.3 built-in std::atomic makes the program slow to a crawl while the custom Atomic that is now added gets the same speed as running with no atomic constraints at all (single-core). There is now a macro MATHICGB_USE_FAKE_ATOMIC that makes Atomic not actually impose any ordering constraints, though it is still atomic since that is derived merely from the size of the values and from being aligned, at least on x86 a [...]
new 37851e8 SparseMatrix cannot efficiently keep track of its number of columns during concurrent matrix construction with a shared hash table, so it no longer does to prepare for that.
new d25ac48 Now using a single concurrent hash map for building the matrix. It makes no difference single-core, but now using more threads than cores is actually a win - I'm seeing 12% speed-up of 3 threads on dual core compared to 2 threads where before there was no advantage. I suspect that this is caused by the third thread no longer having to create its own hash table and also now the third thread can use the idle core if the second thread is waiting while the first thread l [...]
new c0a540a Added use of tbb for threading. Doesn't work on Cygwin as tbb doesn't work there, apparently.
new f6010fc Migration from OpenMP to TBB complete.
new fb8ba47 Matrix construction now uses parallel_do instead of parallel_for, which allows to dynamically add new work items.
new c3bede3 In building F4 matrices: changed task data representation so that dynamically added tasks incur no allocation. Before there was an allocation for representing the monomial to be multiplied onto the polynomial to make a row, but now instead the monomial is product with the lead monomial (so the monomial of the new column), which implies that we can just reuse the monomial for the column that is already stored in the hash table. This is significant for parallelism sinc [...]
new b04df39 Small changes that allow for exponent to be a char/int8. That was a problem with IO code since >>char is different from >>int in that the former reads a single character while the latter reads a possibly multi-character integer.
new 399c07b Made two separate actions gb and siggb for classic and signature grobner basis computation respectively.
new 6a535fb Since tbb uses a global object to set the number of threads there is no longer a purpose of passing threadCount parameters around everywhere. Those are all removed now.
new 4753243 Added an option to output all F4 matrices with more than the specified number of non-zero entries. The matrix format is as for Lachartre and Fayssal's code, except each file contains the 4 sub-matrices instead of one big matrix. There is now also a matrix action in addition to gb and siggb. It currently just reads a matrix and writes it out - I'm stopping today at the point where I got the written matrix to actually match the read matrix byte-for-byte. :) This also i [...]
new 066c4f7 Fixed a matrix write bug and now the matrix action reduces the input file and either writes the reduced bottom right matrix out if a reference matrix does not exist or checks that the computed matrix matches the reference matrix if the reference matrix does exist.
new c81a09b The matrix action now takes several input files and processes each of them separately. There is not an -inputFile option any more.
new 22a6ef5 The unreduced bottom right matrix is now written out by the matrix action (not the gb action). This allows to run only the row reduction of the bottom right matrix - it is not required to reduce the full matrix to get at this computation. Simply specify the file with the bottom right matrix as the input file.
new e51966e Fixed bug where F4Reducer would print out matrices when it should not.
new 52ca2f2 Added new logging framework with fine-grained control of what is logged along with -log options and a "help log" feature for listing all log domains compiled into the executable.Currently there is only a single log domain defined, but eventually this should replace tracing level or alternatively tracing level could be defined in terms of log domains. The main feature here is that the logging overhead is precisely zero if a logging domain is turned off at compile time [...]
new 828eeee First version of Shrawan's Gaussian elimination code.
new a382a51 Fixed bug in Atomic.hpp (relaxed load/store needs to be not cached in registers) and generally cleaned up the atomics code.
new 1f656d0 Second version of Shrawan's Gaussian elimination code.
new 6958945 Fixes to make the code compile on GCC 4.6.3.
new b7e4378 merge
new e221488 Merge branch 'master' of https://github.com/broune/mathicgb
new 9924fa7 Non-working version, but closer to correct.
new e597eba Improved logging, now with timing support
new deda067 Merge. Working version. (yay\!)
new 6f6017e Changes to make code compile on GCC 4.6.3.
new 87af1a7 Timed logging now actually works.
new 1d06315 Improved the logging output of reducing matrices. It now contains much more information, the information is more clearly labeled and it looks nicer.
new 929206e Improved comments on DenseRow::addRowMultiple and unrolled a small loop manually once. This is a 5% performance improvement for matrix reduction on MSVC 2012.
new 2593093 Made the bit widths used in matrix reduction more explicit. This was done to enable experiments with using cmov instructions to keep the modular sums in 64 bits instead of 32, but that turned out to be a lot slower, so that experiment was not committed.
new c850f4d Fixed bug in F4 matrix reduction.
new 7b7fccb Added .pbm image output to matrix action. Useful for debugging as it allows visual inspection of the matrix.
new 96e91c9 Updated test list from pict.
new f3dfcb3 Added new matrix construction code that decouples left/right splitting from the initial matrix construction. I want this to be as fast as the previous code, so the previous code is still there for now for comparison. The new code can be called using reducer 26.
new 1cfea3e Fixed floating point division by zero in statistics output code that was causing double-spaced output on Cygwin terminals.
new eff5b6b Better log summary at end of run and now loggers for matrix construction.
new 8a7c9d3 Better log summary at end of run and now loggers for matrix construction.
new ef8ca1e whitespace changes.
new f608f08 Simplified F4MatrixBuilder2 by avoiding the initial top/bottom division that anyway is undone right after.
new a801c6e Moved reducer 26 to using preblocks (no scalars) for the first version of the F4 matrix.
new b88cbcc Made F4-26 reducer reindex while splitting left-right, which now makes it a tiny bit faster than F4-25 for hcyclic6. :)
new 098815e Refactoring F4-26 matrix construction code.
new 32eee99 Simplified and improved performance for sorting columns and constructing column permutation map in F4-26.
new c3e0af2 Refactoring F4-26 matrix construction.
new 0225b94 whitespace change.
new 3c3d03e Updated to match mathic ColumnPrinter change from ratio to ratioInteger and ratioDouble.
new 6336cbf Same thing as last commit, now with ColumnPrinter::percent.
new 3e56baa Now reports an IO error if there is one while using the C file IO for reading/writing sparse matrices (silences warnings from gcc 4.6.3).
new 345b40d std::vector<const char> apparently causes errors on gcc 4.6.3, so I made it non-const to get it to compile.
new 90e0a28 Changed a reference to a universal reference in LambdaRunner of the logging system to get around a compilation issue with gcc 4.6.3.
new a524a9e Added missing file references to Makefile.am.
new 1ad1603 Moving F4-26 towards row reordering after column reindexing.
new 74b82b0 F4-26 now has support for top/bottom split after left/right bottom, though the implementation is slow so it is not done by default.
new 4a9fad4 Merge branch 'master' of https://github.com/broune/mathicgb
new 8724a90 Made the copying of a row of a matrix faster through using memcpy.
new c3952d4 Added support for logs that count and used it to add a log for counting the total number of rows added in all matrices in F4.
new af0ea4b Added included needed by GCC 4.6.3
new b4b4a6c Added row counter log for top and bottom rows of F4 matrices.
new 82b1b64 Avoided calls for reductions of zero polynomials.
new be633a0 Significant speed-up from choosing sparser and older reducers. This was already implemented, I thought, but it turns out that only applied to siggb, not gb.
new 28fb32e Fixed compile-error on gcc 4.6. I suspect it is an error in the compiler, but it was easy to avoid.
new 93e2e29 adds homogeneous katsura examples
new cc9dfbf Moved PreBlock code out of F4MatrixBuilder2 into its own file and renamed it to ProtoMatrix.
new 3b5b42f Merge branch 'master' of https://github.com/broune/mathicgb
new 435edb1 Fix double-fclose bug diagnosed by Christian Eder.
new e82e032 Moved the matrix projection code out of F4MatrixBuilder2 and into F4MatrixProjection.
new e86f556 fixes make for F4ProtoMatrix
new 4fbf785 Merge pull request #2 from ederc/make-fix
new c0732a9 Improved code in F4MatrixProjection and added ScopeExit functionality.
new 968d699 Further refactoring of F4MatrixProjection.
new 9027e59 merge
new 0401bf0 Refactoring to eliminate the code duplication for computing a top/bottom projection inside F4MatrixProjection.
new 8e55eeb fixes debug assert
new 9e51152 Merge pull request #1 from ederc/examples
new 47fcd09 Merge pull request #3 from ederc/debug-fix
new 210c74c Fix to make non-assert mode compile.
new 2cffdef Refactored classic S-pair ordering to not share as much code with the signature code. Also made the classic S-pair ordering prefer sparse or old S-pairs depending on the pre-existing option -preferSparseReducers. This results in ever-so-slightly smaller matrices compared to before, whichever way the option is set.
new 5f7e5ac An S-pair aA-bB now has aA set as the reducer instead of using some other reducer for the cancelling term. Another S-pair aA-cC can then also be simplified to jsut cC without adding the reducer aA, as it is the same one. Due to a non-trivial interaction with the S-pair elimination/choice, this is guaranteed to simplify all S-pairs and the reducer aA is guaranteed to always be the preferred reducer that would have been used for that monomial anyway. For hcyclic8 this [...]
new 41df6c1 Added new log functionality to enable streaming output and the summary at the end independently.
new 8872c00 Improved the help system's description of logging.
new b32e8d0 Added support for log aliases.
new 71fa758 Added support for prefixes and suffices on log aliases. Added the log aliases none, all and SPairs. Made the default log none, while empty string is replaced with all, so that doing "-log" turns on all logs.
new f086b23 Minor improvements in functionality to PolyRing.
new b7027fc Added a library interface to MathicGB along with tests.
new 78da45a MathicGB no longer requires TBB. You still need TBB if you want parallel execution. Removing the requirement for TBB is achieved through an implementation of the parts of the TBB interface that MathicGB uses. This implementation does not do anything in paralle, so it was easy to write. So easy, in fact, that now I'm wondering whether it would make sense to make this implementation support OpenMP, in which case Cygwin would still have parallel execution, just not quit [...]
new 78e37fb Fixes to make MathicGB compile on GCC 4.5.3 on Cygwin.
new 2cc0955 MathicGB now compiles and tests pass on Cygwin with GCC without TBB. Still some configure issues.
new f10ccf0 The configure file now accepts an option --with-tbb=no. Use it to avoid a dependency on tbb, though then times in logs will be less accurate and there will be no support for multithreading. The Makefile created by build/setup/make-Makefile.sh now accepts an option mathicgb_conf, which is passed on to configure. So you can do make rel mathicgb_conf="--with-tbb=no" to set up a release mode build without tbb.
new b80ae33 Fixed recent error in make-Makefile that would link up the built executable to a wrong installed directory. Also fixed GCC compile warning.
new 4cb8598 Added link of the rt library, which is apparently needed on gcc for some platforms. It seems to implement the time functionality from time().
new dc5c9bf configure now has a --with-gtest option that defaults to downloading gtest if it is not found. If --with-gtest=no then configure will succeed without gtest though then make check won't do anything other than to report that gtest was not found. The --with-tbb option now defaults to disabling tbb if it is not found. autogen.sh no longer downloads gtest. Hence a fresh git clone of mathicgb can now build out of the box with no options given even without tbb and without a [...]
new 94af58f Improvement to output stating that gtest is not enabled.
new 54d30e7 Outer Makefile now uses only a single download of gtest for all of mathic, memtailor and mathicgb.
new 5726f28 Fixed missing include directive for finding gtest in a non-standard location. Also, configure now detects failure to download gtest and continues without gtest in that case.
new 06a06d5 Removed -1.0 from the dependencies on mathic and memtailor. Not a single person who has seen this scheme appears to have understood what it's about (header versioning), even after extensive explanation in some cases, so the effort necessary to explain this scheme far overshadows the technical advantages.
new 039253c MathicGB now also installs itself as a header+library in addition to as a console program.
new bdbf8e6 Added missing pkgconfig file that should have been committed in last commit.
new f86a4b2 Added a PrimeField class along with tests. This class is supposed to take over the coefficient code in PolyRing.
new 3ec7f14 Removed incorrect reference to PrimeField.cpp in Makefile.am
new 7849dfd Added MonoMonoid along with tests. The purpose of MonoMonoid is to take over the monomial functionality from PolyRing.
new 4785e4c Added ordering to MonoMonoid.
new b80fef2 Added hash functionality to MonoMonoid. Still need more tests.
new 775586d Minor cleanup to MonoMonoid.
new f6e9bbb Minor cleanup to MonoMonoid and added product along with tests.
new 5211880 Added division and divisibility code to MonoMonoid along with tests.
new a89952b More division code.
new f3b33fa Removed unused code from PolyRing.
new b8f946d Removed unused code from PolyRing.
new 69ba192 Added full support for comparison to MonoMonoid, along with module monomial and non-total-degree grading. Also forwarded compare from PolyRing to MonoMonoid.
new 15092b8 Added functions for testing a*b==c to MonoMonoid and forwarding from PolyRing.
new 94230a4 PolyRing now forwards to PrimeField. Also got rid of PolyRing::getMonomialPool() in an effort to reduce the size of the interface of PolyRing.
new d241a72 PolyRing can now forward to MonoMonoid and PrimeField for almost everything. Added lots of new methods on those two to make that possible.
new 0b8b2b6 Added test to the new methods on MonoMonoid and PrimeField.
new ddf5858 Made changes to compile on MSVC without warnings.
new f4bec2c Slight performance improvement to MonoMonoid::lcm and (temporary) ability to do MonoMonoid::lcmRaw.
new 174d8b4 Made MonoMonoid a template on options for what the representation stores and updated tests to test all those representations. Internally the new template parameters don't actually do anything yet.
new 9221fb9 Added yang1 ideal to examples. This ideal stresses S-pair handling.
new 2f3e535 MonoMonoid now ignores fiels that are disabled via template parameters. The fiels that can be disabled are component, degree and hash.
new e6619bf MonoMonoid now correctly uses less memory when the hash field is disabled. That was already the case for component and order.
new ee2fa72 Old PolyRing implementation removed - now it can only forward to MonoMonoid and PrimeField.
new 129b86c Moving SPairs towards proper use of MonoMonoid.
new 663b696 SPairs now uses a dedicated hash-less monoid for ordering.
new ae7fecf SPairs no longer uses PolyRing, except to access a MonoMonoid. Also, it has about the same speed as previously by using a MonoVector.
new 72dd7f4 configure now checks whether librt is needed before using it. Also removed a few tabs.
new 3261bee Added back erroneously removed deb outer makefile target and changed /bin/evn to /usr/bin/env.
new daa0287 Changes to build system intended to detect if linking with librt is necessary.
new a987dd1 Added missing macro for autoconf.
new bfd7765 Avoid printing looking for TBB twice in configure.
new b7cfd4a added cyclic5 test. Not sure if it is compiling yet
new 26784b9 Work-around for issue GCC 4.7 seems to have with properly resolving private copy constructors versus public move constructors.
new 9857924 Merge branch 'master' of https://github.com/broune/mathicgb
new 17a8ed7 Fixed issue with ordering S-pairs where some of the components have been retired.
new b7fa809 Library interface now has an option for using a classic reducer or a matrix reducer.
new c5ee21c The library interface now allows not specifying the number of polynomials or terms to follow.
new c1867bc SPairGroupSize is now set to something appropriate by default for both the CLI and library interfaces.
new 852dc36 It is now possible to set the max number of threads in the library interface.
new 01faa35 Library interface now allows limited access to the logging framework.
new 46a42ef Fixed missing dependency of tests on libmathicgb that caused test not to be recompiled in some cases.
new c35380f Fixed issue where memory consumption would suddenly explode due to converting a submatrix of a very sparse and large matrix into dense format. Very sparse matrices now have their own code-path that avoids this.
new 6a75199 Added in logging functions for incremental viewing: F4Incremental alias, and F4MatrixSizes,F4SPairDegree,F4MatReduceTop,F4RedBottomRight
new e700934 Renamed some F4 aliases and fixed descriptions of logs and a comment in stdinc.h.
new 204be2b Added reset functionality to the logging system. All logs are now reset for each Groebner computation done through the library interface. Also, moved the new top/bottom F4 reducer log timing commands to be right next to the combined timer for that - without this, the time would be significantly different between the 2 kinds of logs because an expensive IO happened after starting one and before starting the other.
new eb80555 Added more precise timing when not using TBB.
new a39509f Removed unnecessary duplicate code path in BuchbergerAlg.cpp
new f439c1f Removed old unused code for Buchberger criteria from PolyBasis.
new 7d83621 The library interface now allows setting the maximum S-pair group size.
new 8cad955 Added option to set monomial order to library interface. The interface is now more general than the actual capabilities of the code, so not everything actually works yet.
new aff8e43 added test file
new d17a575 Matrix ordering supposed to work now, though it has not been tested with a full GB computation. It does pass unittests.
new 713e500 Merge branch 'master' of https://github.com/broune/mathicgb
new 3dab355 Added elimination order GB test for the library interface
new a7884a2 Fixed a few ASSERTs and bugs for varCount==0 that needed to be fixed for multigraded ordering.
new dbe3b93 Fixed an assert error by removing stuff out of PolyRing.
new d30c6b1 Fixed a wrong test for monomials.
new dc95da3 Fixed bug in copy among different monoids.
new 93254f7 added in the answer to the simple elimination test example
new d2913b2 Moved support for reading in rings from PolyRing to MonoMonoid as well as other things moved there.
new ba8ab91 Merge branch 'master' of https://github.com/broune/mathicgb
new dda2af6 Reduced the interface and state of PolyRing.
new c2c3f84 Removed computation of size of monomials from PolyRing.
new 4e3ce21 Moved signature comparison remnant out of PolyRing.
new a990e63 Reduced the interface for PolyRing and added release/recapture support for pool-allocated monomials.
new c1f3df3 Moved monomial pool out of PolyRing. PolyRing's state now consits only of a monoid and a field.
new c89c9e7 Added test for reading and writing monoids.
new 6e08a20 Fixed bug in copy constructor of MonoMonoid that set all monomials to have a hash value of 0, leading to huge slowdowns.
new 7a71ecb Added command line option -outputResult to mgb
new e5a7ec6 IO format now includes lex or revlex ordering explicitly. It still doesn't do anything yet.
new 12f7917 Merge branch 'master' of https://github.com/broune/mathicgb
new 4ae2584 Changed the default threadCount command line value to 0
new 7748973 Merge branch 'master' of https://github.com/broune/mathicgb
new ffa8fc8 Now with actual lex ordering enabled. It passes unit tests. It might even work.
new 0c1f7c5 Merge branch 'master' of https://github.com/broune/mathicgb
new 0134818 Added a log alias named default and made -log do that one instead of the all alias.
new acb1d8d Reduced code size for comparison in MonoMonoid.
new 2c33c6e simple change to a log message
new e1e4933 Reduced one of the Schreyer orders to the other one by doing a transformation up front.
new 925c9b8 Merge branch 'master' of https://github.com/broune/mathicgb
new c10f39a Reduced another free module order to another one by preprocessing up front. In particular, by reversing and unreversing components.
new f896a69 Another order bites the dust.
new 8090930 Added tests for free module orders 6 and 7.
new 846aba0 Reduced free module order 6 to order 7 with preprocessing.
new 2fa1bea Changed order 3 to be consistently Schreyer instead of half-Schreyer.
new 3c4cf87 Turned the Schreyer part of all remaining orders into preprocessing.
new b53b43a Removed a lot of now unused free module order code.
new 191e6d1 Simplified interface and implementation of FreeModuleOrder.
new 765ddd1 Simplified and improved the pre/postprocessing code for module monomial ordering.
new a6f2697 Renamed Ideal to Basis to avoid name conflict with Frobby.
new 97d909f Set up support for a callback to control the computation in the library interface. The interface is there now, though it doesn't do anything yet.
new 6f39e3c Implemented the functionality of the callback in the library interface. Also added tests for it which pass.
new aa99ea6 Added library interface support for retrieving values from logs.
new ac904ef Renamed logCharacteristic to logNumber in the library interface.
new 38e6f23 Added a class that describes a monomial order and added a constructor in MonoMonoid that takes that as a parameter. MonoOrder is not yet used otherwise.
new 2b0bdf1 MonoOrder is improved, now immutable and used by MonoMonoid::readMonoid.
new 12eb95e Added base class for MonoMonoid to eliminate duplication of code in constructors.
new 0ab694c merge
new 28908de Added support in MonoMonoid for comparing components before, after or in-between gradings, rather than only at the end.
new 1c518d3 Added some small test examples.
new f725bcf Allowed component/revcomponent distinction to be passed on to the monoid in tests. Used this to get rid of OrderE entirely from FreeModuleOrder.
new 30e7797 Added support for specifying (rev)component for after base ordering. Used this to move all component/revcomponent distinction out of the order number.
new fee815c Moved handling of Schreyer order into Basis and added syntax for that to ring description. The number given to a free module order then no longer does anything at all, so code passing that around has been removed.
new 61282bf Added a new Scanner class that makes reading formatted input SOOO much nicer.
new 418b637 Added option to match on a string to Scanner.
new 613868a Adding new external-to-MonoMonoid IO class MathicIO along with tests.
new 136ab81 Simplified MonoMonoid::create.
new 58292bf Added writeTerm to MathicIO and now test both readTerm and writeTerm.
new 84e370f Added readPoly and writePoly to MathicIO along with tests.
new 8b4ad50 Added readPoly and writePoly to MathicIO along with tests.
new b400a54 Added readBasis and writeBasis to MathicIO along with tests.
new bbb09cb Removed Basis::parse in favor of MathicIO. Added support for negative modular coefficients.
new 10de2ba Added support for setting a module monomial order to the library interface. This is not used for anything yet.
new 6520739 Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.
new 6739198 Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.
new f70dcf3 Moved KoszulQueue to using Monoid fully, made it movable and changed to use its own MonoPool.
new 4a48b0a Removed FreeModuleOrder from PolyBasis and GroebnerBasis as well as all the code that uses the order from those. Also removed most of the code from FreeModuleOrder.
new 05b5721 Finally got rid of FreeModuleOrder. Completely Gone. Yahoo\!
new 8c5eca7 Renamed BuchbergerAlg to ClassicGBAlg and GroebnerBasis to SigPolyBasis.
new 6b201a7 Added program for checking proper format of code files.
new 0a6fe2a Went through ALL source files to give them a common copyright header, to put everything in namespace mgb to avoid name clashes and to normalize header inclusion order of system versus non-system headers. Apparently there is a bug or some issue here somewhere that requires using ::std::X to refer to std::X. That was really fun. Yep.
new 7b531a0 Removed C++11 auto's from public header file mathicgb.h and fixed a comment in the tests for that file.
new 17eb612 merge
new fcb1f37 Added a C function to library for easier detection from autoconf.
new 1de9829 Library interface not actually registers it when setComponentsAscending() is called.
new 5d35591 Added check to library interface setMonomialOrder that rejects non-global orders. Also added tests for this.
new c29d43d Changes to make this compile in MSVC.
new a5c8d7d Renamed to mgb::tbb to mgb::mtbb to avoid frequent issue of ambiguous resolution of tbb - it could be ::tbb or ::mgb::tbb in some cases, causing MSVC to complain.
new 1ca22f5 Added support for both left and right variants of lex and revlex to the library interface and in the engine. The file IO format does not support these new orders so far.
new a090dea Changed the way that module-component rows are stored in MonoOrder. This fixed a bug where MathicGB would get confused in the library interface when given a non-last position for the module comparison.
new 118c1f5 Moved all IO code out of MonoMonoid. Use MathicIO instead.
new d42655e Change to make code compile on gcc 4.7.3.
new 1f27738 Removed MonTableNaive, which wasn't necessary any more.
new b2bead3 Merge branch 'master' of https://github.com/broune/mathicgb
new 60844ca Fixes problem from removing MonTableNaive, which was still included from a few test files.
new 0c82d09 Starting on clean-up of monomial data structure code. Tidied DivLookupConfigureion.
new c14e36a Moving to use of lambdas in DivLookup.hpp
new afde969 DivLookup.hpp is now fully lambdaed.
new 74107dd Tidying DivisorLookup.cpp
new 6a48fd1 Moved configuration for DivLookup into the class as a private sub-class and moved as much stuff out of the configuration as possible.
new e2703b8 Made DivLookup entirely non-virtual and instead added a virtual wrapper in DivisorLookup.cpp that also took over responsibility for some of the information such as the basis.
new 1e01832 Renamed DivLookup to StaticMonoLookup and DivisorLookup to MonoLookup.
new 3654c0f Pruned unused or less important stuff from the MonomialTableArray interface.
new d967600 Further simplification of MonomialTableArray.
new 8c23210 Moved the implementation of the MonomialTableArray children to use StaticMonoLookup instead of implementation that functionality twice.
new 681dfdf Renamed MonomialTableArray to ModuleMonoSet and renamed StaticMonoLookup to StaticMonoMap.
new ff9664c Further clean-up on the ModuleMonoSet and MonoLookup interfaces.
new 0d439fd Improved logging for signature algorithm a bit, made schreyer ordering the default for text input on the command line and did a bit of code cleanup.
new 2c706c1 Changed the default back so that an input file again has to explicitly ask for a Schreyer order to get it. The other way was too strange and it also would require changing the tests.
new f79c1d8 Moving towards replacing const_monomial entirely with the types on Monoid.
new adf16d8 Simplified PolyHashTable and gave BjarkeGeobucket2 a new hash table based on MonmialMap that is significantly faster than the old one.
new 5738142 Moved a line in BjarkeGeobucket2 that is a boost to performance.
new 3ed4d58 Moved PolyHashTable closer to BjarkeGeobucket2's hash table and removed several superfluous reducers.
new 908fb76 Improved the implementation of ReducerHashPack so that it is a bit faster and so that it does not move monomials out of hash table nodes. The latter was a barrier to making changes in PolyHashTable.
new 1eab165 Replaced the interface and implementation of PolyHashTable with the better hash table from BjarkeGeobucket2. That made BjarkeGeobucket2 superfluous, so it was removed.
new 3666e57 Moved some of the code of PolyHashTable into its implementation file.
new f0241a8 Clean up of Reducer header file and remove statistics functionality from there. If we need that functionality in future, it should be implemented using the logging facility, not as a part of the main-line code.
new 090f202 Made registering a reducer type depend on a decentralized method instead of having a big function in Reducer.cpp do it, leading to long compile times when that file needs to be recompiled. The new method is now implemented and being used for ReducerPack. The remaining reducers are using the new method, but it is still being done from Reducer.cpp. Next up: migrate all new reducers to this new way of doing it.
new 6b7e094 Moved the implementation and even declaration of all reducers out of their header files. Registration of all the reduers now happens in a decentralized fashion in each reducer's .cpp file. Reducer.cpp no longer takes so long to compile.
new f2c8373 Light cleanup of the reducer implementatio files.
new 2fd2f02 Converted all non-F4 reducers to new MonoMonoid monomials and documented them.
new 9989153 Documentation improvements and slight clean-up on F4 code.
new 7ef2c1d Made the list of reducer types in the help message ordered by id.
new 229b902 Clean-up on F4MatrixBuilder2, FixedSizeMonomialMap and MonomialMap, migrating them to use a monoid.
new bc394f4 Migrated F4MatrixBuilder, QuadMatrix and a few related classes to use MonoMonoid.
new 5e136b5 Removed ChainedHashTable and MonomialHashTable since they were not used any more, except by a single unit test.
new 28fb618 Removed PairTriangle as it is no longer used (it's replaced by the mathic version). Also tiny amount of clean-up.
new 9008776 Moved several classes closer to using MonoMonoid.
new cee466a Moving S-pair handling to using MonoMonoid.
new 75fdbdf Starting cleanup of interface of SigPolyBasis.hpp
new 75df7aa Moved interface of SigPolyBasis to using MonoMonoid.
new 28cdd9d Moved the implementation of SigPolyBasis to use MonoMonoid.
new b16590d Changed PolyBasis to use MonoMonoid.
new a71ec54 Starting clean-up of interface of Poly.
new 6257483 Further clean-up on Poly.
new a73276e Poly mostly clean now.
new cfef9d0 Added missing Zip.hpp file.
new 7bfa734 Moved Zip into Range.hpp and extended the functionality for manipulating ranges significantly. Added tests for that functionality and used it in Poly.
new a921b98 Poly::assign can now accept a range and the implementation of Poly::polyWithTermsDescending is now a bit simpler - there are no loops in there any more and what is sorted is no longer a set of pairs (term, index) pairs since the index was not being used anymore anyway.
new f42b685 Made Poly use PolyRing::Field and other slight cleanup.
new 6124daf It is no longer possible to ask for the i'th term/coef/mono of a polynomial.
new 71bcaa6 Poly now uses containers from Field and Monoid to store coefficients and monomials. Poly.cpp was removed since it is no longer needed.
new 943df98 This time Poly.cpp is removed from git too.
new 3fe28d9 Added documentation and a description.txt file that explains a lot about MathicGB.
new 93d8985 Fixed ana Makefile target to work by removing option -fsyntax-only. We only really need the syntax check, but autotools thinks something is wrong since it cannot make executables with that flag.
new 3b350fd Added slides and added extra content to the description of MathicGB in doc/description.txt.
new 133e1f0 Minor edit to doc/description.txt, now with a table of contents.
new 557a3b9 Implemented module input algorithm - an early version. It doesn't work with KD trees right now, so you have to select the list data structures. You also have to use the -module parameter. Only works with the classic GB algorithm, though the F4 reducer seems to work (supposing this works at all). No testing has been done yet, so there may well be lots of issues. Also made the header for ClassicGBAlg expose less information.
new c48c1c1 Added flatten() to the Range.hpp. It flattens a range of ranges into a single range.
new af5a337 The Visual Studio project files should now work on any computer, including with Visual Studio Express. Added MonoArena and fixed a bug in flatten.
new 3acd016 Changed the library interface to accept module inputs. This is currently still only connected to the same non-module backend as before.
new c72c945 Connected the module input library basis to a module backend and added a unit test for it that passes.
The 393 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.
--
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