Msieve Changelog

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)