[mathicgb] annotated tag debian/1.0_git20170606-1 created (now 95a27ef)
Sébastien Villemot
sebastien at debian.org
Sun Aug 13 15:06:30 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastien pushed a change to annotated tag debian/1.0_git20170606-1
in repository mathicgb.
at 95a27ef (tag)
tagging 1000ba83f8ea9e6c5114546f9778205dc7e9122e (commit)
tagged by Sébastien Villemot
on Sun Aug 13 17:05:51 2017 +0200
- Log -----------------------------------------------------------------
mathicgb Debian release 1.0~git20170606-1
Andreas Tille (1):
Add citation information
Bjarke Hammersholt Roune (368):
Initial commit of mathicgb code.
Added .gitignore files to ignore files generated by Emacs and autotools.
Added option for less verbose automake output (pass --enable-silent-rules to configure or V=0 to make)
Moved BitTriangle out of mathicgb and into mathic.
Added .exe to .gitignore to ignore executable files on Cygwin.
Updated README.md to describe Mathicgb in more detail.
Fixed Makefile.am to rebuild unittest.exe when non-test files are changed. Also commented out printing from BjarkeGeobucket2 that were slowing tests.
Removed AM_PROG_AR macro from configure.ac since it isn't needed now and apparently isn't supported on all systems.
Made mathicgb turn asserts on/off based on MATHICGB_DEBUG rather than DEBUG.
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.
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.
Transformed PairQueue to use mathic::PairQueue in place of its own previous implementation.
Added more targets to and improved code for make-Makefile.sh
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.
Updated make-Makefile to support targets setting LDFLAGS which was necessary to support profile builds correctly.
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.
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.
Fixed issue with configure.ac that wasn't working on my Cygwin installation.
Added improved modular inverse code and typedefs for uint8, uint16, uint32, uint64.
Fixed previous commit that unintentionally included an intentional debugging error.
Added a sparse matrix class in preparation for F4 along with a few tests.
Added QuadMatrixBuilder for building F4 matrices along with tests of this class.
Added support for sorting columns in the F4 QuadMatrixBuilder + tests.
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.
Added an F4MatrixBuilder and an F4Reducer - they do not work yet.
Fixed a few typos in the help system.
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.
Enabled support for some C++11 features and changed all uses of std::auto_ptr to std::unique_ptr.
Added missing #include to TypicalReducer.
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.
Made F4MatrixReducer remove empty rows in each subcomputation and added tests for this. Also removed unused reduction code in F4MatrixReducer.
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.
F4Reducer now successfully computes the same result as the fallback reducer for all reductions of classic S-pairs that I've tried.
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.
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).
Added a -threadCount option that sets the number of parallel threads used during reduction. The tests also use this.
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.
Fixed a capitalization error in an #include
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.
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.
Moved ./src/examples/ to ./examples/ and added files generated by MGB when running on an example to .gitignore.
Now only add 1 bottom row to F4 matrices per S-pair.
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%.
No longer sort rows by increasing pivots. Also, decreased the load factor on the hash table.
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.
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.
Changes to remove some errors and warnings when compiling with MS V++ 2012.
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.
Added Visual Studio 2012 pro project files.
Fixed erroneous intermediate directory in MSVC project files.
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.
Miscellaneous code improvements. Removed many MSVC warnings, changed pointers to references or unique_ptr.
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.
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).
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.
Matrix construction is now a bit faster due to hash table allowing look-up of a product without storing the product anywhere.
Made SparseMatrix require explicit addition of new columns.
Moved a lot of code out of the header file for SparseMatrix and also changed its interface to expose less details of its implementation.
Moved basis output to C file IO which doubled performance. Also turned the output off.
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.
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.
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.
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.
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.
Removed 4 .cpp files with no content that MSVC was complaining about.
Oops, removed one too many files from Makefile build list in last commit.
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 like that - it [...]
updated .gitignore to include more file types generated by Visual Studio.
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 because I added more [...]
Fixed a memory leak in SparseMatrix. Also miscellaneous code cleanup in SparseMatrix.
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.
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.
Turned off link time optimization for Visual Studio in the Release-Assert configuration since that allows a faster compile-test cycle.
Finally parallelized the main step in matrix construction. Getting 7% less time on hcyc8 on 2/2 threads/cores.
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.
Minor code improvements.
Parallelized also the construction of the bottom matrix of S-pairs and removed some memory leaks of monomials.
Fixed bug in hash table hit-verification code.
Made F4MatrixReducer a bit simpler, mainly by removing a lot of unused code.
More simplification of F4MatrixReducer and improvement to tracing output for showing matrix dimensions and number of non-zero entries in a more visual way.
Corrected MATHIC_INLINE to MATHICGB_INLINE.
Fixed a performance regression on MSVC 2012 due to the compiler erroneously thinking that two pointers might be aliases.
Made the memory quamtum of the matrices a command line parameter.
Got a 2% speed-up by processing two hash table monomial product queries at the same time.
All code now uses MATHICGB_ASSERT - ASSERT is gone.
Improved tracking output for size and memory used by matrices. Use -trac 5 -cla -reducer 25 to see.
Merge branch 'master' of https://github.com/broune/mathicgb
Added make_unique_array to stdinc to go with make_unique.
Fixed missing MATHICGB_RESTRICT macro for non MSVC.
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 compilers) or just that [...]
MonomialMap now grows automatically again.
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 offered by MSVC 2 [...]
Now not forcing inlining in debug builds.
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.
Removed method from FixedsizeMonomialMap elementCount since it was returning mEntryCount which now does not exist.
Fixed typo in not-called function MonomialMap::entryCount.
Apparently GCC does not zero initialize on new T[x]() though it is supposed to. So manual zeroing it is.
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.
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 and x64. This can [...]
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.
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 locked the hash t [...]
Added use of tbb for threading. Doesn't work on Cygwin as tbb doesn't work there, apparently.
Migration from OpenMP to TBB complete.
Matrix construction now uses parallel_do instead of parallel_for, which allows to dynamically add new work items.
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 since the allocation [...]
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.
Made two separate actions gb and siggb for classic and signature grobner basis computation respectively.
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.
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 involved a reorga [...]
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.
The matrix action now takes several input files and processes each of them separately. There is not an -inputFile option any more.
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.
Fixed bug where F4Reducer would print out matrices when it should not.
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 and each loggin [...]
Fixed bug in Atomic.hpp (relaxed load/store needs to be not cached in registers) and generally cleaned up the atomics code.
Improved logging, now with timing support
Merge. Working version. (yay\!)
Timed logging now actually works.
Improved the logging output of reducing matrices. It now contains much more information, the information is more clearly labeled and it looks nicer.
Improved comments on DenseRow::addRowMultiple and unrolled a small loop manually once. This is a 5% performance improvement for matrix reduction on MSVC 2012.
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.
Fixed bug in F4 matrix reduction.
Added .pbm image output to matrix action. Useful for debugging as it allows visual inspection of the matrix.
Updated test list from pict.
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.
Fixed floating point division by zero in statistics output code that was causing double-spaced output on Cygwin terminals.
Better log summary at end of run and now loggers for matrix construction.
Better log summary at end of run and now loggers for matrix construction.
whitespace changes.
Simplified F4MatrixBuilder2 by avoiding the initial top/bottom division that anyway is undone right after.
Moved reducer 26 to using preblocks (no scalars) for the first version of the F4 matrix.
Made F4-26 reducer reindex while splitting left-right, which now makes it a tiny bit faster than F4-25 for hcyclic6. :)
Refactoring F4-26 matrix construction code.
Simplified and improved performance for sorting columns and constructing column permutation map in F4-26.
Refactoring F4-26 matrix construction.
whitespace change.
Updated to match mathic ColumnPrinter change from ratio to ratioInteger and ratioDouble.
Same thing as last commit, now with ColumnPrinter::percent.
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).
std::vector<const char> apparently causes errors on gcc 4.6.3, so I made it non-const to get it to compile.
Changed a reference to a universal reference in LambdaRunner of the logging system to get around a compilation issue with gcc 4.6.3.
Added missing file references to Makefile.am.
Moving F4-26 towards row reordering after column reindexing.
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.
Merge branch 'master' of https://github.com/broune/mathicgb
Made the copying of a row of a matrix faster through using memcpy.
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.
Added included needed by GCC 4.6.3
Added row counter log for top and bottom rows of F4 matrices.
Avoided calls for reductions of zero polynomials.
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.
Fixed compile-error on gcc 4.6. I suspect it is an error in the compiler, but it was easy to avoid.
Moved PreBlock code out of F4MatrixBuilder2 into its own file and renamed it to ProtoMatrix.
Merge branch 'master' of https://github.com/broune/mathicgb
Fix double-fclose bug diagnosed by Christian Eder.
Moved the matrix projection code out of F4MatrixBuilder2 and into F4MatrixProjection.
Merge pull request #2 from ederc/make-fix
Improved code in F4MatrixProjection and added ScopeExit functionality.
Further refactoring of F4MatrixProjection.
merge
Refactoring to eliminate the code duplication for computing a top/bottom projection inside F4MatrixProjection.
Merge pull request #1 from ederc/examples
Merge pull request #3 from ederc/debug-fix
Fix to make non-assert mode compile.
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.
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 is a 5% speedup [...]
Added new log functionality to enable streaming output and the summary at the end independently.
Improved the help system's description of logging.
Added support for log aliases.
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.
Minor improvements in functionality to PolyRing.
Added a library interface to MathicGB along with tests.
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 quite as fast.
Fixes to make MathicGB compile on GCC 4.5.3 on Cygwin.
MathicGB now compiles and tests pass on Cygwin with GCC without TBB. Still some configure issues.
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.
Fixed recent error in make-Makefile that would link up the built executable to a wrong installed directory. Also fixed GCC compile warning.
Added link of the rt library, which is apparently needed on gcc for some platforms. It seems to implement the time functionality from time().
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 an internet conne [...]
Improvement to output stating that gtest is not enabled.
Outer Makefile now uses only a single download of gtest for all of mathic, memtailor and mathicgb.
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.
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.
MathicGB now also installs itself as a header+library in addition to as a console program.
Added missing pkgconfig file that should have been committed in last commit.
Added a PrimeField class along with tests. This class is supposed to take over the coefficient code in PolyRing.
Removed incorrect reference to PrimeField.cpp in Makefile.am
Added MonoMonoid along with tests. The purpose of MonoMonoid is to take over the monomial functionality from PolyRing.
Added ordering to MonoMonoid.
Added hash functionality to MonoMonoid. Still need more tests.
Minor cleanup to MonoMonoid.
Minor cleanup to MonoMonoid and added product along with tests.
Added division and divisibility code to MonoMonoid along with tests.
More division code.
Removed unused code from PolyRing.
Removed unused code from PolyRing.
Added full support for comparison to MonoMonoid, along with module monomial and non-total-degree grading. Also forwarded compare from PolyRing to MonoMonoid.
Added functions for testing a*b==c to MonoMonoid and forwarding from PolyRing.
PolyRing now forwards to PrimeField. Also got rid of PolyRing::getMonomialPool() in an effort to reduce the size of the interface of PolyRing.
PolyRing can now forward to MonoMonoid and PrimeField for almost everything. Added lots of new methods on those two to make that possible.
Added test to the new methods on MonoMonoid and PrimeField.
Made changes to compile on MSVC without warnings.
Slight performance improvement to MonoMonoid::lcm and (temporary) ability to do MonoMonoid::lcmRaw.
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.
Added yang1 ideal to examples. This ideal stresses S-pair handling.
MonoMonoid now ignores fiels that are disabled via template parameters. The fiels that can be disabled are component, degree and hash.
MonoMonoid now correctly uses less memory when the hash field is disabled. That was already the case for component and order.
Old PolyRing implementation removed - now it can only forward to MonoMonoid and PrimeField.
Moving SPairs towards proper use of MonoMonoid.
SPairs now uses a dedicated hash-less monoid for ordering.
SPairs no longer uses PolyRing, except to access a MonoMonoid. Also, it has about the same speed as previously by using a MonoVector.
configure now checks whether librt is needed before using it. Also removed a few tabs.
Added back erroneously removed deb outer makefile target and changed /bin/evn to /usr/bin/env.
Changes to build system intended to detect if linking with librt is necessary.
Added missing macro for autoconf.
Avoid printing looking for TBB twice in configure.
Work-around for issue GCC 4.7 seems to have with properly resolving private copy constructors versus public move constructors.
Merge branch 'master' of https://github.com/broune/mathicgb
Fixed issue with ordering S-pairs where some of the components have been retired.
Library interface now has an option for using a classic reducer or a matrix reducer.
The library interface now allows not specifying the number of polynomials or terms to follow.
SPairGroupSize is now set to something appropriate by default for both the CLI and library interfaces.
It is now possible to set the max number of threads in the library interface.
Library interface now allows limited access to the logging framework.
Fixed missing dependency of tests on libmathicgb that caused test not to be recompiled in some cases.
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.
Renamed some F4 aliases and fixed descriptions of logs and a comment in stdinc.h.
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.
Added more precise timing when not using TBB.
Removed unnecessary duplicate code path in BuchbergerAlg.cpp
Removed old unused code for Buchberger criteria from PolyBasis.
The library interface now allows setting the maximum S-pair group size.
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.
Matrix ordering supposed to work now, though it has not been tested with a full GB computation. It does pass unittests.
Merge branch 'master' of https://github.com/broune/mathicgb
Fixed a few ASSERTs and bugs for varCount==0 that needed to be fixed for multigraded ordering.
Fixed an assert error by removing stuff out of PolyRing.
Fixed a wrong test for monomials.
Fixed bug in copy among different monoids.
Moved support for reading in rings from PolyRing to MonoMonoid as well as other things moved there.
Merge branch 'master' of https://github.com/broune/mathicgb
Reduced the interface and state of PolyRing.
Removed computation of size of monomials from PolyRing.
Moved signature comparison remnant out of PolyRing.
Reduced the interface for PolyRing and added release/recapture support for pool-allocated monomials.
Moved monomial pool out of PolyRing. PolyRing's state now consits only of a monoid and a field.
Added test for reading and writing monoids.
Fixed bug in copy constructor of MonoMonoid that set all monomials to have a hash value of 0, leading to huge slowdowns.
IO format now includes lex or revlex ordering explicitly. It still doesn't do anything yet.
Merge branch 'master' of https://github.com/broune/mathicgb
Now with actual lex ordering enabled. It passes unit tests. It might even work.
Merge branch 'master' of https://github.com/broune/mathicgb
Added a log alias named default and made -log do that one instead of the all alias.
Reduced code size for comparison in MonoMonoid.
Reduced one of the Schreyer orders to the other one by doing a transformation up front.
Merge branch 'master' of https://github.com/broune/mathicgb
Reduced another free module order to another one by preprocessing up front. In particular, by reversing and unreversing components.
Another order bites the dust.
Added tests for free module orders 6 and 7.
Reduced free module order 6 to order 7 with preprocessing.
Changed order 3 to be consistently Schreyer instead of half-Schreyer.
Turned the Schreyer part of all remaining orders into preprocessing.
Removed a lot of now unused free module order code.
Simplified interface and implementation of FreeModuleOrder.
Simplified and improved the pre/postprocessing code for module monomial ordering.
Renamed Ideal to Basis to avoid name conflict with Frobby.
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.
Implemented the functionality of the callback in the library interface. Also added tests for it which pass.
Added library interface support for retrieving values from logs.
Renamed logCharacteristic to logNumber in the library interface.
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.
MonoOrder is improved, now immutable and used by MonoMonoid::readMonoid.
Added base class for MonoMonoid to eliminate duplication of code in constructors.
merge
Added support in MonoMonoid for comparing components before, after or in-between gradings, rather than only at the end.
Added some small test examples.
Allowed component/revcomponent distinction to be passed on to the monoid in tests. Used this to get rid of OrderE entirely from FreeModuleOrder.
Added support for specifying (rev)component for after base ordering. Used this to move all component/revcomponent distinction out of the order number.
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.
Added a new Scanner class that makes reading formatted input SOOO much nicer.
Added option to match on a string to Scanner.
Adding new external-to-MonoMonoid IO class MathicIO along with tests.
Simplified MonoMonoid::create.
Added writeTerm to MathicIO and now test both readTerm and writeTerm.
Added readPoly and writePoly to MathicIO along with tests.
Added readPoly and writePoly to MathicIO along with tests.
Added readBasis and writeBasis to MathicIO along with tests.
Removed Basis::parse in favor of MathicIO. Added support for negative modular coefficients.
Added support for setting a module monomial order to the library interface. This is not used for anything yet.
Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.
Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.
Moved KoszulQueue to using Monoid fully, made it movable and changed to use its own MonoPool.
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.
Finally got rid of FreeModuleOrder. Completely Gone. Yahoo\!
Renamed BuchbergerAlg to ClassicGBAlg and GroebnerBasis to SigPolyBasis.
Added program for checking proper format of code files.
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.
Removed C++11 auto's from public header file mathicgb.h and fixed a comment in the tests for that file.
merge
Added a C function to library for easier detection from autoconf.
Library interface not actually registers it when setComponentsAscending() is called.
Added check to library interface setMonomialOrder that rejects non-global orders. Also added tests for this.
Changes to make this compile in MSVC.
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.
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.
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.
Moved all IO code out of MonoMonoid. Use MathicIO instead.
Change to make code compile on gcc 4.7.3.
Removed MonTableNaive, which wasn't necessary any more.
Merge branch 'master' of https://github.com/broune/mathicgb
Fixes problem from removing MonTableNaive, which was still included from a few test files.
Starting on clean-up of monomial data structure code. Tidied DivLookupConfigureion.
Moving to use of lambdas in DivLookup.hpp
DivLookup.hpp is now fully lambdaed.
Tidying DivisorLookup.cpp
Moved configuration for DivLookup into the class as a private sub-class and moved as much stuff out of the configuration as possible.
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.
Renamed DivLookup to StaticMonoLookup and DivisorLookup to MonoLookup.
Pruned unused or less important stuff from the MonomialTableArray interface.
Further simplification of MonomialTableArray.
Moved the implementation of the MonomialTableArray children to use StaticMonoLookup instead of implementation that functionality twice.
Renamed MonomialTableArray to ModuleMonoSet and renamed StaticMonoLookup to StaticMonoMap.
Further clean-up on the ModuleMonoSet and MonoLookup interfaces.
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.
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.
Moving towards replacing const_monomial entirely with the types on Monoid.
Simplified PolyHashTable and gave BjarkeGeobucket2 a new hash table based on MonmialMap that is significantly faster than the old one.
Moved a line in BjarkeGeobucket2 that is a boost to performance.
Moved PolyHashTable closer to BjarkeGeobucket2's hash table and removed several superfluous reducers.
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.
Replaced the interface and implementation of PolyHashTable with the better hash table from BjarkeGeobucket2. That made BjarkeGeobucket2 superfluous, so it was removed.
Moved some of the code of PolyHashTable into its implementation file.
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.
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.
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.
Light cleanup of the reducer implementatio files.
Converted all non-F4 reducers to new MonoMonoid monomials and documented them.
Documentation improvements and slight clean-up on F4 code.
Made the list of reducer types in the help message ordered by id.
Clean-up on F4MatrixBuilder2, FixedSizeMonomialMap and MonomialMap, migrating them to use a monoid.
Migrated F4MatrixBuilder, QuadMatrix and a few related classes to use MonoMonoid.
Removed ChainedHashTable and MonomialHashTable since they were not used any more, except by a single unit test.
Removed PairTriangle as it is no longer used (it's replaced by the mathic version). Also tiny amount of clean-up.
Moved several classes closer to using MonoMonoid.
Moving S-pair handling to using MonoMonoid.
Starting cleanup of interface of SigPolyBasis.hpp
Moved interface of SigPolyBasis to using MonoMonoid.
Moved the implementation of SigPolyBasis to use MonoMonoid.
Changed PolyBasis to use MonoMonoid.
Starting clean-up of interface of Poly.
Further clean-up on Poly.
Poly mostly clean now.
Added missing Zip.hpp file.
Moved Zip into Range.hpp and extended the functionality for manipulating ranges significantly. Added tests for that functionality and used it in Poly.
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.
Made Poly use PolyRing::Field and other slight cleanup.
It is no longer possible to ask for the i'th term/coef/mono of a polynomial.
Poly now uses containers from Field and Monoid to store coefficients and monomials. Poly.cpp was removed since it is no longer needed.
This time Poly.cpp is removed from git too.
Added documentation and a description.txt file that explains a lot about MathicGB.
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.
Added slides and added extra content to the description of MathicGB in doc/description.txt.
Minor edit to doc/description.txt, now with a table of contents.
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.
Added flatten() to the Range.hpp. It flattens a range of ranges into a single range.
The Visual Studio project files should now work on any computer, including with Visual Studio Express. Added MonoArena and fixed a bug in flatten.
Changed the library interface to accept module inputs. This is currently still only connected to the same non-module backend as before.
Connected the module input library basis to a module backend and added a unit test for it that passes.
Christian Eder (3):
adds homogeneous katsura examples
fixes make for F4ProtoMatrix
fixes debug assert
Daniel R. Grayson (12):
apply diffs from Macaulay2 source tree
remove libtool; stop building sharable libraries
update .gitignore
bypass a bug in g++ 4.8.2
add license and copyright info, per communication from Roune
add macros and variables that give the version number
improve .gitignore
bypass compiler bug by not optimizing some test code
Merge branch 'master' of https://github.com/Macaulay2/mathicgb
disable the use of pkg-config so we can use memtailor and pathic even if they are not installed
fix configure script directory configuration
Merge pull request #1 from d-torrance/fix-archs-with-unsigned-char
Doug Torrance (66):
Initial attempt at Debian package.
debian/control: Switch pkgconf in Build-Depends to more general pkg-config.
debian/libmathicgb0.symbols: Add arch-bits tags.
debian/control: Add dpkg-dev (>= 1.18.0) to Build-Depends; needed for
debian/tests/control: Add libmathic-dev, libmemtailor-dev, and pkg-config to
debian/control: Move self to Uploaders; set Debian Science as Maintainer.
debian/control: Restrict Build-Depends on libtbb-dev to the architectures on
debian/patches/fix_example_perms.patch: Remove empty file.
debian/control: Set Priority to extra to satisfy Policy section 2.5 (libtbb
debian/libmathicgb0.symbols: Add arch tags for symbols only present on archs
debian/patches/fix_archs_with_unsigned_char.patch: Fix failing tests for
debian/changelog: Add entry for version 1.0~git20131006-2.
debian/libmathicgb0.symbols: Remove file for ease of maintainability.
debian/control: Remove dpkg-dev (>= 1.18.0) from Build-Depends; unnecessary
debian/control: Remove redundant Priority field.
debian/changelog: Update entry for version 1.0~git20131006-2.
Update my email address.
debian/control: Tidy up using wrap-and-sort.
debian/changelog: Draft for version 1.0~git20131006-3.
Specify negative ints as signed chars in tests.
debian/changelog: Set distribution to unstable.
Restore libtool but with disable-shared option.
Imported Upstream version 1.0~git20150904
debian/patches: Remove files; patches applied upstream.
debian/rules: Update GTEST_PATH in override_dh_auto_configure target.
debian/rules: Add --enable-shared to override_dh_auto_configure target.
debian/control: Update Homepage.
debian/copyright: Update Source.
debian/copyright: Update get-orig-source target with new location.
debian/watch: Update comment with new location.
debian/copyright: Remove Comment; license information now in source.
debian/changelog: Draft for version 1.0~git20150904-1.
debian/changelog: Set distribution to unstable.
Replace "Grobner" with "Groebner", the correct anglicization of "Gröbner"
Remove stray comma in d/changelog.
Fix lines in Description made too long by the Grober->Groebner change.
Enable all hardening flags; fixes hardening-no-{bindnow,pie} Lintian
Update Vcs-Browser to use https; fixes vcs-field-uses-insecure-uri Lintian
Update debian/changelog entry for version 1.0~git20150904-2.
Add manpage from Debian.
Merge tag 'upstream/1.0_git20170104'
debian/{mathicgb.manpages,mgb.1}: Remove files; manpage added upstream.
debian/control: Bump to Standards-Version 3.9.8.
debian/control: Remove libmathicgb-dbg package
debian/rules: Add --dbgsym-migration option to dh_strip.
debian/mathicgb.install: Move installation of manpage to dh_install.
debian/tests/unittest: Use upstream unit tests for continuous integration.
debian/changelog: Add entry for version 1.0~git20170104-1.
debian/tests/build: Remove old CI test.
Merge branch 'upstream'
debian/compat: Bump debhelper compatibility level to 10.
Bump versioned dependency on debhelper to >= 10.
debian/control: Remove dh-autoreconf from Build-Depends.
debian/control: Bump Standards-Version to 4.0.0.
debian/copyright: Use https in Format.
debian/mathicgb.docs: Rename from just 'docs' for clarity.
debian/rules: Add '-Wl,--as-needed' to LDFLAGS to avoid useless dependencies.
debian/rules: Remove call to dh_autoreconf; now default with debhelper 10.
Update d/changelog.
Fix mistake -- mathicgb.docs was in top directory.
debian/control: Set priority to optional.
debian/control: Bump Standards-Version to 4.0.1.
Remove '-Wl, --as-needed'; that wasn't the problem.
debian/patches/link-deps.patch: New patch; properly link against mathic
debian/changelog: Don't close #853541; it was actually a tbb bug.
debian/patches/big-endian.patch: New patch; fix tests on big-endian
Mike Stillman (18):
changed copyright header
Making a BjarkeGeobucket2 class that will eventually replace BjarkeGeobucket. For now, this is being added in order to incrementally test mathic::HashTable
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.
Changed code to compile with changed interface to HashTable. But code doesn't yet really use new HashTable code.
added example dir and two example files
Merge branch 'master' of https://github.com/broune/mathicgb
added cyclic5 test. Not sure if it is compiling yet
Added in logging functions for incremental viewing: F4Incremental alias, and F4MatrixSizes,F4SPairDegree,F4MatReduceTop,F4RedBottomRight
added test file
Added elimination order GB test for the library interface
added in the answer to the simple elimination test example
Added command line option -outputResult to mgb
Changed the default threadCount command line value to 0
Merge branch 'master' of https://github.com/broune/mathicgb
simple change to a log message
Merge pull request #4 from d-torrance/add-manpage
Modify test so that it will compile under clang.
changes to remove test error and warnings during compilation
Sharwan Kumar Tiwari (7):
First version of Shrawan's Gaussian elimination code.
Second version of Shrawan's Gaussian elimination code.
Fixes to make the code compile on GCC 4.6.3.
merge
Merge branch 'master' of https://github.com/broune/mathicgb
Non-working version, but closer to correct.
Changes to make code compile on GCC 4.6.3.
-----------------------------------------------------------------------
No new revisions were added by this update.
--
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