What's new in Msieve 1.5.1
Feb 18, 2013
- Performed another massive overhaul of the GPU polynomial selection
- code; stage 1 now runs dozens to *hundreds* of times faster
- on a GPU
- Added a thread pool implementation, and made GPU polynomial
- selection multithread-capable. Eventually the CPU code should
- be overhauled to look more like the GPU code, it will
- probably be able to run several times faster
- Split stage 2 of NFS polynomial selection into the size optimization
- and root optimization portions, which can be invoked inde-
- pendently from the demo binary
- Added a caching layer for reading in the matrix, to reduce the
- amount of disk IO required by an MPI grid (thanks Greg Childers)
- Changed the main API to allow free-text strings for configuring NFS,
- then allowed all the parameters for polynomial selection to be
- specified when calling the library
- Finally overhauled the Makefile to avoid everyone having to edit it
- Fixed a potential 32-bit overflow in the hashtable code, that could
- occur for extremely large problems (thanks Paul Zimmermann)
- Fixed the computation of alpha value when polynomials are linear
- (thanks Paul Zimmermann / Shi Bai)
- Fixed a line sieve initialization problem (thanks Ilya Popovyan)
New in Msieve 1.5.0 (Feb 4, 2012)
- NFS polynomial selection changes:
- Added a massive overhaul of the stage 1 GPU code by Jayson
- King, making it both much simpler and much faster
- Added a second size optimization pass when searching for
- degree 6 polynomials. This makes stage 2 much more
- reliable for very large problems
- Fixed a bug translating the degree 6 root sieve to
- degree 5
- Fixed a long-standing problem initializing the root
- sieve so that it will correctly detect roots modulo
- small prime powers
- Patches from Jayson King: use a custom hashtable structure
- to greatly speed up the stage 1 CPU code
- Patches from Jayson King: use a sieve to find larger
- leading algebraic coefficients
- Patch from Jayson King: allow stage 2 to be interrupted
- with Ctrl-C
- Modified the NFS code to remove almost all dependencies on mp_t
- functions, using GMP instead
- Patch from Ilya Popovyan: make all MPI processes contribute to
- a single vector-vector operation in the liner algebra,
- instead of just the MPI processes in a single grid row.
- This makes the entire Lanczos iteration up to 20% faster
- for very large problems and grid sizes
- Patch from Brian Gladman: add ZLIB code to windows build
- Patches from Brian Gladman: lots of changes to the Visual Studio
- projects; only MSVC10 is supported now
- Patch from Jayson King: fix longstanding problems that would
- crop up rarely in tinyQS code
New in Msieve 1.4.9 (Jun 21, 2011)
- Generalized the degree 6 root sieve to also handle degree
- 4 and 5. This makes stage 2 of NFS polyomial selection
- hugely faster for very large problems
- Allowed the target matrix density within NFS filtering to
- be specified from the demo binary (multiple people have
- asked for this and I'd been too lazy to supply it)
- Modified the MPI code to flag in-place gather and scatter
- operations as such (thanks Greg Childers)
- Performed a major overhaul of the various Readme files
- Fixed an erroneous error check in the MPI code (thanks
- Ilya Popovyan)
- Fixed an MPI race condition in the Lanczos restart code
- (thanks Jeff Gilchrist)
- From Brian Gladman: added build fixes for the latest CUDA tools
- Modified the NFS square root to print out factors as they are
- found (thanks Paul Leyland)
- Made the library report the current SVN revision, determined at
- compile time. This should finally end the confusion about
- exactly which revision of the demo binary is running
- Added the (current) linux CUDA include and library paths to
- the Makefile (thanks Paul Leyland)
New in Msieve 1.4.7 (Sep 20, 2010)
- Fixed several bugs in the linear algebra (thanks Serge
- Batalov and many mersenneforum testers)
- Patches from Jayson King: tune some of the choices for NFS
- polynomial selection
- Patches from Serge Batalov: fix some portability problems
- dealing with the hodgepodge of zlib versions everybody
- has on their unix systems
- Added a little optimization for Fermi GPUs
- Patch from Brian Gladman: fix bad printf format string
- Fixed other format string problems introduced in v1.46
New in Msieve 1.4.5 (Jun 23, 2010)
- NFS poly selection changes:
- Merged the CPU and GPU branches more tightly, and centralized
- much of the GPU handling code
- Added PTX inline assembly language for a small speedup
- Added specialized routines that make poly selection
- for inputs < 135 digits about 35% faster
- Fixed some degree 5 synchronization issues (thanks
- Jayson King)
- Tightened up the construction of arithmetic progressions
- in stage 1 (thanks Jayson King)
- Added code to increase the size of host arrays when using
- more powerful GPUs (thanks Paul Zimmermann)
- Added code to automatically randomize the search for
- inputs that are large enough
- Made the cutoff E-value more aggressive for the largest
- jobs (thanks Tom Womack / Paul Leyland / Greg Childers)
- Modified the linear algebra to write new checkpoint files first,
- then overwrite the old checkpoint only if the write completed
- (thanks Greg Childers)
- Cleaned up the makefile a bit
- Cleaned up the wording of the makefile usage
- Added code to delete the largest temporary file generated during
- filtering (thanks Greg Childers)