mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Msieve (https://www.mersenneforum.org/forumdisplay.php?f=83)
-   -   Msieve 1.40 Beta Feedback (https://www.mersenneforum.org/showthread.php?t=11553)

fivemack 2009-03-22 20:36

When I build msieve-1.40 beta 2 under 64-bit Linux with gcc -march=k8, and run 'msieve -v -nc -t 4' with worktodo.ini=
[code]
136164885157821936705708129423943888496662901932834771963398138300361551134944437982472694343570849181067445301407746056812513031401082668575987611938805085365887366093279471781906744897853083399047101586259839304495541890100575969551069597187655389
[/code]
and msieve.fb =
[code]
N 136164885157821936705708129423943888496662901932834771963398138300361551134944437982472694343570849181067445301407746056812513031401082668575987611938805085365887366093279471781906744897853083399047101586259839304495541890100575969551069597187655389
A6 1
A0 -6
R1 -1
R0 1357602166130257152481187563160405662935023616

[/code]
I get a segfault in the 'dickman' routine. It looks as if it's been called with an unreasonably large value of 'arg'.

Problem does not exist in 1.39.

jasonp 2009-03-22 21:38

This is yet another symptom of the bug reported by mklasson and others. I'll try to get the full release of v1.40 out tonight.

Jeff Gilchrist 2009-03-24 15:54

Thanks for the update. Wow, this is going to be a busy day, I'm building binaries for the new YAFU 1.08, GMP-ECM 6.2.2, and now the new msieve. You guys are all on the same release schedule. :ouch2:

The 64bit Windows binaries will be up hopefully later today.

Jeff.

Jeff Gilchrist 2009-03-24 23:45

FYI Jason, you still have 1.38 linked to your "previous stable" version source and binaries.

Jeff.

Jeff Gilchrist 2009-03-25 15:27

Ok the 32bit and 64bit Windows MSVC binaries are now available:
[url]http://gilchrist.ca/jeff/factoring/[/url]

As before the poly selection code doesn't work with the 64bit binary but everything else does so you can use it for QS and NFS post-processing just fine. The 32bit MSVC binary is now faster than the gcc/mingw binary that Jason posts on the msieve website at least on my Core2. I would be interested in seeing someone with an AMD processor to try out the 32bit Windows versions to compare.

Here are some benchmarks with 1.39 vs 1.40:
[CODE]Intel Core2 Q9550 @ 3.4GHz (Vista 64bit)

SIQS (C85 = 1877138824359859508015524119652506869600959721781289179190693027302028679377371001561)
==================================================================================================
MSIEVE 1.40 32bit MSVC = 13m 12.638s
MSIEVE 1.40 32bit = 15m 23.490s
MSIEVE 1.39 32bit = 17m 12.597s
MSIEVE 1.40 64bit MSVC = 17m 16.731s
MSIEVE 1.39 64bit MSVC = 19m 43.278s

SIQS (C80 = 43756152090407155008788902702412144383525640641502974083054213255054353547943661)
=============================================================================================
MSIEVE 1.40 32bit MSVC = 4m 21.863s
MSIEVE 1.40 32bit = 4m 56.946s
MSIEVE 1.40 64bit MSVC = 5m 26.337s
MSIEVE 1.39 32bit = 5m 26.477s
MSIEVE 1.39 64bit MSVC = 6m 07.678s

SIQS (C75 = 281396163585532137380297959872159569353696836686080935550459706878100362721)
========================================================================================
MSIEVE 1.40 32bit MSVC = 1m 42.414s
MSIEVE 1.40 32bit = 1m 55.472s
MSIEVE 1.39 32bit = 2m 02.102s
MSIEVE 1.40 64bit MSVC = 2m 10.401s
MSIEVE 1.39 64bit MSVC = 2m 20.447s

SIQS (C65 = 34053408309992030649212497354061832056920539397279047809781589871)
==============================================================================
MSIEVE 1.40 32bit = 0m 14.711s
MSIEVE 1.40 32bit MSVC = 0m 14.929s
MSIEVE 1.39 32bit = 0m 15.429s
MSIEVE 1.40 64bit MSVC = 0m 15.912s
MSIEVE 1.39 64bit MSVC = 0m 16.240s[/CODE]

jasonp 2009-03-25 17:21

The performance difference between 32-bit and 64-bit MSVC is very interesting, I wonder what could be making the sieving so much slower.

Also, we can take this to email, but: could you try uncommenting the '#define CHECK' lines at the top of gnfs/poly/stage1/stage1_{roots|sieve}.c and retry NFS poly selection with a MSVC-compiled 64-bit binary? The fact it doesn't work with just that compiler is somewhat bothersome.

Jeff Gilchrist 2009-03-25 19:59

[QUOTE=jasonp;166654]The performance difference between 32-bit and 64-bit MSVC is very interesting, I wonder what could be making the sieving so much slower. [/QUOTE]

I'm not sure, I haven't looked a the code closely but do you have any assembler code that isn't being picked up and used when it is compiled with 64bit MSVC? That happens with YAFU, it uses generic C code for some things instead.

[QUOTE=jasonp;166654]Also, we can take this to email, but: could you try uncommenting the '#define CHECK' lines at the top of gnfs/poly/stage1/stage1_{roots|sieve}.c and retry NFS poly selection with a MSVC-compiled 64-bit binary? The fact it doesn't work with just that compiler is somewhat bothersome.[/QUOTE]

I will try that and get back to you in e-mail.

Jeff.

jasonp 2009-03-26 03:07

[QUOTE=Jeff Gilchrist;166669]I'm not sure, I haven't looked a the code closely but do you have any assembler code that isn't being picked up and used when it is compiled with 64bit MSVC? That happens with YAFU, it uses generic C code for some things instead.
[/QUOTE]
My initial guess was the generic implementation of mp_mod{add|sub}_1 doesn't use CMOV instructions, but that wouldn't account for a 25% runtime difference like you're seeing for a moderately big job.

fivemack 2009-03-26 08:23

I regret to inform you that the problem in [url]http://www.mersenneforum.org/showpost.php?p=166308&postcount=78[/url] continues to occur with the release version of 1.40.

jasonp 2009-03-26 16:26

In the factor base file, make the second line 'SKEW 1.00'

I could have sworn I made the default skew 1.0, but apparently did not in that code path. On line 80 of gnfs/poly/poly.c, change

[code]
if (buf[0] == 'S') {
if (skewness != NULL)
*skewness = atof(buf + 5);
fgets(buf, (int)sizeof(buf), fp);
}
[/code]
to
[code]
if (buf[0] == 'S') {
if (skewness != NULL)
*skewness = atof(buf + 5);
fgets(buf, (int)sizeof(buf), fp);
}
else if (skewness != NULL) {
*skewness = 1.0;
}
[/code]

Andi47 2009-03-26 18:07

[QUOTE=jasonp;166758]In the factor base file, make the second line 'SKEW 1.00'

I could have sworn I made the default skew 1.0, but apparently did not in that code path. On line 80 of gnfs/poly/poly.c, change

[code]
if (buf[0] == 'S') {
if (skewness != NULL)
*skewness = atof(buf + 5);
fgets(buf, (int)sizeof(buf), fp);
}
[/code]
to
[code]
if (buf[0] == 'S') {
if (skewness != NULL)
*skewness = atof(buf + 5);
fgets(buf, (int)sizeof(buf), fp);
}
else if (skewness != NULL) {
*skewness = 1.0;
}
[/code][/QUOTE]

Can you please post a windows binary for this fix?


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

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