[Gmp-commit] /var/hg/www: Updates for 5.1.0a.

mercurial at gmplib.org mercurial at gmplib.org
Thu Feb 7 12:25:23 CET 2013


details:   /var/hg/www/rev/f5368789ff82
changeset: 21:f5368789ff82
user:      Torbjorn Granlund <tege at gmplib.org>
date:      Thu Feb 07 12:25:19 2013 +0100
description:
Updates for 5.1.0a.

diffstat:

 devel/index.html |  31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

diffs (55 lines):

diff -r f3eaaa487b02 -r f5368789ff82 devel/index.html
--- a/devel/index.html	Wed Feb 06 22:37:50 2013 +0100
+++ b/devel/index.html	Thu Feb 07 12:25:19 2013 +0100
@@ -56,12 +56,13 @@
 
 <h3> GMP release update </h3>
 
-<p> GMP 5.1.0 is out, but only from the gmplib servers.  A 5.1.0a might show up
-on the gnu.org servers at some point, but we cannot tell that yet.  There are
-several silly problems behind this; one a major overreaction to a minor
-automake issue which hyopthetically affects 5.1.0 (if users run the distcheck
-target, a malicous user might insert a file into a momentarily world-writable
-directory).
+<p> GMP 5.1.0 is out 2012-12-18.  An equivalent 5.1.0a is available from the
+gnu.org servers since 2013-02-02; these releases will generate the exact same
+binaries.  The difference between them is a minor automake issue which
+hyopthetically affects 5.1.0 (if users run the distcheck target, a malicous
+user might insert a file into a momentarily world-writable directory).  All
+previous GMP releases are also affected, as well as almost all other GNU
+software.
 </p>
 
 <p> Note that GMP newer than 5.0 on x86 or ARM cannot typically use valgrind.
@@ -96,6 +97,22 @@
 </table>
 </blockquote>
 
+<p> The qn > dn case is where the current code performs badly. For qn =
+100000 we have a slowdown of about 55% (compare nn=200000 with nn=174500). </p>
+
+<p> There, we now choose to compute an inverse of size in = ⌈dn/2⌉.
+Since qn > dn, we will have 2in < qn, which means that we will need to
+develop quotient limbs in more than 2 blocks; the code computes a most
+significant block of (qn - 2in) quotient limbs, and then two blocks of (in)
+quotient limbs each.  (The final block uses mpn_preinv_mu_divappr_q.) </p>
+
+<p> The inordinate cost we see emanates from the computation of the qn - 2in
+block. </p>
+
+<p> The fix is choosing the inverse size less stupidly, and organising the
+computation in more similarly sized quotient blocks.  It seems this will
+require more than just computing (in) differently, it will require some
+hacking. </p>
 
 <hr>
 
@@ -380,7 +397,7 @@
 </div>
 
 <div id="footer">
-<font size="-4">Last modified: 2013-02-04 </font>
+<font size="-4">Last modified: 2013-02-07 </font>
 <table cellpadding=0 width="100%" bgcolor="#e8e8e8">
   <tr>
     <td align="center">


More information about the gmp-commit mailing list