![]() |
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. |
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.
|
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. |
FYI Jason, you still have 1.38 linked to your "previous stable" version source and binaries.
Jeff. |
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] |
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. |
[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. |
[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. |
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.
|
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=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.