mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Factoring (https://www.mersenneforum.org/forumdisplay.php?f=19)
-   -   Running GGNFS (https://www.mersenneforum.org/showthread.php?t=9645)

axn 2010-04-25 20:52

[QUOTE=henryzz;213147]The time taken increased by 5.5% by increasing lpbr/a from 24 to 32. That's not much difference in time and I would hope that some sieving would be saved by having the extra relations.[/QUOTE]

What extra relations? Any additional relations obtained would be offset by the need to find more relations (because you're using higher lpb). Do you have the statistics of exactly how much relations were found for each of these cases?

jasonp 2010-04-25 22:35

Running small examples will not give an accurate picture of what's going on, because if a small test maintains a reasonable relation rate with 24-bit large primes then the relation rate with larger limits would be enormous. As axn mentioned, this is offset by the fact that it takes much longer to accumulate enough relations so that the number of relations exceeds the number of large primes that occur more than once.

The real acid test is to compare the sieving rate on problems large enough so that the relation rate for small lpb[ra] is extremely low; then incrementing lpbr/lpba will boost the relation rate above and beyond the extra overhead incurred by the more difficult postprocessing.

ThomRuley 2010-04-29 00:29

[QUOTE=jbristow;119193]I haven't tried using factlat.pl, but from what I hear, it's the easiest way to "fire and forget" on smaller numbers.

I'm still learning, but here's what I'm doing. For GNFS factorizations, I start with pol51m0b and pol51opt. There are suggested parameters for composites of various size in one of the text files included in the ggnfs source. After running these, you'll have some candidate polynomials. For a smaller factorization, I'll just use the one with the best Murphy Score, but for a larger factorization you may want to test-sieve a few.

Once you have a polynomial (either from using the GNFS tools above or constructing a SNFS polynomial), you can create an input file and run gnfs-lasieve4I13e (or 4I12e or 4I14e depending on the size of the number). There are suggested sieving parameters in a ggnfs text file, and that's a good place to start. When you get more comfortable with the program, it's good to play around with these parameters to see what impact they have and how can improve them. The siever will create spairs.out files containing partial relations.

When I have enough relations, I let msieve to do the postprocessing.

Here are some sample input files I have lying around for the various stages. They're all for different numbers. Be sure to use parameters appropriate for the number you're trying to factor.

GNFS Polynomial Selection (I specify the important parameters on the command line):

[code]n: 416955224390051909645766344571335335970454057745625070613351672491273631395040877044447543182712012172092594092483453878327809
name: InputNumber
deg: 5[/code]

Sieving:
[code]name: 7+4,208
n: 330920012486087349080109790318551271465360626325705572458597079001254847296470672859765423189021129535027618816154932964775467328815332193
deg: 6
c6: 1
c5: -1
c4: -5
c3: 4
c2: 6
c1: -3
c0: -1
Y1: 142734349946674946768896
Y0: -1104427692690664720014850817
skew: 1
type: snfs
rlim: 4500000
alim: 4500000
lpbr: 27
lpba: 27
mfbr: 53
mfba: 53
rlambda: 2.4
alambda: 2.4
q0: 4500001
qintsize: 10000000[/code]

msieve:
[code]N 21794540430563178925786277073735013833408459289340429954014220820936319062595028718005767254056951658089778749214084436566370814330793743233518175202183
R0 -129934811447123020117172145698449
R1 1350851717672992089
A0 3
A1 0
A2 0
A3 0
A4 0
A5 7
FRMAX 4500000
FAMAX 4500000
SRLPMAX 134217728
SALPMAX 134217728
SRTFBITS 52
SATFBITS 52[/code][/QUOTE]

Would the A0, A1, etc correspond to 1+x+X^2 and so on?

3.14159 2010-05-26 22:34

Hmm.. I'm having a bit of a problem with the configuration of the files.
The site does state that the following files are needed:
[QUOTE]Your ggnfs directory (C:\ggnfs or /ggnfs) should now contain the following files (UNIX users will not have an .exe extension for the executables):
def-nm-params.txt
def-par.txt
factLat.pl
factMsieve.pl
factmsieve.py
ggnfs-doc.pdf
gnfs-lasieve4I11e.exe
gnfs-lasieve4I12e.exe
gnfs-lasieve4I13e.exe
gnfs-lasieve4I14e.exe
gnfs-lasieve4I15e.exe
gnfs-lasieve4I16e.exe
makefb.exe
matbuild.exe
matprune.exe
matsolve.exe
msieve.exe
pol51m0b.exe
pol51m0n.exe
pol51opt.exe
polyselect.exe
procrels.exe
sieve.exe
sqrt.exe[/QUOTE]

I do have the files and the working directories the site asks for, as well as the programs needed: (Msieve/GNFS binaries + Python 2.6)

[QUOTE]After you have downloaded or compiled the GGNFS binaries, copy them to a directory on your system such as: C:\ggnfs or /ggnfs
The GGNFS distribution contains an older version of msieve, you should now copy your newly downloaded or compiled msieve binary over the old one in: C:\ggnfs or /ggnfs
Install the python 2.6 or later distribution that you downloaded. Copy your newly downloaded factmsieve.py file to the ggnfs directory: C:\ggnfs or /ggnfs[/QUOTE]

But I do have a bit of a problem with what they meant by "overwrite". I'm unsure if the site's writer meant "replace" or "insert".
Also, I receive the following error message: "Did you set the paths properly in this script: They are currently set to: GGNFS_BIN_PATH = ../; MSIEVE_BIN_PATH = ../"
The site instructs you to set them to exactly that:
[QUOTE]Change lines 59-62 from:
# Set binary directory paths

GGNFS_PATH = '../../bin/x64/Release/'
MSIEVE_PATH = '../../../msieve/build.vc9/x64/Release/'
to:
# Set binary directory paths

GGNFS_PATH = '../'
MSIEVE_PATH = '../'[/QUOTE]

Me thinks this page reeks of errors. :no:
Although I probably made mountains of errors myself.
My file directory:
def-nm-params.txt
def-par.txt
factLat.pl
factMsieve.pl
factmsieve.py
ggnfs-doc.pdf
gnfs-lasieve4I11e.exe
gnfs-lasieve4I12e.exe
gnfs-lasieve4I13e.exe
gnfs-lasieve4I14e.exe
gnfs-lasieve4I15e.exe
gnfs-lasieve4I16e.exe
makefb.exe
matbuild.exe
matprune.exe
matsolve.exe
msieve.exe
pol51m0b.exe
pol51m0bx.exe
pol51m0n.exe
pol51opt.exe
pol51optx.exe
polyselect.exe
procrels.exe
sieve.exe
sqrt.exe

Another error message: "Could not find the program: msieve"
I think Command Prompt is trying to do the following to me: :kitten:

3.14159 2010-05-27 02:25

Update: Got app running, just need proper syntax.

Andi47 2010-05-30 10:09

def-par.txt ignored?
 
I have changed the gnfs-parameters in my copy of def-par.txt to this:

[code]gnfs,70,4,51,1500,4.0e-2,0.30,200,12,10000,200,300000,350000,24,24,34,34,1.7,1.7,8000,2000000,200
gnfs,75,4,52,1500,1.2e-2,0.30,200,12,10000,300,350000,400000,24,24,34,34,1.7,1.7,10000,2000000,200
gnfs,80,4,52,1500,5.0e-3,0.30,220,15,10000,400,350000,500000,24,24,37,37,1.7,1.7,10000,2000000,200
gnfs,85,4,56,1500,1.0e-3,0.30,200,15,10000,500,550000,550000,24,24,40,40,1.9,1.9,10000,2000000,200
gnfs,88,4,56,1500,6.0e-4,0.30,200,15,10000,500,600000,600000,25,25,43,43,2.2,2.2,10000,2000000,200
gnfs,90,4,58,2000,2.5e-4,0.30,220,15,10000,600,700000,700000,25,25,44,44,2.4,2.4,40000,2000000,200
gnfs,95,4,60,2000,1.0e-4,0.30,220,15,10000,600,1200000,1200000,25,25,45,45,2.4,2.4,60000,2000000,200
gnfs,100,5,58,1500,3.0e-3,0.4,220,15,10000,2000,1800000,1800000,26,26,48,48,2.5,2.5,100000,4000000,300
gnfs,103,5,59,2000,9.0e-4,0.35,200,15,15000,2000,2300000,2300000,26,26,49,49,2.6,2.6,100000,4000000,300
gnfs,106,5,59,2000,6.0e-4,0.25,200,15,15000,2000,2500000,2500000,26,26,49,49,2.6,2.6,150000,4000000,300
gnfs,110,5,61,2000,1.5e-4,0.3,250,15,50000,2400,3200000,3200000,27,27,50,50,2.6,2.6,100000,4000000,300
gnfs,112,5,61,2000,1.6e-4,0.25,250,15,50000,2800,3500000,3500000,27,27,50,50,2.6,2.6,100000,4000000,300
gnfs,118,5,63,2000,2.6e-5,0.28,250,20,50000,3600,4500000,4500000,27,27,50,50,2.4,2.4,60000,4000000,300
# These next few are guesses based on a few factorizations of that size. But then, I think most of these are. At
# some point, we need to gather some stats and figure out reasonable choices
# in a systematic way.
gnfs,122,5,65,2000,1.0e-5,0.28,250,20,50000,3600,6000000,6000000,27,27,50,50,2.4,2.4,60000,4000000,300
gnfs,126,5,65,2000,1.0e-5,0.28,250,20,50000,3600,8000000,8000000,27,27,51,51,2.5,2.5,100000,4000000,300
[B][COLOR="Blue"]gnfs,128[/COLOR][/B],5,65,2000,1.0e-5,0.28,250,20,50000,3600,[B][COLOR="Red"]11000000,11000000,27,27,52,52,2.6,2.6[/COLOR][/B],100000,4000000,300
gnfs,130,5,65,2000,1.0e-5,0.28,250,20,50000,3600,11000000,11000000,27,27,54,54,2.6,2.6,100000,4000000,300
gnfs,134,5,65,2000,1.0e-5,0.28,250,20,50000,3600,12000000,12000000,28,28,56,56,2.6,2.6,100000,4000000,300
gnfs,137,5,65,2000,1.0e-5,0.28,250,20,50000,3600,15000000,15000000,28,28,56,56,2.6,2.6,100000,4000000,300
gnfs,140,5,65,2000,1.0e-5,0.28,250,20,50000,3600,16000000,16000000,28,28,56,56,2.6,2.6,100000,4000000,300
gnfs,142,5,65,2000,1.0e-5,0.28,250,20,50000,3600,18000000,18000000,28,28,56,56,2.6,2.6,100000,4000000,300
gnfs,145,5,65,2000,1.0e-5,0.28,250,20,50000,3600,20000000,20000000,29,29,58,58,2.6,2.6,100000,4000000,300
gnfs,149,5,65,2000,1.0e-5,0.28,250,20,50000,3600,30000000,30000000,29,29,58,58,2.6,2.6,100000,4000000,300
gnfs,153,5,65,2000,1.0e-5,0.28,250,20,50000,3600,33554431,33554431,29,29,58,58,2.6,2.6,100000,4000000,300
gnfs,157,5,65,2000,1.0e-5,0.28,250,20,50000,3600,42000000,42000000,29,29,58,58,2.6,2.6,100000,4000000,300
gnfs,161,5,65,2000,1.0e-5,0.28,250,20,50000,3600,50000000,50000000,30,30,60,60,2.6,2.6,100000,4000000,300
gnfs,165,5,65,2000,1.0e-5,0.28,250,20,50000,3600,55000000,55000000,30,30,60,60,2.6,2.6,100000,4000000,300
gnfs,171,5,65,2000,1.0e-5,0.28,250,20,50000,3600,67108863,67108863,30,30,60,60,2.6,2.6,100000,4000000,300
gnfs,177,5,65,2000,1.0e-5,0.28,250,20,50000,3600,100000000,100000000,31,31,62,62,2.6,2.6,100000,4000000,300
gnfs,180,5,65,2000,1.0e-5,0.28,250,20,50000,3600,134217726,268435454,31,31,62,62,2.6,2.6,100000,4000000,300
[/code]

Now aliqueit has encountered a c129 and started factmsieve.pl to factor it - and I would have expected that it would use:

[code]rlim: 11000000
alim: 11000000
lpbr: 27
lpba: 27
mfbr: 52
mfba: 52
rlambda: 2.6
alambda: 2.6[/code]

Instead, it is unsing these parameters:

[code]n: 236708764512270870267910594603939528512072109211410346931645230023427790084558423739104638523341257857996001764863899983660894883
m:
Y0: -8222033980857525894160773
Y1: 91488489895543
c0: -9222601885280082007413455156084
c1: 109094498156246601498372704
c2: 3395885860600535601449
c3: -6049174266708986
c4: -29393783262
c5: 6300
skew: 332552.31
[B][COLOR="Red"]rlim: 6800000
alim: 6400000
lpbr: 28
lpba: 28
mfbr: 55
mfba: 55
rlambda: 2.5
alambda: 2.5[/COLOR][/B]
q0: 6487494
qintsize: 12499
#q1:6499993
[/code]

Any ideas, why? :help:

chris2be8 2010-05-30 10:58

factMsieve.pl lowers the alim and rlim to just under the start of range it is sieving from. It should raise them once it is onto higher ranges.

Chris K

Andi47 2010-05-30 12:01

[QUOTE=chris2be8;216658]factMsieve.pl lowers the alim and rlim to just under the start of range it is sieving from. It should raise them once it is onto higher ranges.

Chris K[/QUOTE]

Yes, but why does it use lpbr/a 28 and mfbr/a 55 instead of 27 resp. 52?

smh 2010-05-30 12:25

[QUOTE=chris2be8;216658]factMsieve.pl lowers the alim and rlim to just under the start of range it is sieving from. It should raise them once it is onto higher ranges.

Chris K[/QUOTE]Thought there's no need to do this anymore as the lasieve binaries do this themselves?

Andi47 2010-05-30 18:12

[QUOTE=Andi47;216663]Yes, but why does it use lpbr/a 28 and mfbr/a 55 instead of 27 resp. 52?[/QUOTE]

Seems I have found why the def-params.txt was ignored:

The parameters file did not contain a line "type: gnfs" (the file was created by aliqueit) and so the following thing happened:

[CODE] $DIGS = ([B]$type eq "gnfs"[/B]) ? $realDIGS/0.72 : $realDIGS;
# 0.72 is inspired by T.Womack's crossover 28/29 for GNFS-144 among other considerations
if($DIGS>=160) { # the table parameters are easily splined; the table may be not needed at all --SB.
$RLIM= $ALIM = int(0.07*10**($DIGS/60.0)+0.5)*100000;
$LPBR= $LPBA = int(21+$DIGS/25);
$MFBR= $MFBA = ($DIGS<190) ? 2*$LPBR-1 : 2*$LPBR;
$RLAMBDA= $ALAMBDA= ($DIGS<200) ? 2.5 : 2.6;
$QINTSIZE=$QSTEP = 100000;
$classicalA = 4000000;
$classicalB = 400;
$paramDIGS = $realDIGS;
}[/CODE]

$type was apparently not defined (or at least not set to "gnfs"), and so $DIGS was set to 179.166666666 (=129/0.72) instead of 129. So the "if($DIGS>160)" lines took effect and thus ignored the def-params.txt file.

Adding a line which does something like "if $type is not defined, set it to "gnfs"" might help, but I am not very familiar with pearl...

I [I]guess[/I] that I have to add:

[code]# set your preferred factoring type (snfs or gnfs). This will be overruled iff the polynomial file
# contains either "type: gnfs" or "type: snfs".

$DEFAULTTYPE="gnfs"[/code]

into the configuration section (e.g. just below the line "$NUM_THREADS=$NUM_CPUS;")

and (I'm not sure about the following line! Please correct me if I'm wrong!)

[CODE]$type = ($type eq "") ? $DEFAULTTYPE : $type[/CODE]

just above the line " $DIGS = ($type eq "gnfs") ? $realDIGS/0.72 : $realDIGS;"?

BTW: What does the line "my $type=$_[2];" do? Does it read the type from the polynomial file?

Edit2: I just found out that the [I]input file[/I] contained the line "type: gnfs", but the poly files which are created by factmsieve.pl for using multiple sieving threads do not contain this line. From which line does factmsieve.pl read the type?

Is it possible that the line " $DIGS = ($type eq "gnfs") ?[B] $realDIGS/0.72 : $realDIGS[/B];" gets it the wrong way
and it should rather read " $DIGS = ($type eq "gnfs") ?[B] $realDIGS : $realDIGS/0.72;[/B]"?

Edit3: I am not very familiar with pearl - do I get it right and the original line means "if $type is equal to "gnfs", then set $DIGS to $realDIGS/0.72, else to $realDIGS"?

Batalov 2010-05-30 19:46

[quote=Andi47;216706]Seems I have found why the def-params.txt was ignored:

The parameters file did not contain a line "type: gnfs" (the file was created by aliqueit) and so the following thing happened: ...
[/quote]
For use with factMsieve.pl, the file should contain "type: gnfs|snfs" no matter what it was created with. The perl script usually simply stops when this line is missing, and the reason is clear - gnfs and snfs parameters are very different, and [I]guessing[/I] will get you wrong results one way or another. So the perl script doesn't guess and stops - with a suggestion to add this line (unsure why it hasn't stopped in your case).

[SIZE=1]For those who doesn't use the script, this line is unimportant, but note that these users (runs sims and) set all the parameters themselves (and others, for distributed projects). That's a different story.[/SIZE]


All times are UTC. The time now is 22:54.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.