mersenneforum.org (https://www.mersenneforum.org/index.php)
-   YAFU (https://www.mersenneforum.org/forumdisplay.php?f=96)

 bsquared 2021-05-06 14:27

Nothing but good news, I am happy too.

 Stargate38 2021-05-06 16:05

Possible bug in SIQS

When I try to factor this number, YAFU gets stuck, and just sits there using up my RAM:

[code]05/06/21 11:38:27,
05/06/21 11:38:27, ****************************
05/06/21 11:38:27, Starting factorization of 22483602822411223334855029666009218022270527893974405884054854479042089269501959654874976198718241182261793523272124947
05/06/21 11:38:27, using pretesting plan: deep
05/06/21 11:38:27, using tune info for qs/gnfs crossover
05/06/21 11:38:27, ****************************
05/06/21 11:38:27, rho: x^2 + 3, starting 1000 iterations on C119
05/06/21 11:38:27, prp9 = 405125431
05/06/21 11:38:27, rho: x^2 + 3, starting 1000 iterations on C110
05/06/21 11:38:27, prp10 = 3464048167
05/06/21 11:38:27, rho: x^2 + 3, starting 1000 iterations on C101
05/06/21 11:38:28, rho: x^2 + 2, starting 1000 iterations on C101
05/06/21 11:38:28, rho: x^2 + 1, starting 1000 iterations on C101
05/06/21 11:38:28, pm1: starting B1 = 150K, B2 = gmp-ecm default on C101
05/06/21 11:38:28, current ECM pretesting depth: 0.00
05/06/21 11:38:28, scheduled 30 curves at B1=2000 toward target pretesting depth of 33.67
05/06/21 11:38:28, Finished 30 curves using GMP-ECM method on C101 input, B1=2k, B2=gmp-ecm default
05/06/21 11:38:28, current ECM pretesting depth: 15.18
05/06/21 11:38:28, scheduled 74 curves at B1=11000 toward target pretesting depth of 33.67
05/06/21 11:38:30, Finished 74 curves using GMP-ECM method on C101 input, B1=11k, B2=gmp-ecm default
05/06/21 11:38:30, current ECM pretesting depth: 20.24
05/06/21 11:38:30, scheduled 214 curves at B1=50000 toward target pretesting depth of 33.67
05/06/21 11:38:38, Finished 214 curves using GMP-ECM method on C101 input, B1=50k, B2=gmp-ecm default
05/06/21 11:38:38, pm1: starting B1 = 3750K, B2 = gmp-ecm default on C101
05/06/21 11:38:39, current ECM pretesting depth: 25.33
05/06/21 11:38:39, scheduled 430 curves at B1=250000 toward target pretesting depth of 33.67
05/06/21 11:39:37, Finished 430 curves using GMP-ECM method on C101 input, B1=250k, B2=gmp-ecm default
05/06/21 11:39:37, pm1: starting B1 = 15M, B2 = gmp-ecm default on C101
05/06/21 11:39:39, current ECM pretesting depth: 30.45
05/06/21 11:39:39, scheduled 582 curves at B1=1000000 toward target pretesting depth of 33.67
05/06/21 11:44:26, Finished 582 curves using GMP-ECM method on C101 input, B1=1M, B2=gmp-ecm default
05/06/21 11:44:26, final ECM pretested depth: 33.67
05/06/21 11:44:26, scheduler: switching to sieve method
05/06/21 11:44:26, starting SIQS on c101: 16021105361578943740813272184915150830500965883014131722097771902253017316544048423666824742984602611
05/06/21 11:44:26, random seed: 2350092192
[/code]

Stdout:

[code]starting SIQS on c101: 16021105361578943740813272184915150830500965883014131722097771902253017316544048423666824742984602611
static memory usage:
assigning tdiv_medprimes_32k_avx2 ptr
assigning tdiv_LP_avx2 ptr
assigning resieve_medprimes_32k_avx2 ptr
assigning med_sieveblock_32k_avx2 ptr
assigning nextRoots_32k_sse41 ptr
initial cycle hashtable: 16777216 bytes
initial cycle table: 160000 bytes
factor base: 2452160 bytes
fb bounds
small: 1024
SPV: 36
10bit: 88
11bit: 160
12bit: 296
13bit: 528
32k div 3: 688
14bit: 984
15bit: 1760
med: 2912
large: 16704
large_x2: 31670
all: 122608
start primes
SPV: 251
10bit: 1063
11bit: 2153
12bit: 4177
13bit: 8273
32k div 3: 11083
14bit: 16417
15bit: 32803
med: 57593
large: 393161
large_x2: 786431
all: 3423347
05/06/21 11:44:26, multiplying 0 primes from 3423347 to 1398101[/code]

During this process, the CPU usage suggests only 1 out of 8 threads are running. Looks like a memory leak. Same thing happens with 2.01.

 bsquared 2021-05-06 16:14

Looks like it is trying to run TLP, which is still somewhat experimental. Set forceDLP=1 in yafu.ini or use -forceDLP on command line. I should set the crossover point much higher.

 Stargate38 2021-05-08 15:59

Bug in SIQS

This number crashes YAFU when I try to factor it by SIQS: 18425466191500234497808154837889417418704176536401223

[code]C:\Numbers\aliqueit112>yafu siqs(18425466191500234497808154837889417418704176536401223)
Applying tune_info entry for WIN64 - Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz

YAFU Version 2.01
Built with Microsoft Visual Studio 1928
Detected Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz
Detected L1 = 32768 bytes, L2 = 8388608 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>>
starting SIQS on c53: 18425466191500234497808154837889417418704176536401223

==== sieve params ====
n = 54 digits, 177 bits
factor base: 1824 primes (max prime = 33317)
single large prime cutoff: 2165605 (65 * pmax)
double large prime range from 1110022489 to 122254169454
DLP MFB = 1.75
using AVX2 enabled 32k sieve core
sieve interval: 2 blocks of size 32768
polynomial A has ~ 6 factors
using multiplier of 7
using SPV correction of 20 bits, starting at offset 32
trial factoring cutoff at 59 bits

==== sieving in progress ( 8 threads): 1888 relations needed ====
==== Press ctrl-c to abort and save state ====

C:\Numbers\aliqueit112>[/code]factor.log (different number):

[code]05/08/21 12:00:58,
05/08/21 12:00:58, ****************************
05/08/21 12:00:58, Starting factorization of 7441641010125238485066955189052433051233165900729353
05/08/21 12:00:58, using pretesting plan: deep
05/08/21 12:00:58, using tune info for qs/gnfs crossover
05/08/21 12:00:58, ****************************
05/08/21 12:00:58, rho: x^2 + 3, starting 1000 iterations on C52
05/08/21 12:00:58, rho: x^2 + 2, starting 1000 iterations on C52
05/08/21 12:00:58, rho: x^2 + 1, starting 1000 iterations on C52
05/08/21 12:00:58, pm1: starting B1 = 150K, B2 = gmp-ecm default on C52
05/08/21 12:00:58, current ECM pretesting depth: 0.00
05/08/21 12:00:58, scheduled 30 curves at B1=2000 toward target pretesting depth of 17.33
05/08/21 12:00:58, Finished 30 curves using GMP-ECM method on C52 input, B1=2k, B2=gmp-ecm default
05/08/21 12:00:58, current ECM pretesting depth: 15.18
05/08/21 12:00:58, scheduled 33 curves at B1=11000 toward target pretesting depth of 17.33
05/08/21 12:00:59, Finished 33 curves using GMP-ECM method on C52 input, B1=11k, B2=gmp-ecm default
05/08/21 12:00:59, final ECM pretested depth: 17.41
05/08/21 12:00:59, scheduler: switching to sieve method
05/08/21 12:00:59, starting SIQS on c52: 7441641010125238485066955189052433051233165900729353
05/08/21 12:00:59, random seed: 271793012
[/code]

What could be causing this?

 bsquared 2021-05-10 15:40

Thanks for the report. I found the problem, will update github tonight.

 bsquared 2021-05-11 15:02

Updated .exe, version 2.02, works for me for both inputs now.

 Stargate38 2021-05-21 18:16

Super slow SIQS job

Version 2.02. Is this a bug, or is this number just extra hard to SIQS?

[code]starting SIQS on c102: 587798871182819125651887557119241311895329541639294971678415636172181853499307568869458721586841379351
input from file = 14250842901942372507862702317705623516368553484793953297942917764303309346251613
input to yafu = 587798871182819125651887557119241311895329541639294971678415636172181853499307568869458721586841379351
assigning tdiv_medprimes_32k_avx2 ptr
assigning tdiv_LP_avx2 ptr
assigning resieve_medprimes_32k_avx2 ptr
assigning med_sieveblock_32k_avx2 ptr
assigning nextRoots_32k_sse41 ptr
fb bounds
small: 1024
SPV: 37
10bit: 104
11bit: 160
12bit: 288
13bit: 528
32k div 3: 688
14bit: 976
15bit: 1824
med: 2944
large: 16560
large_x2: 31466
all: 136784
start primes
SPV: 251
10bit: 1093
11bit: 2063
12bit: 4099
13bit: 8233
32k div 3: 11083
14bit: 16477
15bit: 33181
med: 57653
large: 393073
large_x2: 786419
all: 3853613

==== sieve params ====
n = 102 digits, 339 bits
factor base: 136784 primes (max prime = 3853613)
single large prime cutoff: 4194304 (2^22)
double large prime range from 14850333153769 to 1786161908965
DLP MFB = 1.85
allocating 10 large prime slices of factor base
buckets hold 2048 elements
large prime hashtables have 1966080 bytes
using AVX2 enabled 32k sieve core
sieve interval: 12 blocks of size 32768
polynomial A has ~ 13 factors
using multiplier of 1
using SPV correction of 21 bits, starting at offset 37
trial factoring cutoff at 100 bits

==== sieving in progress ( 8 threads): 136848 relations needed ====
==== Press ctrl-c to abort and save state ====
30849 rels found: 29856 full + 993 from 4937 partial, ( 13.40 rels/sec)[/code]Notice how slow it's going (13.4 rels/sec). Definitely not normal for any number, especially <120 digits (my qs/nfs cutoff is about 107 digits).

Also, if I hit Ctrl+C, it acts like it's going to stop and save progress, but then it resumes SIQS, and hitting Ctrl+C after that results in the same thing happening, ad infinitium.

 richs 2021-05-24 00:39

This composite shut down YAFU 2.0:

[CODE]05/23/21 17:33:05,
05/23/21 17:33:05, ****************************
05/23/21 17:33:05, Starting factorization of 103308857900791703352287869169508708227648131233709032715890962117020801090916449
05/23/21 17:33:05, using pretesting plan: normal
05/23/21 17:33:05, using tune info for qs/gnfs crossover
05/23/21 17:33:05, ****************************
05/23/21 17:33:05, rho: x^2 + 3, starting 1000 iterations on C81
05/23/21 17:33:05, rho: x^2 + 2, starting 1000 iterations on C81
05/23/21 17:33:05, rho: x^2 + 1, starting 1000 iterations on C81
05/23/21 17:33:06, pm1: starting B1 = 150K, B2 = gmp-ecm default on C81
05/23/21 17:33:06, current ECM pretesting depth: 0.00
05/23/21 17:33:06, scheduled 30 curves at B1=2000 toward target pretesting depth of 24.92
05/23/21 17:33:06, prp13 = 3872943390781 (curve 6 stg1 B1=2000 sigma=970380758 thread=0)
05/23/21 17:33:06, Finished 5 curves using GMP-ECM method on C81 input, B1=2k, B2=gmp-ecm default
05/23/21 17:33:06, current ECM pretesting depth: 0.00
05/23/21 17:33:06, scheduled 25 curves at B1=2000 toward target pretesting depth of 20.92
05/23/21 17:33:06, Finished 25 curves using GMP-ECM method on C68 input, B1=2k, B2=gmp-ecm default
05/23/21 17:33:06, current ECM pretesting depth: 15.18
05/23/21 17:33:06, scheduled 74 curves at B1=11000 toward target pretesting depth of 20.92
05/23/21 17:33:10, Finished 74 curves using GMP-ECM method on C68 input, B1=11k, B2=gmp-ecm default
05/23/21 17:33:10, current ECM pretesting depth: 20.24
05/23/21 17:33:10, scheduled 30 curves at B1=50000 toward target pretesting depth of 20.92
05/23/21 17:33:11, prp21 = 218508274628377506823 (curve 9 stg2 B1=50000 sigma=2404298899 thread=0)
05/23/21 17:33:11, Finished 8 curves using GMP-ECM method on C68 input, B1=50k, B2=gmp-ecm default
05/23/21 17:33:11, final ECM pretested depth: 20.43
05/23/21 17:33:11, scheduler: switching to sieve method
05/23/21 17:33:11, starting SIQS on c48: 122075503284873779273269492531896208174435532323
05/23/21 17:33:11, random seed: 673297527610098076
05/23/21 17:33:11, prp48 = 122075503284873779273269492531896208174435532323
05/23/21 17:33:11, Total factoring time = 6.8201 seconds
05/23/21 17:34:13,
05/23/21 17:34:13, ****************************
05/23/21 17:34:13, Starting factorization of 273968285551543561558929035118492073468079807518167517816153740095519155430779807
05/23/21 17:34:13, using pretesting plan: normal
05/23/21 17:34:13, using tune info for qs/gnfs crossover
05/23/21 17:34:13, ****************************
05/23/21 17:34:13, rho: x^2 + 3, starting 1000 iterations on C81
05/23/21 17:34:14, rho: x^2 + 2, starting 1000 iterations on C81
05/23/21 17:34:14, rho: x^2 + 1, starting 1000 iterations on C81
05/23/21 17:34:14, pm1: starting B1 = 150K, B2 = gmp-ecm default on C81
05/23/21 17:34:15, c38 = 48704721444132343902237399692386801093
05/23/21 17:34:15, final ECM pretested depth: 0.00
05/23/21 17:34:15, scheduler: switching to sieve method
05/23/21 17:34:15, starting SIQS on c43: 5625086797094281224029938254545114665121299
05/23/21 17:34:15, random seed: 673297527610098076
05/23/21 17:34:15, prp43 = 5625086797094281224029938254545114665121299
05/23/21 17:34:15,
05/23/21 17:34:15, ****************************
05/23/21 17:34:15, Starting factorization of 48704721444132343902237399692386801093
05/23/21 17:34:15, using pretesting plan: normal
05/23/21 17:34:15, no tune info: using qs/gnfs crossover of 95 digits
05/23/21 17:34:15, no tune info: using qs/snfs crossover of 75 digits
05/23/21 17:34:15, ****************************
05/23/21 17:34:15, rho: x^2 + 3, starting 1000 iterations on C38
05/23/21 17:34:15, rho: x^2 + 2, starting 1000 iterations on C38
05/23/21 17:34:15, rho: x^2 + 1, starting 1000 iterations on C38
05/23/21 17:34:15, final ECM pretested depth: 0.00
05/23/21 17:34:15, scheduler: switching to sieve method
05/23/21 17:34:15, starting SIQS on c38: 48704721444132343902237399692386801093
05/23/21 17:34:15, random seed: 16249113150029718896[/CODE]

 bsquared 2021-05-24 14:48

[QUOTE=richs;578962]This composite shut down YAFU 2.0:
[/QUOTE]

Are you sure you have the latest executable version 2.02? It works for me in every version I can test with 2.02.

 bsquared 2021-05-24 15:12

[QUOTE=Stargate38;578815]Version 2.02. Is this a bug, or is this number just extra hard to SIQS?
...
Definitely not normal for any number, especially <120 digits (my qs/nfs cutoff is about 107 digits).
[/QUOTE]

Thanks. Yeah, that's a bug... it is using (kind of) a table of parameters for TLP when it shouldn't be. I will upload a new executable tonight.

[QUOTE=Stargate38;578815]
Also, if I hit Ctrl+C, it acts like it's going to stop and save progress, but then it resumes SIQS, and hitting Ctrl+C after that results in the same thing happening, ad infinitium.[/QUOTE]

You need to hit Ctrl+C twice somewhat rapidly. If it doesn't detect a second Ctrl+C soon enough it will resume.

 richs 2021-05-24 17:10

[QUOTE=bsquared;578977]Are you sure you have the latest executable version 2.02? It works for me in every version I can test with 2.02.[/QUOTE]

It works fine with 2.02. I was using 2.0 for that run. Sorry for the trouble.

 richs 2021-05-24 20:34

This C104 locks up my Windows 10 laptop:

[CODE]Applying tune_info entry for WIN64 - Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz

YAFU Version 2.02
Built with Microsoft Visual Studio 1928
Detected Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
Detected L1 = 32768 bytes, L2 = 8388608 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>> siqs (57101411218654014741793559578775000033369536827633664601791874261717679856288033051871376889825129117307)

starting SIQS on c104: 57101411218654014741793559578775000033369536827633664601791874261717679856288033051871376889825129117307
05/24/21 13:27:01, multiplying 0 primes from 4353163 to 1398101[/CODE]

Nothing happens after this and I have to shut it down. Same thing happens with YAFU 2.0. SIQS on this number runs fine on YAFU 1.0.

 bsquared 2021-05-24 20:39

[QUOTE=richs;578987]This C104 locks up my Windows 10 laptop:

Nothing happens after this and I have to shut it down. Same thing happens with YAFU 2.0. SIQS on this number runs fine on YAFU 1.0.[/QUOTE]

Thanks for the report. This is due to the same bug Stargate reported and will be fixed after I'm able to re-build the project tonight.

 richs 2021-05-24 22:05

[QUOTE=bsquared;578988]Thanks for the report. This is due to the same bug Stargate reported and will be fixed after I'm able to re-build the project tonight.[/QUOTE]

Thanks! I'll get the revised executable when available.

 BudgieJane 2021-05-24 22:12

Feedback

I've just managed to factor a C190 into PRP26, PRP52 and PRP113 using YAFU 2.02. It took 5 days and 5 hours, but that's down to my awful hardware. I am pleased with this.

If anyone's interested the C190 was 30^128 + 17^128.

Incidentally, I'm sure I've seen something posted about this here before, but what's the largest number of decimal digits YAFU will handle?

 Stargate38 2021-05-25 20:09

I've run partial factorizations of larger numbers (up to 900 digits; sometimes Yafu will crash on numbers >1000 digits, but that was before I upgraded to 2.x), and sometimes I'll get a full factorization, but it's very rare.

Any chance you could post the factors of 30^128+17^128 on FactorDB? It still says it's a C190: [url]http://www.factordb.com/index.php?id=1100000000441930677[/url]

 BudgieJane 2021-05-26 13:14

[QUOTE=Stargate38;579083]I've run partial factorizations of larger numbers (up to 900 digits; sometimes Yafu will crash on numbers >1000 digits, but that was before I upgraded to 2.x), and sometimes I'll get a full factorization, but it's very rare.[/QUOTE]
Thank you.

[QUOTE=Stargate38;579083]Any chance you could post the factors of 30^128+17^128 on FactorDB? It still says it's a C190: [url]http://www.factordb.com/index.php?id=1100000000441930677[/url][/QUOTE]
Done.
How many of these Homogeneous Cunninghams should go onto FactorDB? I've got a lot of them that I've not been posting after someone complained about them a few years back.

 EdH 2021-05-26 14:11

sigma() appears to be broken

[code]05/26/21 10:01:49 v1.35-beta @ math97, System/Build Info:
detected Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
detected L1 = 32768 bytes, L2 = 8388608 bytes, CL = 64 bytes
measured cpu frequency ~= 3392.250200
using 1 random witnesses for Rabin-Miller PRP checks
. . .
cached 664579 primes. pmax = 9999991

>> sigma(28,1)
56
>> [/code][code]YAFU Version 2.0
Built with GCC 9
Detected Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
Detected L1 = 32768 bytes, L2 = 8388608 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991
. . .
>> sigma(28,1)

ans = 1

>> [/code]

 chris2be8 2021-05-26 15:52

[QUOTE=BudgieJane;579124]
How many of these Homogeneous Cunninghams should go onto FactorDB? I've got a lot of them that I've not been posting after someone complained about them a few years back.[/QUOTE]

Assuming you don't have millions of them they should all go into factordb once you have fully factored them.

I think I once complained about a load of small unfactored ones being added to factordb (I am running a script to factor small number iin factordb, it went to the trouble of factoring them only to find them done when it tried to submit the result).

Chris

 bsquared 2021-05-27 12:07

Version 2.03 is now available with recently reported bugs fixed. Thanks Stargate38, richs, and EdH!

 EdH 2021-05-27 13:38

Great! Thanks for all your work!

 richs 2021-05-28 15:12

Thanks, Ben. Your efforts are most appreciated!

 charybdis 2021-05-30 12:53

There appears to be a bug in SNFS polynomial selection for (at least) the k*b^n+-1 and b^n+-k forms, for example:
[code]\$ yafu "snfs(1281979*2^520+1,615852095139018818180740532155742854813285752039357209617222174313731523072704248288595303399267379211703243385678043310396893565702501281889421988426549324889)"
Applying tune_info entry for LINUX64 - Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz

YAFU Version 2.02
Built with GCC 9
Detected Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz
Detected L1 = 32768 bytes, L2 = 9437184 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= [email redacted] =======
======= Type help at any time, or quit to quit =======
===============================================================

>> nfs: checking for job file - no job file found
nfs: checking for poly file - no poly file found
nfs: commencing nfs on c163: 4400263219768289455901391102252782697640926698321207262715052435471611732354471854022013442787765424467619673990669619452785804526944371659099920107307694926331905
nfs: searching for brent special forms...
nfs: input divides 1281979*2^520 + 1
gen: ========================================================
gen: considering the following polynomials:
gen: ========================================================

Error: M=1361129467683753853853498429727072845824 is not a root of f(x) % N
n = 615852095139018818180740532155742854813285752039357209617222174313731523072704248288595303399267379211703243385678043310396893565702501281889421988426549324889
f(x) = + 1281979*x^4 + 0*x^3 + 0*x^2 + 0*x^1 - -1*x^0
Remainder is 615852095139018818180740532155742854813285752039357209617222174313731523072704248288595303399267379211703243385678043310396893565702501281889421988426549324887

Error: M=20282409603651670423947251286016 is not a root of f(x) % N
n = 615852095139018818180740532155742854813285752039357209617222174313731523072704248288595303399267379211703243385678043310396893565702501281889421988426549324889
f(x) = + 1281979*x^5 + 0*x^4 + 0*x^3 + 0*x^2 + 0*x^1 - -1*x^0
Remainder is 615852095139018818180740532155742854813285752039357209617222174313731523072704248288595303399267379211703243385678043310396893565702501281889421988426549324887

nfs: no snfs polynomial with small coefficients found
nfs: failed to find snfs polynomial![/code]

Those remainders would suggest that YAFU is getting the sign of the constant term wrong. This is 2.02 but it doesn't look like anything relevant has changed in 2.03.

Also, I notice that the required ECM effort is not reduced when an SNFS special form is detected, necessitating a manual change to pretest_ratio.

 EdH 2021-05-31 21:18

Sorry if I'm becoming annoying, but the current "-silent" option doesn't act as before. I can (re)write my scripts around it (or use YAFU 1...), but the original YAFU performed thusly:[code]\$ ./yafu "sigma(28,1)-28" -silent
28
\$[/code]which was easy to capture in a script.

YAFU 2... performs in this manner:[code]\$ ./yafu "sigma(28,1)-28" -silent

ans = 28

\$[/code]Although I can parse these three lines, it is easier not having to.

Thanks for all your development work.

 bsquared 2021-06-01 14:01

Thanks Charybdis for catching that silly sign error. Fixed now.
EdH: easy change; done.
Git updated, will re-upload windows binary when I get a chance.

 EdH 2021-06-01 14:07

Excellent!

Thanks for all the work!

 charybdis 2021-06-01 16:30

[QUOTE=bsquared;579662]Thanks Charybdis for catching that silly sign error. Fixed now.
EdH: easy change; done.
Git updated, will re-upload windows binary when I get a chance.[/QUOTE]

Thank you!

[QUOTE=charybdis;579480]
Also, I notice that the required ECM effort is not reduced when an SNFS special form is detected, necessitating a manual change to pretest_ratio.[/QUOTE]

Any chance you'll fix this soon? Or is it a feature rather than a bug?

 bsquared 2021-06-01 16:49

[QUOTE=charybdis;579680]Thank you!

Any chance you'll fix this soon? Or is it a feature rather than a bug?[/QUOTE]

I think it still works, but a potential gotcha is if -plan is set to something other than normal. If -plan is custom or something else besides normal, then the autofactorer respects that choice and doesn't fiddle with ecm effort.

Does that seem reasonable, or should ecm effort always be reduced from its current setting if a snfs form is detected?

Example:
[CODE]./yafu "factor(2^523*1281979+1)" -v -v -plan normal -threads 32

YAFU Version 2.02
Built with Intel Compiler 1910
Detected Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
Detected L1 = 32768 bytes, L2 = 28835840 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>> fac: check tune params contained invalid parameter(s), ignoring tune info.
fac: factoring 35202105758146315647211128818022261581127413586569658101720419483772893858835774832176107542302123395740957391925356955622286436215554973272799360858461559410655233
fac: using pretesting plan: normal
fac: check tune params contained invalid parameter(s), ignoring tune info.
fac: no tune info: using qs/gnfs crossover of 100 digits
fac: no tune info: using qs/snfs crossover of 75 digits
input from file = 587798871182819125651887557119241311895329541639294971678415636172181853499307568869458721586841379351
input to yafu = 35202105758146315647211128818022261581127413586569658101720419483772893858835774832176107542302123395740957391925356955622286436215554973272799360858461559410655233
div: primes less than 10000
div: found prime factor = 3
div: found prime factor = 491
div: found prime factor = 619
fmt: 1000000 iterations
98%fmt: performed 36 perfect square checks
rho: x^2 + 3, starting 1000 iterations on C158
rho: found prp9 factor = 812666563
rho: x^2 + 3, starting 1000 iterations on C149
rho: x^2 + 2, starting 1000 iterations on C149
rho: x^2 + 1, starting 1000 iterations on C149
fac: check tune params contained invalid parameter(s), ignoring tune info.
nfs: searching for brent special forms...
nfs: checking a*b^x +/- c for 32 <= x <= 1478
nfs: input divides 1281979*2^523 + 1
fac: ecm effort reduced from 45.85 to 35.66: input has snfs form
[/CODE]

Note I had to put -plan normal in the command line, as I usually run -plan deep (with AVXECM).

 charybdis 2021-06-01 17:50

[QUOTE=bsquared;579685]Note I had to put -plan normal in the command line, as I usually run -plan deep (with AVXECM).[/QUOTE]

Ah, this must be it - the default yafu.ini has plan=deep. I think this is rather confusing, as I can't see anything in the documentation saying that I need to change this to plan=normal in order for the ECM effort to be reduced for SNFS numbers.

However the different plans behave in this situation, it ought to be clearly documented. Personally I'd have it so that each of the standard plans reduces the effort for SNFS, but plan=custom still uses the exact pretest ratio given, as someone may want to set their own for a specific SNFS number(s). Certainly there should be a reduction for whatever the default plan is.

 bsquared 2021-06-01 17:54

[QUOTE=charybdis;579693]Ah, this must be it - the default yafu.ini has plan=deep. I think this is rather confusing, as I can't see anything in the documentation saying that I need to change this to plan=normal in order for the ECM effort to be reduced for SNFS numbers.

[/QUOTE]

You are correct, it is undocumented :redface:

[QUOTE=charybdis;579693]
However the different plans behave in this situation, it ought to be clearly documented. Personally I'd have it so that each of the standard plans reduces the effort for SNFS, but plan=custom still uses the exact pretest ratio given, as someone may want to set their own for a specific SNFS number(s). Certainly there should be a reduction for whatever the default plan is.[/QUOTE]

I like that idea.

 kruoli 2021-06-02 13:30

[QUOTE=kruoli;577152]...[/QUOTE]

The current AVX2 build is not working on my AMD Ryzen 3800X. I guess it is likely the same problem as with the Threadripper. The non-AVX version works fine. I have not tested the current version on my Threadripper yet. I have not tested the old version on the 3800X. Would some of that help?

Instruction set of this CPU:
[CODE]For InfoType 0
CPUInfo[0] = 0xd
CPUInfo[1] = 0x68747541
CPUInfo[2] = 0x444d4163
CPUInfo[3] = 0x69746e65

For InfoType 1
CPUInfo[0] = 0x870f10
CPUInfo[1] = 0x8100800
CPUInfo[2] = 0xfed83203
CPUInfo[3] = 0x178bfbff

For InfoType 2
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 3
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 4
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 5
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 6
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x1
CPUInfo[3] = 0x0

For InfoType 7
CPUInfo[0] = 0x0
CPUInfo[1] = 0x219c91a9
CPUInfo[2] = 0x400004
CPUInfo[3] = 0x0

For InfoType 8
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 9
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 10
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 11
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 12
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 13
CPUInfo[0] = 0x7
CPUInfo[1] = 0x340
CPUInfo[2] = 0x340
CPUInfo[3] = 0x0

For InfoType 80000000
CPUInfo[0] = 0x8000001e
CPUInfo[1] = 0x68747541
CPUInfo[2] = 0x444d4163
CPUInfo[3] = 0x69746e65

For InfoType 80000001
CPUInfo[0] = 0x870f10
CPUInfo[1] = 0x20000000
CPUInfo[2] = 0x4023f3
CPUInfo[3] = 0x2fd3fbff

For InfoType 80000002
CPUInfo[0] = 0x20444d41
CPUInfo[1] = 0x657a7952
CPUInfo[2] = 0x2037206e
CPUInfo[3] = 0x30303833

For InfoType 80000003
CPUInfo[0] = 0x2d382058
CPUInfo[1] = 0x65726f43
CPUInfo[2] = 0x6f725020
CPUInfo[3] = 0x73736563

For InfoType 80000004
CPUInfo[0] = 0x2020726f
CPUInfo[1] = 0x20202020
CPUInfo[2] = 0x20202020
CPUInfo[3] = 0x202020

For InfoType 80000005
CPUInfo[0] = 0xff40ff40
CPUInfo[1] = 0xff40ff40
CPUInfo[2] = 0x20080140
CPUInfo[3] = 0x20080140

For InfoType 80000006
CPUInfo[0] = 0x48006400
CPUInfo[1] = 0x68006400
CPUInfo[2] = 0x2006140
CPUInfo[3] = 0x1009140

For InfoType 80000007
CPUInfo[0] = 0x0
CPUInfo[1] = 0x1b
CPUInfo[2] = 0x0
CPUInfo[3] = 0x789

For InfoType 80000008
CPUInfo[0] = 0x3030
CPUInfo[1] = 0x2009005
CPUInfo[2] = 0x700f
CPUInfo[3] = 0x0

For InfoType 80000009
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000a
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000b
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000c
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000d
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000e
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000000f
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000010
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000011
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000012
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000013
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000014
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000015
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000016
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000017
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000018
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 80000019
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000001a
CPUInfo[0] = 0x2
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000001b
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000001c
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

For InfoType 8000001d
CPUInfo[0] = 0x4121
CPUInfo[1] = 0x1c0003f
CPUInfo[2] = 0x3f
CPUInfo[3] = 0x0

For InfoType 8000001e
CPUInfo[0] = 0x0
CPUInfo[1] = 0x100
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

CPU String: AuthenticAMD
Model = 1
Family = 15
Extended model = 7
Extended family = 8
CLFLUSH cache line size = 64
Logical Processor Count = 16
APIC Physical ID = 8

The following features are supported:
SSE3
Supplemental Streaming SIMD Extensions 3
L1 Context ID
CMPXCHG16B Instruction
SSE4.1 Extensions
SSE4.2 Extensions
AVX Extensions
PPOPCNT Instruction
x87 FPU On Chip
Virtual-8086 Mode Enhancement
Debugging Extensions
Page Size Extensions
Time Stamp Counter
RDMSR and WRMSR Support
Machine Check Exception
CMPXCHG8B Instruction
APIC On Chip
SYSENTER and SYSEXIT
Memory Type Range Registers
PTE Global Bit
Machine Check Architecture
Conditional Move/Compare Instruction
Page Attribute Table
36-bit Page Size Extension
CFLUSH Extension
MMX Technology
FXSAVE/FXRSTOR
SSE Extensions
SSE2 Extensions
LAHF/SAHF in 64-bit mode
Core multi-processing legacy mode
AltMovCr8
LZCNT instruction
SSE4A (EXTRQ, INSERTQ, MOVNTSD, MOVNTSS)
Misaligned SSE mode
PREFETCH and PREFETCHW Instructions
SYSCALL/SYSRET in 64-bit mode
Execute Disable Bit
1GB page support
RDTSCP instruction
64 bit Technology
MOVU Optimization

CPU Brand String: AMD Ryzen 7 3800X 8-Core Processor
Cache Line Size = 64
L2 Associativity = 6
Cache Size = 512K
EAX=7 CPUID feature bits:
EAX=00000000
EBX=219c91a9
ECX=00400004
EDX=00000000

AVX2 Extensions

BMI2 Extensions

YAFU Version 2.03
Built with Microsoft Visual Studio 1928
Detected AMD Ryzen 7 3800X 8-Core Processor
Detected L1 = 32768 bytes, L2 = 33554432 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991[/CODE]

Edit: There is no error message. Instead of the command prompt, yafu simply exits without writing anything to screen. If I remove the settings file, yafu informs me about that file missing, but is still exiting right after that.

 bsquared 2021-06-02 13:47

[QUOTE=kruoli;579776]The current AVX2 build is not working on my AMD Ryzen 3800X. I guess it is likely the same problem as with the Threadripper. The non-AVX version works fine. I have not tested the current version on my Threadripper yet. I have not tested the old version on the 3800X. Would some of that help?
[/QUOTE]

Apologies, I will come back to look at this... had forgotten about it.

From your description of the problem I would guess that there is an illegal instruction somewhere in the sieve of Eratosthenes code, since that is one of the first things that runs. It should be only using AVX2 and BMI2, both of which the cpu supports. If you were on linux I would ask you to run under a debugger, but obviously can't do that here. I'll look closer and let you know if there is something else to try.

 kruoli 2021-06-02 13:52

Thanks. :smile:

[QUOTE=bsquared;579780]If you were on linux I would ask you to run under a debugger, but obviously can't do that here.[/QUOTE]

Maybe running it in WSL2 would work? I have not yet compiled it there but maybe that would be a possibility. Otherwise, my 5950X has a Linux installed on it, currently. But I have not tested any YAFU executable on it yet.

 richs 2021-06-08 04:12

When doing poly select, Yafu displays the following for all threads:

[CODE]**** finished poly work in thread 3
nfs: best score is currently 0.000e+00[/CODE]

The best score is always listed as 0.000 after each thread completes. Just noting this behavior since Yafu finds the highest score at the final conclusion of poly select.

 bsquared 2021-06-08 13:39

[QUOTE=kruoli;579782]Thanks. :smile:

Maybe running it in WSL2 would work? I have not yet compiled it there but maybe that would be a possibility. Otherwise, my 5950X has a Linux installed on it, currently. But I have not tested any YAFU executable on it yet.[/QUOTE]

WSL2 would work, yes. I'm a huge fan of WSL. It can be a bit of a chore getting all of the build tools and building everything but it can be done.

I use Ubuntu on WSL2. For that distro to get a good build environment I believe it's:
sudo apt update
sudo apt install build-essential

[QUOTE=richs;580304]When doing poly select, Yafu displays the following for all threads:

[CODE]**** finished poly work in thread 3
nfs: best score is currently 0.000e+00[/CODE]

The best score is always listed as 0.000 after each thread completes. Just noting this behavior since Yafu finds the highest score at the final conclusion of poly select.[/QUOTE]

I've seen that also, yes. But as you said it seems to find the correct poly in the end so I think it's Mostly Harmless. Still, it's on the list to track down someday.

 kruoli 2021-06-08 14:21

I tried running it in Visual Studio and got an exception at 0x00007FF6B3ECD044 in yafu-mingw-avx2.exe: 0xC000001D: Illegal Instruction.

It highlights line 50 of tiny.c, maybe the [C]sqrt(...)[/C] is the problem here? It will take some time until I have it running under WSL, but maybe this helps?

The line number might differ if there were some changes after the .exe was built, since I used the latest git code.

 kruoli 2021-06-08 14:31

Just got it!
It is [C]00007FF6B3ECD044 vcvtusi2sd xmm6,xmm6,ebx[/C]. :smile:

 ldesnogu 2021-06-08 14:33

[QUOTE=kruoli;580349]Just got it!
It is [C]00007FF6B3ECD044 vcvtusi2sd xmm6,xmm6,ebx[/C]. :smile:[/QUOTE]
That's an AVX512F instruction: [url]https://www.felixcloutier.com/x86/vcvtusi2sd[/url]

 bsquared 2021-06-08 14:38

[QUOTE=kruoli;580349]Just got it!
It is [C]00007FF6B3ECD044 vcvtusi2sd xmm6,xmm6,ebx[/C]. :smile:[/QUOTE]

That is a AVX512F instruction, weird. Thank you for tracking that down.

I didn't realize you were using the mingw executable. Do you have the same problem if you use the yafu-x64 version? That was built by visual studio and I would expect it to be more portable.

 kruoli 2021-06-08 14:41

[QUOTE=kruoli;579776]The non-AVX version works fine.[/QUOTE]

:smile:

The mingw version was the only AVX2 version I saw. The version without mingw is running fine on all machines so far. It also is remarkably smaller.

 bsquared 2021-06-08 14:55

[QUOTE=kruoli;580353]:smile:

The mingw version was the only AVX2 version I saw. The version without mingw is running fine on all machines so far. It also is remarkably smaller.[/QUOTE]

Ok, sounds good. Just use the -x64 version. I might just remove the mingw versions from git.

[extra info]
A long-running background project for yafu is to get all assembly optimizations working in visual studio, so I can forget about the mingw path. mingw was nice when that was the fastest option for windows, but now with WSL2 and better assembly support (via intrinsics) for visual studio, I'd like to move away from mingw.

 bsquared 2021-06-16 15:17

A couple updates, one related to a msieve change that I've just noticed.

1)
As of msieve 1023, gnfs cpu (and maybe gpu?) poly selection now defaults to a massive 8640000 seconds deadline per coefficient searched. That can be changed with a "poly_deadline" parameter, which I didn't know about before. Noticed it recently when trying to gnfs a c120 or so, and having it spend hours in multi-threaded poly select for a 30 minute job. The update now uses the poly_deadline parameter and it seems to work better.

Although, it finds [U]way [/U]fewer polys than before. The parameter tables changed in msieve 1023 as well, and some seem to have pretty strict minimum E-score requirements.

2)
When running snfs with an input poly file, yafu will do a quick search for a better skew value. So far it doesn't do anything with this info other than print it to the screen, but after some more testing I might automatically update the input poly with the improved skew, if one is found.

3)
I'm no longer supporting -psearch deep or -psearch wide for multi-threaded gnfs poly selection. Not sure if these were even used by anyone... I know I didn't use them. Now all searches are "fast", which was the default, and which divides the search time by the number of threads. -psearch {min | avg | good} can still be used to modify acceptable E-scores.* For small jobs I've found -psearch avg or even -psearch min to be faster, as any old poly will sieve almost as fast as another and you would like to get on with the sieving asap.

* the -psearch min | avg capability is where conflicts might occur with the new msieve poly parameter tables. I need to do more testing to know for sure. But for that c120 job I did recently, it found [U]exactly one[/U] poly after 10 minutes of searching on 40 threads (over 6 thread-hours of searching). Specifying -psearch min won't do any good if msieve won't even return polys found near that score.

 charybdis 2021-06-25 18:33

Latest yafu segfaults when resuming NFS. Here's the gdb output:

[code]>> nfs: checking for job file - job file found, testing for matching input
nfs: number in job file matches input
nfs: checking for data file
nfs: previous data file found
nfs: commencing search for last special-q
line 0 = 1631079863,1741:fb1cb3,26a433,4903:156d15,c5f,ec3,1387,a1d71,ce251,e01fb

line 1 = 1638952149,2035:19f8559,be9,11ab,3121,c775:38e243,13af,2e2d,3161,3491,27e51,e01fb

line 2 = 1736339753,1015:7f3ae3,2cde80d,116f,274e5:100019,2971ac5,4255,a3ff,af7f,e01fb

line 3 = 1733728719,1543:26a084d,18b5637,1999,48f7:305e33f,1d41f,61d11,6d3,e01fb

nfs: parsing special-q from .dat file
nfs: commencing nfs on c100: 1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006139
nfs: resumesieve; last_spq = 918011, nfs_phases = 0
nfs: found skew: 1108606.390000
nfs: found c[0]: -537120876901310626660353125
nfs: found c[1]: 20224876429498235072250
nfs: found c[2]: 13491534070563215
nfs: found c[3]: -19666557336
nfs: found c[4]: 8820
nfs: found Y0: -644590365547202992686312
nfs: found Y1: 11026585360387
nfs: parsed lpbr = 26, lpba = 26

Program received signal SIGSEGV, Segmentation fault.
parse_job_file (fobj=fobj@entry=0x5555578f9000, job=job@entry=0x7fffffffa1d0)
at factor/nfs/nfs_filemanip.c:1372
1372 job->snfs->sdifficulty = job->snfs->difficulty = 0;
(gdb) backtrace
#0 parse_job_file (fobj=fobj@entry=0x5555578f9000, job=job@entry=0x7fffffffa1d0) at factor/nfs/nfs_filemanip.c:1372
#1 0x00005555555da4cb in nfs (fobj=fobj@entry=0x5555578f9000) at factor/nfs/nfs.c:874
at top/cmdParser/calc.c:1531
#5 0x0000555555569b8a in process_expression (input_exp=<optimized out>, metadata=0x7fffffffb6c0, force_quiet=0, no_convert_result=0) at top/cmdParser/calc.c:1477
#6 0x000055555555a878 in main (argc=<optimized out>, argv=<optimized out>) at top/driver.c:366[/code]

 charybdis 2021-07-06 15:23

Despite the recent changes to make poly selection faster, it still continues up until the deadline for most 109-digit numbers:

[code]07/05/21 07:12:47, nfs: commencing nfs on c109: 1090856851194159102847462612480990401998890638794326582448210291834957096186057950134759387351816485448746449
07/05/21 07:12:47, nfs: commencing poly selection with 6 threads
07/05/21 07:12:47, nfs: setting deadline of 2964 seconds
07/05/21 07:12:47, nfs: expecting degree 4 poly E from 3.14e-09 to > 3.62e-09
07/05/21 07:12:47, nfs: searching for avg quality poly E > 3.26e-09
07/05/21 08:04:29, nfs: completed 146 ranges of size 60 in 3102.7585 seconds
07/05/21 08:04:29, nfs: best poly = # norm 3.444816e-10 alpha -7.184646 e 1.363e-09 rroots 3[/code]

Notice the huge difference between the expected E values and what we actually get. For numbers between 10^108 and 2^362 (≈9.39*10^108), yafu thinks msieve will use degree 4 but it actually uses degree 5. So an "average" quality polynomial never turns up and the search continues until the deadline.

 bsquared 2021-07-06 15:36

[QUOTE=charybdis;582702]Despite the recent changes to make poly selection faster, it still continues up until the deadline for most 109-digit numbers:

[code]07/05/21 07:12:47, nfs: commencing nfs on c109: 1090856851194159102847462612480990401998890638794326582448210291834957096186057950134759387351816485448746449
07/05/21 07:12:47, nfs: commencing poly selection with 6 threads
07/05/21 07:12:47, nfs: setting deadline of 2964 seconds
07/05/21 07:12:47, nfs: expecting degree 4 poly E from 3.14e-09 to > 3.62e-09
07/05/21 07:12:47, nfs: searching for avg quality poly E > 3.26e-09
07/05/21 08:04:29, nfs: completed 146 ranges of size 60 in 3102.7585 seconds
07/05/21 08:04:29, nfs: best poly = # norm 3.444816e-10 alpha -7.184646 e 1.363e-09 rroots 3[/code]

Notice the huge difference between the expected E values and what we actually get. For numbers between 10^108 and 2^362 (≈9.39*10^108), yafu thinks msieve will use degree 4 but it actually uses degree 5. So an "average" quality polynomial never turns up and the search continues until the deadline.[/QUOTE]

This is good to know, I will have to add a check to see what degree is actually being used.

Also, the bug you previously reported has been found and fixed (thanks for the detailed report!). I still need to commit the changes... hopefully will get a chance tonight.

 jasonp 2021-07-07 18:11

If Yafu has specific needs about configuring NFS polynomial, maybe it should add a configuration string of its own when running Msieve. That would let it control the polynomial degree and all the bounds used. The bounds and deadlines changed quite a while ago and reflected a lot of best practice here, but they can't cover every use case.

 bsquared 2021-08-06 03:08

New version 2.04 is now available.

Includes two improvements to yafu's QS:

1) Now using the poly formulation Q(x) = (2ax + b)^2 - kN whenever possible (if kN == 1 mod 8). For ~85% of inputs this gives about a 10% speedup.
2) Found some new AVX512 optimizations to the bucket sort: linux systems (and WSL2 windows systems) that are AVX-512 capable should be about 15-20% faster (!)

With those two improvements my benchmark numbers now run from 21 to 30% faster. Including a c80 in well under a minute! (46 seconds, down from 62 seconds, on my i7-7800X)

The windows version doesn't get all of these improvements yet because visual studio doesn't like the compressstoreu instruction. I may need to update visual studio or file a bug report or something.

Anyway, happy factoring!

 Plutie 2021-08-06 18:03

Segfault upon starting SNFS

I recently compiled a fresh build of YAFU, but am having issues when trying to factor via SNFS with a pre-made polynomial.

Log: [CODE]YAFU Version 2.03
Built with GCC 9
Detected AMD Ryzen 5 5600X 6-Core Processor
Detected L1 = 32768 bytes, L2 = 33554432 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>> nfs(508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249)
nfs: checking for job file - job file found, testing for matching input
input from file = 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
input to yafu = 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
input matches with multiple of 1
nfs: number in job file matches input
nfs: checking for data file
nfs: no data file found
nfs: commencing nfs on c162: 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
nfs: resumesieve; last_spq = 0, nfs_phases = 0
nfs: found m: 50000000000000000000000000000000000000
nfs: found c[5]: 196
nfs: found c[0]: -5
nfs: found skew: 0.480000
nfs: found type: snfs
nfs: initializing snfs poly
nfs: parsed lpbr = 28, lpba = 28
nfs: detected snfs job but no snfs difficulty
nfs: using m and poly coefficients to compute difficulty
nfs: snfs difficulty: 39.991226
nfs: checking degree 5 poly
nfs: analyzing poly:
Segmentation fault[/CODE]

Content of nfs.job:
[CODE]n: 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
m: 50000000000000000000000000000000000000
deg: 5
c5: 196
c0: -5
skew: 0.48
# Murphy_E = 3.279e-11
type: snfs
lss: 1
rlim: 10600000
alim: 10600000
lpbr: 28
lpba: 28
mfbr: 54
mfba: 54
rlambda: 2.5
alambda: 2.5[/CODE]

Another thing to note is that the SNFS difficulty calculation seems to be wrong when missing some coefficients.

 bsquared 2021-08-06 18:42

I can take a look at where it's going wrong. In the meantime, if I comment out m: and put in the rational coefficients instead it works:

[CODE]n: 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
# m: 50000000000000000000000000000000000000
deg: 5
c5: 196
c0: -5
Y1: -1
Y0: 50000000000000000000000000000000000000
skew: 0.48
type: snfs
lss: 1
rlim: 10600000
alim: 10600000
lpbr: 28
lpba: 28
mfbr: 54
mfba: 54
rlambda: 2.5
alambda: 2.5

[/CODE]

[CODE]nfs: commencing nfs on c162: 508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249
nfs: resumesieve; last_spq = 0, nfs_phases = 0
nfs: found c[5]: 196
nfs: found c[0]: -5
nfs: found Y1: -1
nfs: found Y0: 50000000000000000000000000000000000000
nfs: found skew: 0.480000
nfs: found type: snfs
nfs: initializing snfs poly
nfs: parsed lpbr = 28, lpba = 28
nfs: detected snfs job but no snfs difficulty
nfs: using m and poly coefficients to compute difficulty
nfs: snfs difficulty: 39.991226
nfs: checking degree 5 poly
nfs: analyzing poly:
nfs: anorm = -2.388308e+32, rnorm = 4.180462e+44, size: 2.193000e-13, alpha = 1.196000e+00, murphyE = 3.279000e-11
gen: anorm: -2.39e+32, rnorm: 4.18e+44, ratio: 1.75e+12, log10(ratio) = 12.24
nfs: snfs skewed difficulty: 42.439853
nfs: optimizing skew
nfs: found better skew: 0.484800 with murphy score 3.281000e-11
nfs: found better skew: 0.489600 with murphy score 3.282000e-11
nfs: found better skew: 0.494400 with murphy score 3.284000e-11
nfs: found better skew: 0.499200 with murphy score 3.285000e-11
nfs: found better skew: 0.504000 with murphy score 3.286000e-11
nfs: found better skew: 0.508800 with murphy score 3.287000e-11
nfs: found better skew: 0.513600 with murphy score 3.289000e-11
nfs: found better skew: 0.518400 with murphy score 3.290000e-11
nfs: found better skew: 0.523200 with murphy score 3.291000e-11
nfs: found better skew: 0.528000 with murphy score 3.292000e-11
nfs: found better skew: 0.532800 with murphy score 3.293000e-11
nfs: found better skew: 0.537600 with murphy score 3.294000e-11
nfs: found better skew: 0.547200 with murphy score 3.295000e-11
nfs: found better skew: 0.552000 with murphy score 3.296000e-11
nfs: found better skew: 0.556800 with murphy score 3.297000e-11
nfs: found better skew: 0.561600 with murphy score 3.298000e-11
nfs: found better skew: 0.571200 with murphy score 3.299000e-11
nfs: found better skew: 0.580800 with murphy score 3.300000e-11
nfs: found better skew: 0.585600 with murphy score 3.301000e-11
nfs: found better skew: 0.600000 with murphy score 3.302000e-11
nfs: found better skew: 0.609600 with murphy score 3.303000e-11
nfs: found better skew: 0.624000 with murphy score 3.304000e-11
nfs: found better skew: 0.643200 with murphy score 3.305000e-11
nfs: guessing snfs difficulty 42 is roughly equal to gnfs difficulty 53
nfs: creating ggnfs job parameters for input of size 53
nfs: job file is missing params, filling them
nfs: continuing with sieving - could not determine last special q; using default startq
nfs: commencing rational side lattice sieving over range: 5300000 - 5302000
syscmd: ../../ggnfs-bin/gnfs-lasieve4I11e -v -f 5300000 -c 2000 -o rels0.dat -n 0 -r nfs.job
gnfs-lasieve4I11e (with asm64): L1_BITS=15, SVN \$Revision: 399 \$
Warning: lowering FB_bound to 5299999.
FBsize 702099+0 (deg 5), 367899+0 (deg 1)
total yield: 353, q=5300857 (0.03694 sec/rel) ^C
[/CODE]

Clearly having issues figuring out difficulty, but since the parameters are in there already that mostly doesn't matter. You can just tell it which siever to use and I think it will work, e.g.:

[CODE]./yafu "nfs(508155924947538816161101635487366611969955965840021547875500594140402111454201939923927956969296837060051327267616455978442987911081313892049188185868241575553249)" -v -v -siever 13[/CODE]

 richs 2021-08-09 17:04

Windows Ver 2.04 SIQS Bug

Using Windows executable ver. 2.04, SIQS has problems:

[CODE]08/09/21 08:21:19, ****************************
08/09/21 08:21:19, Starting factorization of 105393989787970375262364798207451884611473765049956049673829221285271966197423217847983687608092010532144015094441669842637319335236412609289116384759967578759
08/09/21 08:21:19, using pretesting plan: normal
08/09/21 08:21:19, using tune info for qs/gnfs crossover
08/09/21 08:21:19, ****************************
08/09/21 08:21:19, rho: x^2 + 3, starting 1000 iterations on C159
08/09/21 08:21:19, rho: x^2 + 2, starting 1000 iterations on C159
08/09/21 08:21:19, rho: x^2 + 1, starting 1000 iterations on C159
08/09/21 08:21:20, pm1: starting B1 = 150K, B2 = gmp-ecm default on C159
08/09/21 08:21:20, current ECM pretesting depth: 0.00
08/09/21 08:21:20, scheduled 30 curves at B1=2000 toward target pretesting depth of 48.92
08/09/21 08:21:20, Finished 30 curves using GMP-ECM method on C159 input, B1=2k, B2=gmp-ecm default
08/09/21 08:21:20, current ECM pretesting depth: 15.18
08/09/21 08:21:20, scheduled 74 curves at B1=11000 toward target pretesting depth of 48.92
08/09/21 08:21:26, Finished 74 curves using GMP-ECM method on C159 input, B1=11k, B2=gmp-ecm default
08/09/21 08:21:26, current ECM pretesting depth: 20.24
08/09/21 08:21:26, scheduled 214 curves at B1=50000 toward target pretesting depth of 48.92
08/09/21 08:22:29, Finished 214 curves using GMP-ECM method on C159 input, B1=50k, B2=gmp-ecm default
08/09/21 08:22:29, pm1: starting B1 = 3750K, B2 = gmp-ecm default on C159
08/09/21 08:22:31, current ECM pretesting depth: 25.33
08/09/21 08:22:31, scheduled 430 curves at B1=250000 toward target pretesting depth of 48.92
08/09/21 08:32:02, Finished 430 curves using GMP-ECM method on C159 input, B1=250k, B2=gmp-ecm default
08/09/21 08:32:02, pm1: starting B1 = 15M, B2 = gmp-ecm default on C159
08/09/21 08:32:09, current ECM pretesting depth: 30.45
08/09/21 08:32:09, scheduled 904 curves at B1=1000000 toward target pretesting depth of 48.92
08/09/21 08:51:40, prp32 = 81818626235929905372894171191449 (curve 222 stg2 B1=1000000 sigma=3833225760 thread=0)
08/09/21 08:51:40, Finished 221 curves using GMP-ECM method on C159 input, B1=1M, B2=gmp-ecm default
08/09/21 08:51:40, current ECM pretesting depth: 31.68
08/09/21 08:51:40, scheduled 683 curves at B1=1000000 toward target pretesting depth of 39.08
08/09/21 09:06:41, prp30 = 287063003181080966701377441473 (curve 222 stg2 B1=1000000 sigma=2084237989 thread=0)
08/09/21 09:06:41, Finished 221 curves using GMP-ECM method on C127 input, B1=1M, B2=gmp-ecm default
08/09/21 09:06:41, final ECM pretested depth: 32.90
08/09/21 09:06:41, scheduler: switching to sieve method
08/09/21 09:06:42, starting SIQS on c97: 4487313770523153739495208002033098434359404539272558781592283264158439136945627929018162116601567
08/09/21 09:06:42, random seed: 380728400
08/09/21 09:06:42, ==== sieve params ====
08/09/21 09:06:42, n = 99 digits, 328 bits
08/09/21 09:06:42, factor base: 102912 primes (max prime = 2823973)
08/09/21 09:06:42, single large prime cutoff: 409476085 (145 * pmax)
08/09/21 09:06:42, double large prime range from 7974823504729 to 8562938075287819
08/09/21 09:06:42, DLP MFB = 1.85
08/09/21 09:06:42, allocating 9 large prime slices of factor base
08/09/21 09:06:42, buckets hold 2048 elements
08/09/21 09:06:42, large prime hashtables have 1622016 bytes
08/09/21 09:06:42, using AVX2 enabled 32k sieve core
08/09/21 09:06:42, sieve interval: 11 blocks of size 32768
08/09/21 09:06:42, polynomial A has ~ 13 factors
08/09/21 09:06:42, using multiplier of 103
08/09/21 09:06:42, using multiplier of 103
08/09/21 09:06:42, using Q2(x) polynomials for kN mod 8 = 1
08/09/21 09:06:42, using SPV correction of 21 bits, starting at offset 36
08/09/21 09:06:42, trial factoring cutoff at 98 bits
08/09/21 09:06:42, ==== sieving started ( 6 threads) ====
08/09/21 09:31:29, trial division touched 164355364 sieve locations out of 1512672657408
08/09/21 09:31:29, total reports = 164355364, total surviving reports = 43553883
08/09/21 09:31:29, total blocks sieved = 46163106, avg surviving reports per block = 0.94
08/09/21 09:31:29, dlp-ecm: 131 failures, 1685998 attempts, 34424793 outside range, 7038997 prp, 1342823 useful
08/09/21 09:31:29, 103416 relations found: 26955 full + 76461 from 1719963 partial, using 2098323 polys (1900 A polys)
08/09/21 09:31:29, on average, sieving found 0.83 rels/poly and 1174.44 rels/sec
08/09/21 09:31:29, trial division touched 164355364 sieve locations out of 1512672657408
08/09/21 09:31:29, ==== post processing stage (msieve-1.38) ====
08/09/21 09:31:29, QS elapsed time = 1487.4595 seconds.
08/09/21 09:31:30, begin singleton removal with 1746918 relations
08/09/21 09:31:31, reduce to 266460 relations in 12 passes
08/09/21 09:31:31, failed to read relation 8
08/09/21 09:31:31, failed to read relation 190

** numerous failed to read relation lines

08/09/21 09:31:35, failed to read relation 266199
08/09/21 09:31:35, recovered 263590 relations
08/09/21 09:31:35, recovered 247915 polynomials
08/09/21 09:31:35, attempting to build 100566 cycles
08/09/21 09:31:35, found 100566 cycles from 263590 relations in 6 passes
08/09/21 09:31:35, distribution of cycle lengths:
08/09/21 09:31:35, length 1 : 26563
08/09/21 09:31:35, length 2 : 18090
08/09/21 09:31:35, length 3 : 16887
08/09/21 09:31:35, length 4 : 13215
08/09/21 09:31:35, length 5 : 9817
08/09/21 09:31:35, length 6 : 6261
08/09/21 09:31:35, length 7 : 4166
08/09/21 09:31:35, length 9+: 5567
08/09/21 09:31:35, largest cycle: 25 relations
08/09/21 09:31:35, matrix is 102912 x 100566 (29.1 MB) with weight 6836076 (67.98/col)
08/09/21 09:31:35, sparse part has weight 6836076 (67.98/col)
08/09/21 09:31:36, filtering completed in 2 passes
08/09/21 09:31:36, matrix is 96687 x 94802 (28.1 MB) with weight 6606297 (69.69/col)
08/09/21 09:31:36, sparse part has weight 6606297 (69.69/col)
08/09/21 09:31:36, matrix must have more columns than rows
08/09/21 09:31:38, begin singleton removal with 1746918 relations
08/09/21 09:31:39, reduce to 266460 relations in 12 passes
08/09/21 09:31:39, failed to read relation 8
08/09/21 09:31:39, failed to read relation 190
[/CODE]

SIQS then repeats over and over until the process is killed.

 bsquared 2021-08-10 16:36

Thanks, it was a very silly mistake on my part. I didn't do enough testing.

2.05 is now available.

Yafu bug?

I downloaded the most recent version 2.05 for Windows. That version is still crashing for me. When I try to run it as yafu-x64.exe, it will open to ">>" where you can enter a command such as factor(123456) but it crashes before I can enter anything.

 richs 2021-08-11 00:46

Ver. 2.05 works fine (so far) on my Windows 10 i7 laptop where I had the SIQS bug with ver. 2.04.

 xilman 2021-08-11 13:23

[QUOTE=bsquared;585347]Thanks, it was a very silly mistake on my part. I didn't do enough testing.

2.05 is now available.[/QUOTE]I am being especially dumb today.

The sourceforge version is stuck at 1.34.

Where is 2.05 to be found?

Thanks, Paul

 kruoli 2021-08-11 13:41

[URL="http://github.com/bbuhrow/yafu/blob/master/yafu-x64.exe"]Here[/URL] it is. :smile:

 bsquared 2021-08-11 14:21

[QUOTE=johnadam74;585381]I downloaded the most recent version 2.05 for Windows. That version is still crashing for me. When I try to run it as yafu-x64.exe, it will open to ">>" where you can enter a command such as factor(123456) but it crashes before I can enter anything.[/QUOTE]

Can you give me any more info about your cpu (intel/amd model number)? If you can run with -v or -vproc that output would help.

[QUOTE=kruoli;585405][URL="http://github.com/bbuhrow/yafu/blob/master/yafu-x64.exe"]Here[/URL] it is. :smile:[/QUOTE]

Hey that's my line! :smile:

Hi Ben

I spent some time today aligning all the constituent parts of the YAFU Visual Studio 2019 build for windows X64 to use the Microsoft static runtime libraries and I now have a successful build of YAFU. I have tested it on Windows 11 (beta) with the Quadro T2000 GPU on my laptop and all seems to work as expected.

It is available here (yafu, ysieve and ytools):

The build is in the build.vs subdirectory, not build.vc19 (which does not build), as I am in the process of moving it to Visual Studio 2022.

Sadly the build for the siqs_demo project fails because it cannot find these symbols:

1>calc.obj : error LNK2001: unresolved external symbol siqsbench
1>calc.obj : error LNK2001: unresolved external symbol smallmpqs
1>calc.obj : error LNK2001: unresolved external symbol SIQS
1>siqs_demo.obj : error LNK2001: unresolved external symbol get_computer_info

I would be grateful for your advice on where these should be available.

 xilman 2021-08-11 15:37

[QUOTE=kruoli;585405][URL="http://github.com/bbuhrow/yafu/blob/master/yafu-x64.exe"]Here[/URL] it is. :smile:[/QUOTE]Thanks!

 Gimarel 2021-08-11 17:28

I get a SIGSEGV with yafu 2.05 on a Ryzen 3950X under linux built with [CODE]make yafu NFS=1 USE_SSE41=1 USE_AVX2=1 USE_BMI2=1[/CODE] and [CODE]yafu "siqs(1131941884204194473862586294639558925416454742463976786637412462462312690253602905547214801)"[/CODE]The number was generated with rsa(300).

 bsquared 2021-08-11 17:41

Thanks for the report and testing, I'll look into it. I won't be able to get a revision out until Sunday.

 bsquared 2021-08-11 17:44

I spent some time today aligning all the constituent parts of the YAFU Visual Studio 2019 build for windows X64 to use the Microsoft static runtime libraries and I now have a successful build of YAFU. I have tested it on Windows 11 (beta) with the Quadro T2000 GPU on my laptop and all seems to work as expected.

It is available here (yafu, ysieve and ytools):

The build is in the build.vs subdirectory, not build.vc19 (which does not build), as I am in the process of moving it to Visual Studio 2022.

Sadly the build for the siqs_demo project fails because it cannot find these symbols:

1>calc.obj : error LNK2001: unresolved external symbol siqsbench
1>calc.obj : error LNK2001: unresolved external symbol smallmpqs
1>calc.obj : error LNK2001: unresolved external symbol SIQS
1>siqs_demo.obj : error LNK2001: unresolved external symbol get_computer_info

I would be grateful for your advice on where these should be available.[/QUOTE]

Fantastic thank you Brian! I think siqs demo just needs some project properties work. I'll look into that this weekend.

 charybdis 2021-08-11 18:45

[QUOTE=Gimarel;585416]I get a SIGSEGV with yafu 2.05 on a Ryzen 3950X under linux built with [CODE]make yafu NFS=1 USE_SSE41=1 USE_AVX2=1 USE_BMI2=1[/CODE] and [CODE]yafu "siqs(1131941884204194473862586294639558925416454742463976786637412462462312690253602905547214801)"[/CODE][/QUOTE]

In case it's helpful in diagnosing the issue, I couldn't reproduce this crash on an i5-8500 with the same build flags.

 Plutie 2021-08-11 19:05

[QUOTE=charybdis;585428]In case it's helpful in diagnosing the issue, I couldn't reproduce this crash on an i5-8500 with the same build flags.[/QUOTE]

Unable to reproduce on 5600X with same build flags as well.

P.S. YAFU 2.05 from the github repository's "yafu-x64.exe" was crashing upon starting a SIQS factorization. Unable to get logs for the next few days, but I am available to answer more questions if there are any regarding my setup.

 Gimarel 2021-08-12 06:06

[QUOTE=Gimarel;585416]I get a SIGSEGV with yafu 2.05 on a Ryzen 3950X under linux built with [CODE]make yafu NFS=1 USE_SSE41=1 USE_AVX2=1 USE_BMI2=1[/CODE][/QUOTE]

Further testing showed, that the number doesn't matter. yafu crashes every time with siqs(rsa(215)), most of the time with siqs(rsa(214)) but runs every time with siqs(rsa(213)).
Also note that yafu works if I omit USE_AVX2=1.

I'm using gcc-10 of debian bullseye.

Here's a complete log:[CODE]yafu "siqs(rsa(215))"

YAFU Version 2.05
Built with GCC 10
Detected AMD Ryzen 9 3950X 16-Core Processor
Detected L1 = 32768 bytes, L2 = 67108864 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>>
starting SIQS on c65: 31635638050360383928410741313802727069876274264595430910292999519

==== sieve params ====
n = 67 digits, 221 bits
factor base: 6384 primes (max prime = 137117)
single large prime cutoff: 10283775 (75 * pmax)
allocating 3 large prime slices of factor base
buckets hold 2048 elements
large prime hashtables have 196608 bytes
using AVX2 enabled 32k sieve core
sieve interval: 4 blocks of size 32768
polynomial A has ~ 8 factors
using multiplier of 71
using Q2(x) polynomials for kN mod 8 = 1
using SPV correction of 21 bits, starting at offset 32
trial factoring cutoff at 75 bits

==== sieving in progress (1 thread): 6448 relations needed ====
==== Press ctrl-c to abort and save state ====
Segmentation fault[/CODE]gdb backtrace:
[CODE]#0 0x000055555558aee1 in nextRoots_32k_avx2 (sconf=<optimized out>, dconf=0x555557fa3710) at factor/qs/update_poly_roots_32k_avx2.c:1506
#1 0x0000555555575da6 in process_poly (vptr=vptr@entry=0x5555578fed60) at factor/qs/SIQS.c:1292
#2 0x000055555557d368 in SIQS (fobj=fobj@entry=0x5555578f5ef0) at factor/qs/SIQS.c:828
#7 0x000055555555a850 in main (argc=<optimized out>, argv=<optimized out>) at top/driver.c:366[/CODE]Crashing instruction:

[CODE]│ 0x55555558aed3 <nextRoots_32k_avx2+10563> mov 0x28(%rsi),%r14 │
│ 0x55555558aed7 <nextRoots_32k_avx2+10567> vmovdqa (%rdi,%r15,4),%ymm3 │
│ 0x55555558aedd <nextRoots_32k_avx2+10573> mov 0x30(%rsi),%r13 │
│ >0x55555558aee1 <nextRoots_32k_avx2+10577> vmovdqa (%r14,%r15,4),%ymm1 │
│ 0x55555558aee7 <nextRoots_32k_avx2+10583> vpaddd %ymm3,%ymm1,%ymm1 │
│ 0x55555558aeeb <nextRoots_32k_avx2+10587> vmovdqa 0x0(%r13,%r15,4),%ymm2 │
│ 0x55555558aef2 <nextRoots_32k_avx2+10594> mov 0x20(%rsi),%rdi │
[/CODE]

 bsquared 2021-08-16 21:11

[QUOTE=Gimarel;585452]Further testing showed, that the number doesn't matter. yafu crashes every time with siqs(rsa(215)), most of the time with siqs(rsa(214)) but runs every time with siqs(rsa(213)).
Also note that yafu works if I omit USE_AVX2=1.

I'm using gcc-10 of debian bullseye.
[/QUOTE]

Thanks for the detailed info. Looks like gcc-10 is having problems aligning some data, which comes into play once input numbers are big enough to start using avx2 inline assembly. There may be gcc options that force alignment, or you can not use avx2, as you discovered, which is probably the best option for now. I have not seen the same problems with icc or gcc-11.1.0 or gcc-7.3.0. Sorry I can't be of more help.

 bsquared 2021-08-16 21:15

[QUOTE=Plutie;585429]Unable to reproduce on 5600X with same build flags as well.

P.S. YAFU 2.05 from the github repository's "yafu-x64.exe" was crashing upon starting a SIQS factorization. Unable to get logs for the next few days, but I am available to answer more questions if there are any regarding my setup.[/QUOTE]

[QUOTE=johnadam74;585381]I downloaded the most recent version 2.05 for Windows. That version is still crashing for me. When I try to run it as yafu-x64.exe, it will open to ">>" where you can enter a command such as factor(123456) but it crashes before I can enter anything.[/QUOTE]

Can either of you post the siqs output (or whatever output you get) with -v and -vproc?

 charybdis 2021-08-16 21:53

[QUOTE=bsquared;585795]Thanks for the detailed info. Looks like gcc-10 is having problems aligning some data, which comes into play once input numbers are big enough to start using avx2 inline assembly. There may be gcc options that force alignment, or you can not use avx2, as you discovered, which is probably the best option for now. I have not seen the same problems with icc or gcc-11.1.0 or gcc-7.3.0. Sorry I can't be of more help.[/QUOTE]

This must be very specific to gcc-10: I was using 9.3.0 when I tried and failed to reproduce this. Looks like installing a second gcc version (with the necessary care, of course) would be an alternative solution to the problem.

 Gimarel 2021-08-17 11:15

[QUOTE=charybdis;585798]This must be very specific to gcc-10: I was using 9.3.0 when I tried and failed to reproduce this. Looks like installing a second gcc version (with the necessary care, of course) would be an alternative solution to the problem.[/QUOTE]
I'm getting the same SEGFAULT with gcc-9. I will try to install gcc-11, but this will take some time.

I also tried clang-11 but the build fails with:[CODE]clang-11 -g -DUSE_SSE2 -mbmi2 -mbmi -DUSE_BMI2 -DUSE_AVX2 -DUSE_SSE41 -mavx2 -DUSE_SSE41 -m64 -msse4.1 -DUSE_NFS -O3 -march=native -mtune=native -fomit-frame-pointer -Wall -I. -Iinclude -Itop/aprcl -Itop/cmdParser -Itop/ -I../../../msieve -I../ysieve -I../ytools -I../../ecm -I../gmp/include -I../gmp-ecm/include/ -c -o factor/qs/msieve/lanczos.o factor/qs/msieve/lanczos.c
In file included from factor/qs/msieve/lanczos.c:18:
In file included from include/lanczos.h:21:
In file included from include/qs_impl.h:20:
include/monty.h:145:19: error: invalid input constraint '0ULL' in asm
: "1"(c), "0ULL"(0), "r"(n));
^
1 error generated.
make: *** [Makefile:450: factor/qs/msieve/lanczos.o] Fehler 1
[/CODE]

 bsquared 2021-08-17 13:17

[QUOTE=Gimarel;585855]I'm getting the same SEGFAULT with gcc-9. I will try to install gcc-11, but this will take some time.
[/QUOTE]

Weird. I have not changed anything in update_poly_roots_32k_avx2.c in over 5 months, according to github, and those were unrelated changes to where this error occurred. The core routine that produced the segfault hasn't changed in years. As a wild guess you could try changing -march=native to -march=znver1 or -march=znver2 and get rid of -mtune=native. Maybe the compiler is mis-identifying the exact cpu or mis-tuning the code.

[QUOTE=Gimarel;585855]

I also tried clang-11 but the build fails ...[/QUOTE]

I have never tried building with that compiler so not very surprising. The inline assembly doesn't port easily...

 bsquared 2021-08-18 12:06

v2.06

Just checked in version 2.06. I updated the function where Gimeral's error was occurring. For me it is now faster on AVX2 systems, especially with the windows .exe, and hopefully also works for everyone.

 bsquared 2021-08-18 15:53

Looking back over some historical benchmarks (time in seconds for sequence of inputs), 2.06 is a pretty big speedup for AVX2 systems, for either MSVC windows or linux builds. Still hoping it is also more stable across compilers/cpus.

AVX2 linux, icc (Xeon E5-2697 v3):
[CODE]
version c60 c65 c70 c75 c80 c85 c90 c95
v1.34.5 2.35 6.9 14.8 52.4 104.8 294 3132
v1.35.0 2.2 6.4 12.9 43.6 89.8 262 1037 2912
v2.05 1.83 5.66 11 37 76.6 229
v2.06 1.69 5.48 11.2 35.7 69.5 208 794 2210
[/CODE]

AVX2 Windows, MSVC19 (Xeon 6134):
[CODE]
version c60 c65 c70 c75 c80 c85
v1.34.5 2.54 7.42 15.1 53.8 111.4 311
v2.05 1.93 6.98 14.3 51.7 100.6 314.2
v2.06 1.89 6.11 12.2 41.5 82.1 240.5
[/CODE]

And for comparison, with all available instruction set enhancements (AVX512BW, AVX512VL, AVX512F):
[CODE]
version c60 c65 c70 c75 c80 c85 c90 c95
v2.06 1.16 3.44 6.64 21.9 44.5 135.1 516 1516
[/CODE]

 BudgieJane 2021-08-18 18:59

I've just run the C108 cofactor of 73+34.59 through yafu 2.06, although I'm sure any of the previous versions would show the same behaviour.

[CODE]08/18/21 19:43:23,
08/18/21 19:43:23, ****************************
08/18/21 19:43:23, Starting factorization of 806612539887522076624435765094947314651498682479207276130902929847315087082262158953156473845821936013965643
08/18/21 19:43:23, using pretesting plan: normal
08/18/21 19:43:23, using tune info for qs/gnfs crossover
08/18/21 19:43:23, ****************************
08/18/21 19:43:23, rho: x^2 + 3, starting 1000 iterations on C108
08/18/21 19:43:23, prp11 = 40061753549
08/18/21 19:43:23, rho: x^2 + 3, starting 1000 iterations on C98
08/18/21 19:43:23, rho: x^2 + 2, starting 1000 iterations on C98
08/18/21 19:43:23, rho: x^2 + 1, starting 1000 iterations on C98
08/18/21 19:43:24, pm1: starting B1 = 150K, B2 = gmp-ecm default on C98
08/18/21 19:43:24, current ECM pretesting depth: 0.00
08/18/21 19:43:24, scheduled 30 curves at B1=2000 toward target pretesting depth of 30.15
08/18/21 19:43:24, Finished 30 curves using GMP-ECM method on C98 input, B1=2k, B2=gmp-ecm default
08/18/21 19:43:24, current ECM pretesting depth: 15.18
08/18/21 19:43:24, scheduled 74 curves at B1=11000 toward target pretesting depth of 30.15
08/18/21 19:43:25, Finished 74 curves using GMP-ECM method on C98 input, B1=11k, B2=gmp-ecm default
08/18/21 19:43:25, current ECM pretesting depth: 20.24
08/18/21 19:43:25, scheduled 214 curves at B1=50000 toward target pretesting depth of 30.15
08/18/21 19:43:29, Finished 214 curves using GMP-ECM method on C98 input, B1=50k, B2=gmp-ecm default
08/18/21 19:43:29, pm1: starting B1 = 3750K, B2 = gmp-ecm default on C98
08/18/21 19:43:30, current ECM pretesting depth: 25.33
08/18/21 19:43:30, scheduled 402 curves at B1=250000 toward target pretesting depth of 30.15
08/18/21 19:43:52, prp28 = 2606325622300954201341849509 (curve 284 stg2 B1=250000 sigma=3962908428 thread=11)
08/18/21 19:43:53, Finished 294 curves using GMP-ECM method on C98 input, B1=250k, B2=gmp-ecm default
08/18/21 19:43:53, final ECM pretested depth: 28.75
08/18/21 19:43:53, scheduler: switching to sieve method
08/18/21 19:43:53, starting SIQS on c70: 7725139683897973308307472537355787653622803183466786522414544405964523
08/18/21 19:43:53, random seed: 2108661816
08/18/21 19:43:53, prp70 = 7725139683897973308307472537355787653622803183466786522414544405964523
08/18/21 19:43:53, Total factoring time = 30.2247 seconds[/CODE]

My question is: Having finished the GMP-ECM method on C98 and now noticing what we are testing is C70, why not do a PRP test before starting SIQS and selecting a random seed, etc.?

 bsquared 2021-08-18 19:21

[QUOTE=BudgieJane;586008]

My question is: Having finished the GMP-ECM method on C98 and now noticing what we are testing is C70, why not do a PRP test before starting SIQS and selecting a random seed, etc.?[/QUOTE]

No particular reason, but notice that it doesn't spend very long in SIQS. 0 seconds to be exact. Checking the input for various properties is the first thing siqs does. And also the first thing other routines do as well. It isn't part of the autofactorer loop because one could write something like this instead of factor, and then no primality test would be performed:

[CODE]
siqs(ecm(pm1(rho(trial(n,10000))), 100))
[/CODE]

 charybdis 2021-08-18 20:28

While trying to do a 2.05 vs 2.06 benchmark, I discovered that the -batchfile option seems to be broken. When I run "yafu "siqs(@)" -batchfile in.bat", yafu quits with

[code]>> fopen error: No such file or directory

Happens on linux and windows. Old versions (pre v2) work properly.

PS. Thanks for all the excellent work over the last couple of months!

 bsquared 2021-08-18 20:32

[QUOTE=charybdis;586017]While trying to do a 2.05 vs 2.06 benchmark, I discovered that the -batchfile option seems to be broken. When I run "yafu "siqs(@)" -batchfile in.bat", yafu quits with

[code]>> fopen error: No such file or directory

Happens on linux and windows. Old versions (pre v2) work properly.

PS. Thanks for all the excellent work over the last couple of months![/QUOTE]

Yes, I've noticed that as well but haven't got around to fixing it yet. Mostly because cat in.bat | yafu "siqs(@)" still works, somehow.

Also, fyi, yafu has a built-in siqs benchmark function:

./yafu "siqsbench"

Output is written to a bench.log file instead of factor.log.

This is what I run over and over again during testing.

 charybdis 2021-08-19 00:10

[QUOTE=bsquared;586019]Also, fyi, yafu has a built-in siqs benchmark function:

./yafu "siqsbench"[/QUOTE]

Thank you for the tip! I'm seeing a >10% speedup at c90 and c95 :smile:

 BudgieJane 2021-08-22 10:46

I'm having problems with version 2.06. It works OK on my new computer, running Windows 10 Pro, but it will not run on my old ones running Windows 7 Pro. It puts up the welcome message, waits something like half a minute, then quietly returns me to the command prompt:

[CODE]JANELT3 C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06 > yafu-x64

YAFU Version 2.06
Built with Microsoft Visual Studio 1922
Detected Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
Detected L1 = 32768 bytes, L2 = 6291456 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>>
JANELT3 C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06 >[/CODE]

Is there something I ought to have somewhere on those old computers but which is missing, but the new computer does have it?

 WraithX 2021-08-22 14:19

[QUOTE=BudgieJane;586247]I'm having problems with version 2.06. It works OK on my new computer, running Windows 10 Pro, but it will not run on my old ones running Windows 7 Pro. It puts up the welcome message, waits something like half a minute, then quietly returns me to the command prompt:

Is there something I ought to have somewhere on those old computers but which is missing, but the new computer does have it?[/QUOTE]

It works fine on my Windows 7 Pro x64.
[CODE]
C:\yafu\yafu_2.06>yafu-x64.exe

YAFU Version 2.06
Built with Microsoft Visual Studio 1922
Detected Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz
Detected L1 = 32768 bytes, L2 = 31457280 bytes, CL = 64 bytes
Using 1 random witness for Rabin-Miller PRP checks
Cached 664579 primes; max prime is 9999991

===============================================================
======= Welcome to YAFU (Yet Another Factoring Utility) =======
======= bbuhrow@gmail.com =======
======= Type help at any time, or quit to quit =======
===============================================================

>> factor(10^19+49)

fac: factoring 10000000000000000049
fac: using pretesting plan: normal
fac: no tune info: using qs/gnfs crossover of 100 digits
fac: no tune info: using qs/snfs crossover of 75 digits
div: primes less than 10000
fmt: 1000000 iterations
rho: x^2 + 3, starting 1000 iterations on C20
Total factoring time = 0.0400 seconds

***factors found***

PRP10 = 8532383917
PRP10 = 1172005397

ans = 1

>>
[/CODE]
I used the program Dependency Walker to see what dll's are linked/used by yafu. The ones I think you might be missing are VCOMP140.DLL and VCRUNTIME140.DLL.

These are included with the Microsoft Visual C++ Redistributable packages from Microsoft. You can find links to the latest here (I'd recommend both the 32-bit and 64-bit):

 BudgieJane 2021-08-24 10:42

[QUOTE=WraithX;586255]It works fine on my Windows 7 Pro x64.
[CODE]
...
[/CODE]
I used the program Dependency Walker to see what dll's are linked/used by yafu. The ones I think you might be missing are VCOMP140.DLL and VCRUNTIME140.DLL.

These are included with the Microsoft Visual C++ Redistributable packages from Microsoft. You can find links to the latest here (I'd recommend both the 32-bit and 64-bit):

No, I've got them. Dependency Walker says what are missing are these:
[CODE]API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL[/CODE]
and I searched the web for one of them and came up with [url]https://stackoverflow.com/questions/17023419/windows-7-64-bit-dll-problems[/url] which I've been looking at without much luck. I've also tried installing vc_redist.x64.exe, again no luck. About the only good thing that has come out of my fiddling with all this is that it has installed edge on my Win-7 machine (so much for lack of further support for Windoze 7!). I think the time has come to upgrade to Win-10 Pro for my development machine (now where can I get a decent one dirt cheap?)

 James Heinrich 2021-08-24 13:01

3 Attachment(s)
[QUOTE=BudgieJane;586247]I'm having problems with version 2.06. It works OK on my new computer, running Windows 10 Pro, but it will not run on my old ones running Windows 7 Pro. It puts up the welcome message, waits something like half a minute, then quietly returns me to the command prompt[/QUOTE]I also just tried v2.06 (from [url=https://github.com/bbuhrow/yafu/archive/refs/heads/master.zip]master.zip[/url] downloaded an hour ago) on my i7-3930K on Win7pro64 where [c]yafu-x64.exe[/c] also fails. The first time I ran it it took a few (maybe 5) seconds before the crash dialog came up, subsquent runs in comes up near-immediately:[code]Problem signature:
Problem Event Name: APPCRASH
Application Name: yafu-x64.exe
Application Version: 0.0.0.0
Application Timestamp: 611c3335
Fault Module Name: yafu-x64.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 611c3335
Exception Code: c000001d
Exception Offset: 0000000000001300
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033
[url=https://www.dependencywalker.com/]Dependency Walker[/url] shows the same list of missing DLLs that [i]BudgieJane[/i] [url=https://www.mersenneforum.org/showthread.php?p=586394]listed[/url].
edit: [url=https://social.msdn.microsoft.com/Forums/en-US/a28331ae-19a3-4a34-b3ba-1e8fd4430375/missing-apimswincore-dlls]this thread[/url] may contain relevant details.

 bsquared 2021-08-24 13:16

If there is a setting in visual studio 2019 where I can link these things statically then I'd do that, but I don't know how at the moment.

Here is a link to a zip file containing a statically linked YAFU x64 binary that might be worth a try:

for those having DLL issues. I have to admit it seems unlikely to offer a solution.

 James Heinrich 2021-08-24 15:08

[QUOTE=Brian Gladman;586412]Here is a link to a zip file containing a statically linked YAFU x64 binary that might be worth a try ... for those having DLL issues. I have to admit it seems unlikely to offer a solution.[/QUOTE]I tried it, it crashed the same way as the original.

[QUOTE=James Heinrich;586413]I tried it, it crashed the same way as the original.[/QUOTE]

I am not surprised since my build (and I suspect all current YAFU builds) use Windows SDK v10.

To get a working Windows 7 version all of yafu, mpir, gmp-ecm, ggnfs, pthreads and its other dependencies would all have to be rebuilt using Windows SDK 8.1 and this would be considerable undertaking.

 BudgieJane 2021-08-24 18:50

Version 2.01 works OK on my Win-7 machine.

 WraithX 2021-08-24 19:05

1 Attachment(s)
I am missing the same dll files as Budgie and James, but yafu 2.06 works fine on my Windows 7 Pro x64 computer.

I tried yafu-x64.exe from [url]https://github.com/bbuhrow/yafu[/url]
I tried yafu-x64.exe from master.zip from [url]https://github.com/bbuhrow/yafu/archive/refs/heads/master.zip[/url]
I tried the statically linked yafu-x64.exe that Brian shared

All of them work for me.

I was going to guess a possible instruction set issue, but I see that Budgie's i7-4710MQ has the same extensions as my E5-2687W v4. (except mine has TSX which is missing from Budgie's, but I wouldn't guess that's important here)

James's C000001D could make sense since his processor doesn't support as many instruction sets as Budgie's or mine. His processor is missing AVX2 and FMA3 (and TSX). Maybe this is contributing?

I found this online about C000001D. I'm not sure if this narrows down what might be going wrong, but maybe it can help with troubleshooting.
C000001D STATUS_ILLEGAL_INSTRUCTION EXCEPTION_ILLEGAL_INSTRUCTION

Budgie, can you run yafu-x64.exe and then after it crashes/stops, can you check your Windows Event Viewer -> Windows Logs -> Application log (or maybe System log) to see if the error is recorded in there? Maybe that will give us more information on what's going wrong?

 BudgieJane 2021-08-24 20:51

Log Name: Application
Source: Application Error
Date: 24/08/2021 21:45:39
Event ID: 1005
Level: Error
Keywords: Classic
User: N/A
Computer: JaneLT3
Description:
Windows cannot access the file for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program yafu-x64.exe because of this error.

Program: yafu-x64.exe
File:

The error value is listed in the Additional Data section.
User Action
1. Open the file again. This situation might be a temporary problem that corrects itself when the program runs again.
2. If the file still cannot be accessed and
- It is on the network, your network administrator should verify that there is not a problem with the network and that the server can be contacted.
- It is on a removable disk, for example, a floppy disk or CD-ROM, verify that the disk is fully inserted into the computer.
3. Check and repair the file system by running CHKDSK. To run CHKDSK, click Start, click Run, type CMD, and then click OK. At the command prompt, type CHKDSK /F, and then press ENTER.
4. If the problem persists, restore the file from a backup copy.
5. Determine whether other files on the same disk can be opened. If not, the disk might be damaged. If it is a hard disk, contact your administrator or computer hardware vendor for further assistance.

Error value: 00000000
Disk type: 0
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="49152">1005</EventID>
<Level>2</Level>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-08-24T20:45:39.000000000Z" />
<EventRecordID>664519</EventRecordID>
<Channel>Application</Channel>
<Computer>JaneLT3</Computer>
<Security />
</System>
<EventData>
<Data>
</Data>
<Data>yafu-x64.exe</Data>
<Data>00000000</Data>
<Data>0</Data>
</EventData>
</Event>

Log Name: Application
Source: Application Error
Date: 24/08/2021 21:45:39
Event ID: 1000
Level: Error
Keywords: Classic
User: N/A
Computer: JaneLT3
Description:
Faulting application name: yafu-x64.exe, version: 0.0.0.0, time stamp: 0x611c3335
Faulting module name: yafu-x64.exe, version: 0.0.0.0, time stamp: 0x611c3335
Exception code: 0xc000001d
Fault offset: 0x0000000000002403
Faulting process id: 0x4d4
Faulting application start time: 0x01d79928fdf3fa53
Faulting application path: C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06\yafu-x64.exe
Faulting module path: C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06\yafu-x64.exe
Report Id: 3d352f22-051c-11ec-8f66-0cd292d9c1cc
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2021-08-24T20:45:39.000000000Z" />
<EventRecordID>664518</EventRecordID>
<Channel>Application</Channel>
<Computer>JaneLT3</Computer>
<Security />
</System>
<EventData>
<Data>yafu-x64.exe</Data>
<Data>0.0.0.0</Data>
<Data>611c3335</Data>
<Data>yafu-x64.exe</Data>
<Data>0.0.0.0</Data>
<Data>611c3335</Data>
<Data>c000001d</Data>
<Data>0000000000002403</Data>
<Data>4d4</Data>
<Data>01d79928fdf3fa53</Data>
<Data>C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06\yafu-x64.exe</Data>
<Data>C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.06\yafu-x64.exe</Data>
<Data>3d352f22-051c-11ec-8f66-0cd292d9c1cc</Data>
</EventData>
</Event>

 BudgieJane 2021-08-24 21:34

1 Attachment(s)
Don't know if you want to see this also:

 BudgieJane 2021-08-24 21:45

[QUOTE=Brian Gladman;586412]Here is a link to a zip file containing a statically linked YAFU x64 binary that might be worth a try:

for those having DLL issues. I have to admit it seems unlikely to offer a solution.[/QUOTE]

I got a system error: The program can't start because nvcuda.dll is missing from your computer. Try reinstalling the program to fix this problem.

[QUOTE=BudgieJane;586438]I got a system error: The program can't start because nvcuda.dll is missing from your computer. Try reinstalling the program to fix this problem.[/QUOTE]

It seems that I have missed a DLL dependency in the build.

I have run through all the library dependencies again to check they are static and rebuilt it here:

There are so many dependencies in building YAFU so its still possible that I have still missed a DLL dependency somewhere (in this case it should work if CUDA 11.4 is installed on your host since the DLL dependency would then be found).

 bsquared 2021-08-25 13:31

[QUOTE=James Heinrich;586413]I tried it, it crashed the same way as the original.[/QUOTE]

[QUOTE=BudgieJane;586425]Version 2.01 works OK on my Win-7 machine.[/QUOTE]

[QUOTE=WraithX;586429]I am missing the same dll files as Budgie and James, but yafu 2.06 works fine on my Windows 7 Pro x64 computer.
[/QUOTE]

I don't know how we have entered dll hell and I don't know how to get out of it, especially given that I have been unable to reproduce the problem on any windows system I have access to (win10 enterprise, win10 home, on a variety of cpus).

I have gone through the effort over the last few months to make sure my windows build system was fully updated to the latest SDK and toolset for MSVC 19. I don't recall if that was done prior to the early releases such as 2.01, which is perhaps why that one works for BudgieJane. I suspect that Brian is correct and a full rebuild with an earlier SDK could be a solution. But that doesn't explain why some people with Win7 systems are able to use 2.06., so there must be a solution from a user perspective too. Just don't know what it is yet.

 James Heinrich 2021-08-25 14:10

I think I'm a particularly oddball case in that I'm using both an old OS and a (very) old CPU (no AVX2 for example).
I don't know where to get a copy of v2.01 (that apparently work for other Win7 users), if someone wants to send me a copy I can confirm if it runs on my system or not.

 kruoli 2021-08-25 14:25

[QUOTE=James Heinrich;586481]I think I'm a particularly oddball case in that I'm using both an old OS and a (very) old CPU (no AVX2 for example).
I don't know where to get a copy of v2.01 (that apparently work for other Win7 users), if someone wants to send me a copy I can confirm if it runs on my system or not.[/QUOTE]

That would certainly mean that my build would fail with an illegal instruction exception since I build MPIR with AVX2 assembler support.

 James Heinrich 2021-08-25 17:15

1 Attachment(s)
[QUOTE=James Heinrich;586481]I don't know where to get a copy of v2.01 (that apparently work for other Win7 users), if someone wants to send me a copy I can confirm if it runs on my system or not.[/QUOTE][QUOTE=kruoli;586482][URL="http://github.com/bbuhrow/yafu/blob/d6cf245f72a7aadf68dea89ef5ff18396418c378/yafu-x64.exe"]Here[/URL] you go! :smile:[/QUOTE]Thanks! But it crashes the same way all the others do.

 rogue 2021-08-25 17:29

Is YAFU command line only? If so, maybe it can be built with msys?

 bsquared 2021-08-25 17:43

[QUOTE=rogue;586503]Is YAFU command line only? If so, maybe it can be built with msys?[/QUOTE]

Yes it does, but while it seems to work for me, people have reported problems/crashes there as well.

Given the availability nowadays of WSL2 and a much better visual studio implementation as of v2.06, I am actually in the process of abandoning the mingw64/msys2 build option and code from yafu. All these different options are getting to be too much for me to maintain.

All times are UTC. The time now is 12:19.