mersenneforum.org

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

bsquared 2021-04-08 20:00

YAFU 2.0
 
It has been so long since a new windows executable and trunk code update have been released that I thought I might as well bump the version number to 2.

Also significant: the official home of yafu is no longer on sourceforge. I decided to move all new development here:
[URL="https://github.com/bbuhrow/yafu"]https://github.com/bbuhrow/yafu[/URL]

One of the reasons why there hasn't been a new windows exe or trunk code release in a while is that I have been continually tinkering with things, usually with new instruction set extensions or wild ideas. This tinkering invariably seems to break stuff, and I didn't want that kind of churn in the main download. I have been putting in a ton of work lately to try to get things back to stability and at the same time capture much of the new development. If you have read this far, the takeaway should be: stuff is probably still broken here and there. Please let me know if you find something wrong - yafu is pretty much in perpetual beta status.

Here are a few of the major updates:
* [B]years [/B]worth of bugfixes and updates previously found in /branches/yafu-wip on sourceforge
* separated out yafu's sieve of Eratosthenes to a new project: [url]https://github.com/bbuhrow/ysieve[/url]. This will have to be built prior to yafu (similar to other dependencies like gmp)
* separated out a lot of tool-like things that I find myself re-using on other projects: [url]https://github.com/bbuhrow/ytools[/url]. This will have to be built prior to yafu (similar to other dependencies like gmp)
* A [B]lot [/B]of performance improvement from new AVX512 instruction set extensions, including AVX-ECM
* yafu.ini now also documents the options available
* newer builds of msieve, gmp, and gmp-ecm included in the windows exe

Happy factoring!

bsquared 2021-04-08 20:10

Note, AVX-ECM is not a dependency of yafu. It is a standalone project [URL="https://github.com/bbuhrow/avx-ecm"]here [/URL]with its own thread [URL="https://www.mersenneforum.org/showthread.php?t=25056"]here[/URL]; a copy of the source is also in yafu.

My github page also has a few other minor repositories, if anyone is interested. These are:
* A C-language arbitrary precision integer calculator based on yafu's calculator: [url]https://github.com/bbuhrow/ycalc[/url]
* A C-language input parser based on yafu's parser: [url]https://github.com/bbuhrow/cmdParser[/url]
* yafu's tinyecm code: [url]https://github.com/bbuhrow/tiny-ecm[/url]

EdH 2021-04-08 20:55

This all sounds great, but I'm wondering if it means I'll need to change all my "How I..." threads that reference YAFU ASAP, or if the sourceforge set will still be available for a while (and I can procrastinate).

bsquared 2021-04-08 20:57

The stuff on sourceforge is not going anywhere, so no need to do anything quickly. Actually probably best not to do anything until all of the kinks have been worked out of this new thing.

charybdis 2021-04-09 01:58

I'm getting a segfault when attempting tune(), on both windows and linux:

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

>> Setting THREADS = 1 for tuning
checking for NFS sievers... done.

starting SIQS on c60: 349594255864176572614071853194924838158088864370890996447417
Segmentation fault (core dumped)[/code]

siqs() runs fine on this number.

Kvasir 2021-04-09 08:18

tune() doesn't seem to do anything (at least not updating yafu.ini) on Windows. And even if I have an old tune_info line in the .ini file, this is displayed on startup:
fac: no tune info: using qs/gnfs crossover of 100 digits
fac: no tune info: using qs/snfs crossover of 75 digits

Besides, ecm seems to run single-threaded, even with threads=10 in yafu.ini. SIQS runs multi-threaded.

mersenneNoob 2021-04-09 08:43

553351296091338013184869649447 is a factor of the 60 digit number

charybdis 2021-04-09 12:41

[QUOTE=Kvasir;575542]Besides, ecm seems to run single-threaded, even with threads=10 in yafu.ini. SIQS runs multi-threaded.[/QUOTE]

I don't think yafu's internal ecm can run multithreaded on windows? Try using an external ecm binary and changing "ext_ecm=1000000000" in yafu.ini to something smaller like 10000 to make sure that it actually gets used.

[QUOTE=mersenneNoob;575543]553351296091338013184869649447 is a factor of the 60 digit number[/QUOTE]

True, but anyone who wanted to know the factors could fire up yafu and find them very quickly using siqs() or factor(). In fact you'll see I mentioned that siqs() worked successfully on this number, so I already have the factors in my factor.log; it took 0.4 seconds to find them.

And that assumes we actually care what the factors are. That 60 digit number is just one of the numbers used as a test by yafu's tune() function, which determines the optimal crossover between SIQS and GNFS on a given system. It was probably generated randomly and is of no independent interest to anyone.

bsquared 2021-04-09 12:55

[QUOTE=charybdis;575549]I don't think yafu's internal ecm can run multithreaded on windows? Try using an external ecm binary and changing "ext_ecm=1000000000" in yafu.ini to something smaller like 10000 to make sure that it actually gets used.

[/QUOTE]

Perfect, yes.

I set ext-ecm large so that the internal avx-ecm can be used to high bounds, which is both multithreaded and vectorized. It must have accidentally got committed to git. If folks have AVX512F and therefore access to all three ecm versions, they will have to think about how to configure things with ext_ecm, prefer_gmpecm, and prefer_gmpecm_stg2.

The bug in tune was fixed last night; will hopefully get a new windows exe committed today.

charybdis 2021-04-09 19:17

tune() doesn't segfault anymore, but I'm still seeing a couple of issues. First it incorrectly detects a 64-bit linux system as 32-bit:
[code]tune_info=Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz,LINUX32,9.61126e-06,0.201795,0.276128,0.0996136,100.465,42[/code]

And then when I use factor(), I get
[code]fac: check tune params contained invalid parameter(s), ignoring tune info.[/code]

bur 2021-04-10 04:47

When running yafu tune(), this is all that happens:

[CODE]>yafu-x64.exe tune()


checking for NFS sievers... done.

starting SIQS on c60: 349594255864176572614071853194924838158088864370890996447417
[/CODE]Takes just a few seconds, no tuneinfo was added to the ini.


session.log:
[CODE]04/10/21 06:55:39, =====================================
04/10/21 06:55:39, System/Build Info:
04/10/21 06:55:39, detected AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx
detected L1 = 32768 bytes, L2 = 4194304 bytes, CL = 64 bytes
04/10/21 06:55:39, using 1 random witness for Rabin-Miller PRP checks
04/10/21 06:55:39, Cached 664579 primes: max prime is 9999991

04/10/21 06:55:39, Random seed: 10929573232478676992[/CODE]factor.log:
[CODE]04/10/21 06:55:40, starting SIQS on c60: 349594255864176572614071853194924838158088864370890996447417
04/10/21 06:55:40, random seed: 8271006283189086208[/CODE]






And a second issue, specifying -noecm seems to be ignored. I used it both in the ini and as an argument but it still runs ecm. This number if it*s important: 10450974137988693609715901393399485545016883310684938211501868888239765039524963017798457141299451333307339683

bsquared 2021-04-10 13:46

[QUOTE=bur;575603]When running yafu tune(), this is all that happens:
[/QUOTE]

As I mentioned in post 9, this has been fixed, but I'm still working on the other issues charybdis mentioned so the windows binary hasn't been updated yet.


[QUOTE=bur;575603]
And a second issue, specifying -noecm seems to be ignored. I used it both in the ini and as an argument but it still runs ecm. This number if it*s important: 10450974137988693609715901393399485545016883310684938211501868888239765039524963017798457141299451333307339683 [/QUOTE]

Use -plan noecm

Looks like I forgot that noecm had its own argument outside of plan; I will reenable that.

bur 2021-04-10 16:08

Ok, thanks. I didn't get an error message, so I thought it was different.

bsquared 2021-04-11 15:39

Updated windows exe's are now available. I think all of the "tune" issues are fixed now.

After a bunch of wrestling with build tools I've now built for windows on:
* windows subsystem for linux (WSL) <-- best option!
* Visual studio 2019
* Mingw64/Msys2

For some reason, avx-ecm doesn't work on the mingw64 build. I haven't tracked down why yet; for now it just uses internal/external gmp-ecm.

These various builds used GCC versions 7, 9, and 10, so the massive code reorg in 2.0 has hopefully fixed all of the build issues for GCC 10+ that people were reporting.

bur 2021-04-11 16:18

I just continued NFS sieving from another computer that ran yafu 1.34 on an different computer with the new yafu2 build and so far everything runs smoothly, no bugs encountered.

charybdis 2021-04-11 16:51

Looks good now. Thank you!

bur 2021-04-14 07:46

I tried the yafu-x64.exe on an i3-2110 with Win 10 and both factor() and tune() just show a blank line for 10 s with no CPU activity and then it returns to the prompt.

A session.log is created but with size 0.

bsquared 2021-04-14 19:03

[QUOTE=bur;575877]I tried the yafu-x64.exe on an i3-2110 with Win 10 and both factor() and tune() just show a blank line for 10 s with no CPU activity and then it returns to the prompt.

A session.log is created but with size 0.[/QUOTE]

I was not able to test on a cpu that old, so I suspect that there was an illegal instruction. yafu is supposed to be smart about that, only using sse41, avx2, etc., when it is actually available, but I guess something slipped through that I wasn't able to test for.

I don't know if it will tell me much, but can you try to start with -v -v -v (three verbose flags) and post any output?

[edit]
Also I guess I should ask, is this a 64-bit windows 10 or 32-bit? I have stopped supporting/building 32-bit yafu.

bur 2021-04-15 19:41

This is all that happens:


[CODE]D:\Primes\yafu2>yafu-x64.exe factor("10^30+1237") -v -v -v


YAFU Version 2.0
Built with Microsoft Visual Studio 1928
Using GMP-ECM 7.0.4, Powered by MPIR 3.0.0
Detected Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz
Detected L1 = 32768 bytes, L2 = 3145728 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 =======
===============================================================

>>
D:\Primes\yafu2>[/CODE]
But it's not important, I can always just use 1.34 on that older computer.

kruoli 2021-04-20 22:19

Currently, I'm trying to compile YAFU for Linux. I'm stuck at the ysieve. There is a function [C]modinv_1c[/C], which cannot be resolved. I already have GMP, GMP-ECM and ytools in my source directory. Then I did a grep on this directory:
[CODE]~/src$ grep -Rn modinv_1c .
Binary file ./ysieve/libysieve.a matches
./ysieve/roots.c:321: inv = modinv_1c(t->sdata.prodN, prime);
./ysieve/roots.c:425: inv = modinv_1c(pn, prime);
./ysieve/roots.c:447: inv = modinv_1c(t->sdata.prodN, prime);
Binary file ./ysieve/roots.o matches
./ysieve/worker.c:333: inv = modinv_1c(t->sdata.prodN, prime);
./ysieve/worker.c:353: inv = modinv_1c(t->sdata.prodN, prime);[/CODE]

Where do I find this function?

GMP is version 6.2.1, GMP-ECM is the current SVN (as of about an hour ago), ytools is the version from git about half an hour ago. The environment is WSL Debian 10.9, all available updates applied.

The commandline for compiling was [C]~/src/ysieve$ make CC=gcc CFLAGS="-O3 -march=native -I../ytools -I. -L../ytools"[/C]

bsquared 2021-04-21 00:18

[QUOTE=kruoli;576291]Currently, I'm trying to compile YAFU for Linux. I'm stuck at the ysieve. There is a function [C]modinv_1c[/C], which cannot be resolved. I already have GMP, GMP-ECM and ytools in my source directory. Then I did a grep on this directory:
[CODE]~/src$ grep -Rn modinv_1c .
Binary file ./ysieve/libysieve.a matches
./ysieve/roots.c:321: inv = modinv_1c(t->sdata.prodN, prime);
./ysieve/roots.c:425: inv = modinv_1c(pn, prime);
./ysieve/roots.c:447: inv = modinv_1c(t->sdata.prodN, prime);
Binary file ./ysieve/roots.o matches
./ysieve/worker.c:333: inv = modinv_1c(t->sdata.prodN, prime);
./ysieve/worker.c:353: inv = modinv_1c(t->sdata.prodN, prime);[/CODE]

Where do I find this function?

GMP is version 6.2.1, GMP-ECM is the current SVN (as of about an hour ago), ytools is the version from git about half an hour ago. The environment is WSL Debian 10.9, all available updates applied.

The commandline for compiling was [C]~/src/ysieve$ make CC=gcc CFLAGS="-O3 -march=native -I../ytools -I. -L../ytools"[/C][/QUOTE]

Looks like I forgot to update those function names on generic builds (i.e., non-AVX2 or SKYLAKE). If you have AVX2 on your computer (haswell or newer, I think, circa 2014) then build with USE_AVX2=1 or add -DUSE_AVX2 to your CFLAGS line. If you don't, try the fixed version I just now committed to ysieve.

kruoli 2021-04-21 13:32

That is working now, thanks. The big trouble comes when trying to compile yafu itself. I've been tinkering with it for some hours no and reached this point: Using the command [C]make CC=gcc CFLAGS="-O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools"[/C] (yes, each -I and -L is necessary, also I have to state -DUSE_SSE2, otherwise he does not know what [C]COMPUTE_8X_SMALL_PROOTS[/C] is), it states:
[CODE]make: *** No rule to make target 'factor/avx-ecm/avxppm1.o', needed by 'yafu'. Stop.[/CODE]
Since I have not enabled AVX512, I'm not sure why he is trying to build AVX-ECM?

[B]Edit: I did a git pull and now it's not stopping here anymore, so I guess it's fixed, sorry.[/B]

Additionally, there are tons of warnings (up to the point where he cannot proceed), I'm not sure if I can ignore all of them?
[CODE]In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos.c:18:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/lanczos_matmul0.o factor/qs/msieve/lanczos_matmul0.c
factor/qs/msieve/lanczos_matmul0.c: In function ‘yafu_mul_packed’:
factor/qs/msieve/lanczos_matmul0.c:128:4: warning: implicit declaration of function ‘pthread_cond_signal’; did you mean ‘pthread_sigmask’? [-Wimplicit-function-declaration]
pthread_cond_signal(&t->run_cond);
^~~~~~~~~~~~~~~~~~~
pthread_sigmask
factor/qs/msieve/lanczos_matmul0.c:129:4: warning: implicit declaration of function ‘pthread_mutex_unlock’ [-Wimplicit-function-declaration]
pthread_mutex_unlock(&t->run_lock);
^~~~~~~~~~~~~~~~~~~~
factor/qs/msieve/lanczos_matmul0.c:145:4: warning: implicit declaration of function ‘pthread_mutex_lock’; did you mean ‘pthread_kill’? [-Wimplicit-function-declaration]
pthread_mutex_lock(&t->run_lock);
^~~~~~~~~~~~~~~~~~
pthread_kill
factor/qs/msieve/lanczos_matmul0.c:147:5: warning: implicit declaration of function ‘pthread_cond_wait’; did you mean ‘pthread_sigmask’? [-Wimplicit-function-declaration]
pthread_cond_wait(&t->run_cond, &t->run_lock);
^~~~~~~~~~~~~~~~~
pthread_sigmask
factor/qs/msieve/lanczos_matmul0.c: In function ‘yafu_start_worker_thread’:
factor/qs/msieve/lanczos_matmul0.c:522:2: warning: implicit declaration of function ‘pthread_mutex_init’; did you mean ‘pthread_kill’? [-Wimplicit-function-declaration]
pthread_mutex_init(&t->run_lock, NULL);
^~~~~~~~~~~~~~~~~~
pthread_kill
factor/qs/msieve/lanczos_matmul0.c:523:2: warning: implicit declaration of function ‘pthread_condit’; did you mean ‘pthread_kill’? [-Wimplicit-function-declaration]
pthread_condit(&t->run_cond, NULL);
^~~~~~~~~~~~~~~~~
pthread_kill
factor/qs/msieve/lanczos_matmul0.c:527:2: warning: implicit declaration of function ‘pthread_create’; did you mean ‘timer_create’? [-Wimplicit-function-declaration]
pthread_create(&t->thread_id, NULL, yafu_worker_thread_main, t);
^~~~~~~~~~~~~~
timer_create
factor/qs/msieve/lanczos_matmul0.c: In function ‘yafu_stop_worker_thread’:
factor/qs/msieve/lanczos_matmul0.c:554:2: warning: implicit declaration of function ‘pthread_join’; did you mean ‘pthread_kill’? [-Wimplicit-function-declaration]
pthread_join(t->thread_id, NULL);
^~~~~~~~~~~~
pthread_kill
factor/qs/msieve/lanczos_matmul0.c:555:2: warning: implicit declaration of function ‘pthread_cond_destroy’ [-Wimplicit-function-declaration]
pthread_cond_destroy(&t->run_cond);
^~~~~~~~~~~~~~~~~~~~
factor/qs/msieve/lanczos_matmul0.c:556:2: warning: implicit declaration of function ‘pthread_mutex_destroy’ [-Wimplicit-function-declaration]
pthread_mutex_destroy(&t->run_lock);
^~~~~~~~~~~~~~~~~~~~~
In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos_matmul0.c:19:
factor/qs/msieve/lanczos_matmul0.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/lanczos_matmul1.o factor/qs/msieve/lanczos_matmul1.c
In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos_matmul1.c:14:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/lanczos_matmul2.o factor/qs/msieve/lanczos_matmul2.c
In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos_matmul2.c:14:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/lanczos_pre.o factor/qs/msieve/lanczos_pre.c
In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos_pre.c:18:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/sqrt.o factor/qs/msieve/sqrt.c
factor/qs/msieve/sqrt.c: In function ‘yafu_find_factors’:
factor/qs/msieve/sqrt.c:186:44: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
large_primes = (uint32_t)xrealloc(large_primes,
^
factor/qs/msieve/sqrt.c:186:42: warning: assignment to ‘uint32_t *’ {aka ‘unsigned int *’} from ‘unsigned int’ makes pointer from integer without a cast [-Wint-conversion]
large_primes = (uint32_t)xrealloc(large_primes,
^
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/msieve/sqrt.c:18:
factor/qs/msieve/sqrt.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/savefile.o factor/qs/msieve/savefile.c
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/msieve/savefile.c:18:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/msieve/gf2.o factor/qs/msieve/gf2.c
In file included from include/qs_impl.h:20,
from factor/qs/msieve/gf2.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/filter.o factor/qs/filter.c
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/filter.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv.o factor/qs/tdiv.c
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/tdiv.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv_small.o factor/qs/tdiv_small.c
In file included from include/qs_impl.h:20,
from factor/qs/tdiv_small.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv_large.o factor/qs/tdiv_large.c
factor/qs/tdiv_large.c:92:84: warning: backslash and newline separated by space
"orq %%r9,%%r8 \n\t" /* r8 now holds 8 comparisons in 32 bits */ \

factor/qs/tdiv_large.c:93:86: warning: backslash and newline separated by space
"orq %%r10,%%r8 \n\t" /* r8 now holds 12 comparisons in 48 bits */ \

factor/qs/tdiv_large.c:95:112: warning: backslash and newline separated by space
"andq %%r9,%%r8 \n\t" /* clear the bytemask results we don't care about */ \

factor/qs/tdiv_large.c:126:93: warning: backslash and newline separated by space
"vpmovmskb %%ymm2, %%r9 \n\t" /* 2nd 4 comparisons in 16 bits of r9 */ \

factor/qs/tdiv_large.c:134:112: warning: backslash and newline separated by space
"andq %%r9,%%r8 \n\t" /* clear the bytemask results we don't care about */ \

factor/qs/tdiv_large.c:188:84: warning: backslash and newline separated by space
"orq %%r9,%%r8 \n\t" /* r8 now holds 8 comparisons in 32 bits */ \

factor/qs/tdiv_large.c:189:86: warning: backslash and newline separated by space
"orq %%r10,%%r8 \n\t" /* r8 now holds 12 comparisons in 48 bits */ \

factor/qs/tdiv_large.c:191:112: warning: backslash and newline separated by space
"andq %%r9,%%r8 \n\t" /* clear the bytemask results we don't care about */ \

In file included from include/qs_impl.h:20,
from factor/qs/tdiv_large.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv_scan.o factor/qs/tdiv_scan.c
In file included from include/qs_impl.h:20,
from factor/qs/tdiv_scan.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/large_sieve.o factor/qs/large_sieve.c
In file included from include/qs_impl.h:20,
from factor/qs/large_sieve.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/new_poly.o factor/qs/new_poly.c
In file included from include/qs_impl.h:20,
from factor/qs/new_poly.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/siqs_test.o factor/qs/siqs_test.c
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/siqs_test.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/siqs_aux.o factor/qs/siqs_aux.c
In file included from include/qs_impl.h:20,
from factor/qs/siqs_aux.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/smallmpqs.o factor/qs/smallmpqs.c
In file included from include/factor.h:26,
from include/qs.h:24,
from factor/qs/smallmpqs.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/SIQS.o factor/qs/SIQS.c
In file included from include/factor.h:26,
from factor/qs/SIQS.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/med_sieve_32k.o factor/qs/med_sieve_32k.c
In file included from include/qs_impl.h:20,
from factor/qs/med_sieve_32k.c:22:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/poly_roots_32k.o factor/qs/poly_roots_32k.c
In file included from include/qs_impl.h:20,
from factor/qs/poly_roots_32k.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/prime_sieve.o factor/prime_sieve.c
In file included from include/qs_impl.h:20,
from include/prime_sieve.h:6,
from factor/prime_sieve.c:16:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/batch_factor.o factor/batch_factor.c
In file included from factor/batch_factor.c:17:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/cofactorize_siqs.o factor/qs/cofactorize_siqs.c
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/update_poly_roots_32k.o factor/qs/update_poly_roots_32k.c
In file included from include/qs_impl.h:20,
from factor/qs/update_poly_roots_32k.c:22:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv_med_32k.o factor/qs/tdiv_med_32k.c
In file included from include/qs_impl.h:20,
from factor/qs/tdiv_med_32k.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/qs/tdiv_resieve_32k.o factor/qs/tdiv_resieve_32k.c
In file included from include/qs_impl.h:20,
from factor/qs/tdiv_resieve_32k.c:21:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o top/driver.o top/driver.c
top/driver.c: In function ‘helpfunc’:
top/driver.c:734:10: warning: implicit declaration of function ‘isspace’ [-Wimplicit-function-declaration]
while (isspace((int)s[j])) j++; //skip white space
^~~~~~~
In file included from include/factor.h:26,
from top/cmdParser/calc.h:46,
from top/driver.c:23:
top/driver.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o top/test.o top/test.c
top/test.c: In function ‘test_dlp_composites’:
top/test.c:138:35: warning: implicit declaration of function ‘floor’ [-Wimplicit-function-declaration]
my_ecm_params->B1done = 1.0 + floor(1 * 128.) / 134217728.;
^~~~~
top/test.c:138:35: warning: incompatible implicit declaration of built function ‘floor’
top/test.c:138:35: note: include ‘<math.h>’ or provide a declaration of ‘floor’
top/test.c:29:1:
+#include <math.h>

top/test.c:138:35:
my_ecm_params->B1done = 1.0 + floor(1 * 128.) / 134217728.;
^~~~~
top/test.c:733:47: warning: incompatible implicit declaration of built function ‘floor’
my_ecm_params->B1done = 1.0 + floor(1 * 128.) / 134217728.;
^~~~~
top/test.c:733:47: note: include ‘<math.h>’ or provide a declaration of ‘floor’
In file included from include/factor.h:26,
from include/qs.h:24,
from top/test.c:24:
top/test.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/tune.o factor/tune.c
factor/tune.c: In function ‘factor_tune’:
factor/tune.c:163:58: warning: implicit declaration of function ‘pow’ [-Wimplicit-function-declaration]
printf("best exponential fit is y = %g * exp(%g * x)\n",pow(BASE_e,b),a);
^~~
factor/tune.c:163:58: warning: incompatible implicit declaration of built function ‘pow’
factor/tune.c:163:58: note: include ‘<math.h>’ or provide a declaration of ‘pow’
factor/tune.c:6:1:
+#include <math.h>
#include <stdint.h>
factor/tune.c:163:58:
printf("best exponential fit is y = %g * exp(%g * x)\n",pow(BASE_e,b),a);
^~~
factor/tune.c: In function ‘best_linear_fit’:
factor/tune.c:701:11: warning: implicit declaration of function ‘log’ [-Wimplicit-function-declaration]
yy[i] = log(y[i]);
^~~
factor/tune.c:701:11: warning: incompatible implicit declaration of built function ‘log’
factor/tune.c:701:11: note: include ‘<math.h>’ or provide a declaration of ‘log’
In file included from include/factor.h:26,
from factor/tune.c:2:
factor/tune.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/autofactor.o factor/autofactor.c
factor/autofactor.c: In function ‘get_qs_time_estimate’:
factor/autofactor.c:200:42: warning: implicit declaration of function ‘exp’ [-Wimplicit-function-declaration]
estimate = fobj->qs_obj.qs_multiplier * exp(fobj->qs_obj.qs_exponent * digits);
^~~
factor/autofactor.c:200:42: warning: incompatible implicit declaration of built function ‘exp’
factor/autofactor.c:200:42: note: include ‘<math.h>’ or provide a declaration of ‘exp’
factor/autofactor.c:33:1:
+#include <math.h>

factor/autofactor.c:200:42:
estimate = fobj->qs_obj.qs_multiplier * exp(fobj->qs_obj.qs_exponent * digits);
^~~
factor/autofactor.c: In function ‘get_gnfs_time_estimate’:
factor/autofactor.c:250:45: warning: incompatible implicit declaration of built function ‘exp’
estimate = fobj->nfs_obj.gnfs_multiplier * exp(fobj->nfs_obj.gnfs_exponent * digits);
^~~
factor/autofactor.c:250:45: note: include ‘<math.h>’ or provide a declaration of ‘exp’
factor/autofactor.c: In function ‘interp_and_set_curves’:
factor/autofactor.c:1369:29: warning: implicit declaration of function ‘ceil’ [-Wimplicit-function-declaration]
fwork->curves = (uint32_t )ceil(work);
^~~~
factor/autofactor.c:1369:29: warning: incompatible implicit declaration of built function ‘ceil’
factor/autofactor.c:1369:29: note: include ‘<math.h>’ or provide a declaration of ‘ceil’
In file included from include/yafu.h:31,
from factor/autofactor.c:21:
factor/autofactor.c: In function ‘factor’:
../gmp-6.2.1/gmp.h:538:21: warning: implicit declaration of function ‘__gmp_fprintf’; did you mean ‘__gmp_sprintf’? [-Wimplicit-function-declaration]
#define gmp_fprintf __gmp_fprintf
^~~~~~~~~~~~~
factor/autofactor.c:1974:6: note: in expansion of macro ‘gmp_fprintf’
gmp_fprintf(fobj->autofact_obj.op_file, "%Zd\n", fobj->N);
^~~~~~~~~~~
In file included from include/factor.h:26,
from factor/autofactor.c:23:
factor/autofactor.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o top/cmdParser/cmdOptions.o top/cmdParser/cmdOptions.c
top/cmdParser/cmdOptions.c: In function ‘enforce_numeric’:
top/cmdParser/cmdOptions.c:225:14: warning: implicit declaration of function ‘isdigit’ [-Wimplicit-function-declaration]
if (!isdigitt)arg[i]))
^~~~~~~
top/cmdParser/cmdOptions.c: In function ‘initOpt’:
top/cmdParser/cmdOptions.c:1004:19: warning: passing argument 1 of ‘strcpy’ from incompatible pointer type [-Wincompatible-pointer-types]
strcpy(options->tunenfo, "");
~~~~~~~^~~~~~~~~~~
In file included from ../ytools/ytools.h:37,
from top/cmdParser/cmdOptions.c:37:
/usr/include/string.h:121:14: note: expected ‘char * restrict’ but argument is of type ‘char **’
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
^~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o top/cmdParser/calc.o top/cmdParser/calc.c
top/cmdParser/calc.c: In function ‘feval’:
top/cmdParser/calc.c:2853:9: warning: implicit declaration of function ‘factor_tune’; did you mean ‘factor’? [-Wimplicit-function-declaration]
factor_tune(fobj);
^~~~~~~~~~~
factor
In file included from include/factor.h:26,
from top/cmdParser/calc.h:46,
from top/cmdParser/calc.c:43:
top/cmdParser/calc.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
top/cmdParser/calc.c: In function ‘preprocess’:
top/cmdParser/calc.c:983:17: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
strncpy(str, ptr, strlen(ptr) - 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
top/cmdParser/calc.c:983:35: note: length computed here
strncpy(str, ptr, strlen(ptr) - 1);
^~~~~~~~~~~
top/cmdParser/calc.c:956:17: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
strncpy(str, ptr, strlen(ptr) - 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
top/cmdParser/calc.c:956:35: note: length computed here
strncpy(str, ptr, strlen(ptr) - 1);
^~~~~~~~~~~
top/cmdParser/calc.c:936:13: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
strncpy(str, eptr, strlen(eptr) - 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
top/cmdParser/calc.c:933:23: note: length computed here
else if (eptr[strlen(eptr) + 1] == '\0')
^~~~~~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/gmp-ecm/ecm.o factor/gmp-ecm/ecm.c
factor/gmp-ecm/ecm.c: In function ‘ecm_do_one_curve’:
factor/gmp-ecm/ecm.c:754:39: warning: implicit declaration of function ‘floor’ [-Wimplicit-function-declaration]
thread_data->params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
factor/gmp-ecm/ecm.c:754:39: warning: incompatible implicit declaration of built function ‘floor’
factor/gmp-ecm/ecm.c:754:39: note: include ‘<math.h>’ or provide a declaration of ‘floor’
factor/gmp-ecm/ecm.c:27:1:
+#include <math.h>
#include <time.h>
factor/gmp-ecm/ecm.c:754:39:
thread_data->params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
factor/gmp-ecm/ecm.c:819:17: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
factor/gmp-ecm/ecm.c:733:7: note: declared here
void *ecm_do_one_curve(void *ptr)
^~~~~~~~~~~~~~~~
In file included from include/factor.h:26,
from include/yafu_ecm.h:23,
from factor/gmp-ecm/ecm.c:21:
factor/gmp-ecm/ecm.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/gmp-ecm/pp1.o factor/gmp-ecm/pp1.c
factor/gmp-ecm/pp1.c: In function ‘pp1_wrapper’:
factor/gmp-ecm/pp1.c:81:34: warning: implicit declaration of function ‘floor’ [-Wimplicit-function-declaration]
pp1_data.params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
factor/gmp-ecm/pp1.c:81:34: warning: incompatible implicit declaration of built function ‘floor’
factor/gmp-ecm/pp1.c:81:34: note: include ‘<math.h>’ or provide a declaration of ‘floor’
factor/gmp-ecm/pp1.c:28:1:
+#include <math.h>

factor/gmp-ecm/pp1.c:81:34:
pp1_data.params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
In file included from include/factor.h:26,
from include/yafu_ecm.h:23,
from factor/gmp-ecm/pp1.c:21:
factor/gmp-ecm/pp1.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/gmp-ecm/pm1.o factor/gmp-ecm/pm1.c
factor/gmp-ecm/pm1.c: In function ‘pm1_wrapper’:
factor/gmp-ecm/pm1.c:86:34: warning: implicit declaration of function ‘floor’ [-Wimplicit-function-declaration]
pm1_data.params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
factor/gmp-ecm/pm1.c:86:34: warning: incompatible implicit declaration of built function ‘floor’
factor/gmp-ecm/pm1.c:86:34: note: include ‘<math.h>’ or provide a declaration of ‘floor’
factor/gmp-ecm/pm1.c:28:1:
+#include <math.h>

factor/gmp-ecm/pm1.c:86:34:
pm1_data.params->B1done = 1.0 + floor (1 * 128.) / 134217728.;
^~~~~
In file included from include/factor.h:26,
from include/yafu_ecm.h:23,
from factor/gmp-ecm/pm1.c:21:
factor/gmp-ecm/pm1.c: At top level:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -c -o factor/avx-ecm/avxecm.o factor/avx-ecm/avxecm.c
In file included from factor/avx-ecm/avx_ecm.h:30,
from factor/avx-ecm/avxecm.c:52:
factor/avx-ecm/avxecm.c: In function ‘vececm’:
../gmp-6.2.1/gmp.h:538:21: warning: implicit declaration of function ‘__gmp_fprintf’; did you mean ‘__gmp_sprintf’? [-Wimplicit-function-declaration]
#define gmp_fprintf __gmp_fprintf
^~~~~~~~~~~~~
factor/avx-ecm/avxecm.c:2394:29: note: in expansion of macro ‘gmp_fprintf’
gmp_fprintf(save, "N=0x%Zx; ", gmpn);
^~~~~~~~~~~
In file included from factor/avx-ecm/avxecm.c:52:
factor/avx-ecm/avxecm.c: In function ‘vec_build_one_curve’:
factor/avx-ecm/avx_ecm.h:58:22: warning: conversion from ‘long long unsigned int’ to ‘uint32_t’ {aka ‘unsigned int’} changes value from ‘4503599627370495’ to ‘4294967295’ [-Woverflow]
#define VEC_MAXDIGIT 0xfffffffffffffULL
^~~~~~~~~~~~~~~~~~
factor/avx-ecm/avxecm.c:2775:57: note: in expansion of macro ‘VEC_MAXDIGIT’
work->sigma = spRandp(&tdata->lcg_state, 6, VEC_MAXDIGIT);
^~~~~~~~~~~~
factor/avx-ecm/avxecm.c: In function ‘build_one_curve_param1’:
factor/avx-ecm/avx_ecm.h:58:22: warning: conversion from ‘long long unsigned int’ to ‘uint32_t’ {aka ‘unsigned int’} changes value from ‘4503599627370495’ to ‘4294967295’ [-Woverflow]
#define VEC_MAXDIGIT 0xfffffffffffffULL
^~~~~~~~~~~~~~~~~~
factor/avx-ecm/avxecm.c:3031:57: note: in expansion of macro ‘VEC_MAXDIGIT’
work->sigma = spRandp(&tdata->lcg_state, 6, VEC_MAXDIGIT) & 0X3FFFFFF;
^~~~~~~~~~~~[/CODE]

Also, it seems like it is prefers the system wide installations of GMP and GMP-ECM. Do I have to edit the Makefile to use my custom built ones?

kruoli 2021-04-21 13:54

It looks like there are still some libraries missing? Msieve is version 1.53.

[CODE]gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -DUsenFS -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -L../ysieve top/driver.o top/test.o factor/tune.o factor/autofactor.o top/cmdParser/cmdOptions.o top/cmdParser/calc.o -o yafu -lysiqs -lyecm -lynfs -L../../ysieve.git/trunk -L../../ytools.git/trunk -L. -L../gmp/lib/ -L../gmp-ecm/lib/ -L../msieve-1.53 -lmsieve ../gmpecm/.libs/libecm.a ../gmp-6.2.1/.libs/libgmp.a -lytools -lysieve -lpthread -lm -ldl
/usr/bin/ld: factor/autofactor.o: in function `schedule_work':
autofactor.c:(.text+0x2233): undefined reference to `snfs_find_form'
/usr/bin/ld: autofactor.c:(.text+0x2319): undefined reference to `snfs_find_form'
/usr/bin/ld: autofactor.c:(.text+0x238e): undefined reference to `est_gnfs_size_via_poly'
/usr/bin/ld: factor/autofactor.o: in function `factor':
autofactor.c:(.text+0x4001): undefined reference to `snfs_find_form'
/usr/bin/ld: ./libysiqs.a(SIQS.o): in function `siqs_static_init':
SIQS.c:(.text+0x4e65): undefined reference to `resieve_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e73): undefined reference to `tdiv_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e8f): undefined reference to `med_sieveblock_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4ea7): undefined reference to `nextRoots_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x5363): undefined reference to `nextRoots_32k_sse41'
/usr/bin/ld: SIQS.c:(.text+0x5371): undefined reference to `med_sieveblock_32k_sse41'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_init':
snfs.c:(.text+0xa9): undefined reference to `mpz_polys_init'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_clear':
snfs.c:(.text+0x145): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `print_snfs':
snfs.c:(.text+0x76e): undefined reference to `print_poly'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_test_sieve':
snfs.c:(.text+0x28a7): undefined reference to `IGNOrenFS_ABORT'
/usr/bin/ld: snfs.c:(.text+0x28b0): undefined reference to `test_sieve'
/usr/bin/ld: snfs.c:(.text+0x28b6): undefined reference to `IGNOrenFS_ABORT'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `approx_norms':
snfs.c:(.text+0x2e53): undefined reference to `ggnfs_table'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `gen_xyyxf_poly':
snfs.c:(.text+0x3c14): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x4657): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x4727): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `gen_brent_poly':
snfs.c:(.text+0x5e66): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x5eed): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o):snfs.c:(.text+0x6296): more undefined references to `mpz_polys_free' follow
/usr/bin/ld: ./libynfs.a(snfs.o): in function `skew_snfs_params':
snfs.c:(.text+0x8c1): undefined reference to `get_ggnfs_params'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefile_open':
savefile.c:(.text+0x118): undefined reference to `gzopen64'
/usr/bin/ld: savefile.c:(.text+0x21b): undefined reference to `gzopen64'
/usr/bin/ld: savefile.c:(.text+0x251): undefined reference to `gzopen64'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefile_close':
savefile.c:(.text+0x2f1): undefined reference to `gzclose'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefile_write_line':
savefile.c:(.text+0x3d0): undefined reference to `gzputs'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefile_flush':
savefile.c:(.text+0x454): undefined reference to `gzputs'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefile_eof':
savefile.c:(.text+0x321): undefined reference to `gzeof'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefileread_line':
savefile.c:(.text+0x36c): undefined reference to `gzgets'
/usr/bin/ld: ../msieve-1.53/libmsieve.a(savefile.o): in function `savefilerewind':
savefile.c:(.text+0x491): undefined reference to `gzrewind'
collect2: error: ld returned 1 exit status
make: *** [Makefile:424: yafu] Error 1[/CODE]

bsquared 2021-04-21 14:03

It should be -DUSE_NFS to define yafu's nfs functions (not -DUsenFS). Also, I usually build msieve with NO_ZLIB; otherwise you might have to find/build/link a zlib library.

kruoli 2021-04-21 14:08

The call was [C]make CC=gcc CFLAGS="-O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -DUSE_NFS -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -L../ysieve" NFS=1[/C]. The small letters came from an extension in my browser (there are also a lot of identifiers that got mixed up on posting). I double checked this in the compilation output and it is fine there. I'll try again using NO_ZLIB.

kruoli 2021-04-21 14:13

Having -DNO_ZLIB or NO_ZLIB=1, it gives:
[CODE]gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -DUSE_NFS -DNO_ZLIB -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -L../ysieve -c -o factor/qs/msieve/lanczos.o factor/qs/msieve/lanczos.c
In file included from include/factor.h:28,
from include/qs_impl.h:23,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos.c:18:
include/msieve_common.h:6: warning: "NO_ZLIB" redefined
#define NO_ZLIB

<command-line>: note: this is the location of the previous definition
In file included from include/factor.h:28,
from include/qs_impl.h:23,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos.c:18:
include/msieve_common.h:35:5: error: unknown type name ‘gzFile’
gzFile* fp;
^~~~~~
In file included from include/qs_impl.h:20,
from include/lanczos.h:21,
from factor/qs/msieve/lanczos.c:18:
include/monty.h:86:19: warning: inline function ‘_umul128’ declared but never defined
__inline uint64_t _umul128(uint64_t x, uint64_t y, uint64_t* hi);
^~~~~~~~
make: *** [Makefile:449: factor/qs/msieve/lanczos.o] Error 1[/CODE]

bsquared 2021-04-21 14:28

Sorry, I meant I build msieve with NO_ZLIB=1.

You might still have to point to a zlib.h. msieve has one; I have this in my makefile
"-I../../msieve/zlib"

kruoli 2021-04-21 14:42

[QUOTE=bsquared;576351]Sorry, I meant I build msieve with NO_ZLIB=1.[/QUOTE]

Blast! You wrote that, I was not paying enough attention. I thought that I already had compiled msieve using that option; to make sure, I just recompiled it and then ran the yafu-compile again. Indeed, some of the errors vanished, so my brain failed me yet again. But there are still a lot of undefined references:
[CODE]/usr/bin/ld: factor/autofactor.o: in function `schedule_work':
autofactor.c:(.text+0x2233): undefined reference to `snfs_find_form'
/usr/bin/ld: autofactor.c:(.text+0x2319): undefined reference to `snfs_find_form'
/usr/bin/ld: autofactor.c:(.text+0x238e): undefined reference to `est_gnfs_size_via_poly'
/usr/bin/ld: factor/autofactor.o: in function `factor':
autofactor.c:(.text+0x4001): undefined reference to `snfs_find_form'
/usr/bin/ld: ./libysiqs.a(SIQS.o): in function `siqs_static_init':
SIQS.c:(.text+0x4e65): undefined reference to `resieve_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e73): undefined reference to `tdiv_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e8f): undefined reference to `med_sieveblock_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4ea7): undefined reference to `nextRoots_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x5363): undefined reference to `nextRoots_32k_sse41'
/usr/bin/ld: SIQS.c:(.text+0x5371): undefined reference to `med_sieveblock_32k_sse41'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_init':
snfs.c:(.text+0xa9): undefined reference to `mpz_polys_init'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_clear':
snfs.c:(.text+0x145): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `print_snfs':
snfs.c:(.text+0x76e): undefined reference to `print_poly'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `snfs_test_sieve':
snfs.c:(.text+0x28a7): undefined reference to `IGNORE_NFS_ABORT'
/usr/bin/ld: snfs.c:(.text+0x28b0): undefined reference to `test_sieve'
/usr/bin/ld: snfs.c:(.text+0x28b6): undefined reference to `IGNORE_NFS_ABORT'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `approx_norms':
snfs.c:(.text+0x2e53): undefined reference to `ggnfs_table'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `gen_xyyxf_poly':
snfs.c:(.text+0x3c14): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x4657): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x4727): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `gen_brent_poly':
snfs.c:(.text+0x5e66): undefined reference to `mpz_polys_free'
/usr/bin/ld: snfs.c:(.text+0x5eed): undefined reference to `mpz_polys_free'
/usr/bin/ld: ./libynfs.a(snfs.o):snfs.c:(.text+0x6296): more undefined references to `mpz_polys_free' follow
/usr/bin/ld: ./libynfs.a(snfs.o): in function `skew_snfs_params':
snfs.c:(.text+0x8c1): undefined reference to `get_ggnfs_params'
collect2: error: ld returned 1 exit status
make: *** [Makefile:424: yafu] Error 1[/CODE]

bsquared 2021-04-21 14:50

Ok, no worries. At least now the undefined references are all in yafu.

From your build line earlier it looks like they should be getting included. The best bet in situations like this is to start fresh. Do a make clean [U]with your CFLAGS line included[/U]. You want to make sure all files, including those built only when AVX2 and NFS are enabled, are reset. Then try building yafu again.

kruoli 2021-04-21 15:25

Wonderful, we are getting nearer. :smile: The list of undefined references is getting smaller and smaller:
[CODE]gcc -O3 -march=native -DUSE_AVX2 -DUSE_SSE41 -DUSE_SSE2 -DUSE_NFS -I../ytools -I../ysieve -Iinclude -Ifactor -Itop/cmdParser -I. -I../gmpecm -I../gmp-6.2.1 -Itop/aprcl -L../ytools -L../ysieve top/driver.o top/test.o factor/tune.o factor/autofactor.o top/cmdParser/cmdOptions.o top/cmdParser/calc.o -o yafu -lysiqs -lyecm -lynfs -L../../ysieve.git/trunk -L../../ytools.git/trunk -L. -L../gmp/lib/ -L../gmp-ecm/lib/ -L../msieve-1.53 -lmsieve ../gmpecm/.libs/libecm.a ../gmp-6.2.1/.libs/libgmp.a -lytools -lysieve -lpthread -lm -ldl
/usr/bin/ld: ./libysiqs.a(SIQS.o): in function `siqs_static_init':
SIQS.c:(.text+0x4e65): undefined reference to `resieve_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e73): undefined reference to `tdiv_medprimes_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4e8f): undefined reference to `med_sieveblock_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x4ea7): undefined reference to `nextRoots_32k_avx2'
/usr/bin/ld: SIQS.c:(.text+0x5363): undefined reference to `nextRoots_32k_sse41'
/usr/bin/ld: SIQS.c:(.text+0x5371): undefined reference to `med_sieveblock_32k_sse41'
collect2: error: ld returned 1 exit status
make: *** [Makefile:424: yafu] Error 1[/CODE]
I cleaned (with the flags included), built, cleaned again the same way, and built again, but that did not improve the results further.

bsquared 2021-04-21 15:49

Ah, I see why now.

I set up the makefile to build certain files conditionally. So when you set CFLAGS directly, that indicates that you have AVX2, but the AVX2-enabled files are not conditionally included.

Change your build line to
make yafu USE_AVX2=1 NFS=1 CC=gcc CFLAGS=...

The USE_AVX2=1 option to make will compile the needed files and also add the -DUSE_AVX2 and -DUSE_SSE41 identifiers to CFLAGS, so you can leave them out of your CFLAGS line. Also NFS=1 adds the -DUSE_NFS line, so you can leave that out of your CFLAGS line as well.

Sorry for the confusion, hope that helps.

kruoli 2021-04-21 16:06

Magnificent! :smile:

Now I have a functioning YAFU binary; thank you very much for the personal help.

I altered the make command as you suggested, but had to leave the explicit -D.. flags in the CFLAGS argument for some reason. Without them, there were errors. I also tried specifying CFLAGS before and after USE_AVX2=1, but still it could not find some things. So after I had -DUSE_AVX2 plus USE_AVX=1 (etc.), it worked.

bsquared 2021-04-21 17:14

[QUOTE=kruoli;576377]Magnificent! :smile:

Now I have a functioning YAFU binary; thank you very much for the personal help.

I altered the make command as you suggested, but had to leave the explicit -D.. flags in the CFLAGS argument for some reason. Without them, there were errors. I also tried specifying CFLAGS before and after USE_AVX2=1, but still it could not find some things. So after I had -DUSE_AVX2 plus USE_AVX=1 (etc.), it worked.[/QUOTE]

You're welcome!

I think what happened is that when you put a CFLAGS line as an input to make, it must ignore any CFLAGS stuff that happens in the makefile. Command line takes precedence, I guess. If you were to build without any CFLAGS input line, then I think my method would also work (That's how I build it.... just "make yafu NFS=1 USE_AVX2=1") You are not doing anything wrong; glad you found something that works.

If you don't mind sharing - what is your cpu? Just curious if you could try any of the AVX-512 code.

kruoli 2021-04-21 17:43

Sorry, I do not own any AVX-512 capable CPU. :no: (I have a Xeon Phi add in card, but currently I have no system to run it in.)

The system where I compiled YAFU was a Threadripper 1950X. When tuning, I got some segfaults (in the second SIQS, the first one went fine), so I'll have to investigate what happened later.

ConceptJunkie 2021-04-21 17:48

Long-time lurker with lame newb question
 
Hi,

I've been using YAFU in conjunction with my calculator tool for about 5 years ([url]https://github.com/ConceptJunkie/rpn[/url]) and I'm excited about this new release. My lame question is this:

Is there any place to get a compiled Windows executable for YAFU?

There's a lot of stuff to build and I'd rather not start down that road unless I really need to, because I've seen the build instructions for Windows in the past, and they're quite involved.

My current obsession for the last couple weeks is computing the first prime after 10^n. I'm up to 3500-and-some right now. But if there's a new YAFU to try, maybe I'll go back to playing with aliquot sequences.

If I need to pull up my big boy pant and just build the thing, I will.

axn 2021-04-21 17:56

[QUOTE=ConceptJunkie;576403]My current obsession for the last couple weeks is computing the first prime after 10^n. I'm up to 3500-and-some right now. [/QUOTE]

Are you aware of [URL="http://www.worldofnumbers.com/borderprp.htm"]Border PRPs[/URL]?

bsquared 2021-04-21 18:23

[QUOTE=ConceptJunkie;576403]Hi,

I've been using YAFU in conjunction with my calculator tool for about 5 years ([url]https://github.com/ConceptJunkie/rpn[/url]) and I'm excited about this new release. My lame question is this:

Is there any place to get a compiled Windows executable for YAFU?

There's a lot of stuff to build and I'd rather not start down that road unless I really need to, because I've seen the build instructions for Windows in the past, and they're quite involved.

My current obsession for the last couple weeks is computing the first prime after 10^n. I'm up to 3500-and-some right now. But if there's a new YAFU to try, maybe I'll go back to playing with aliquot sequences.

If I need to pull up my big boy pant and just build the thing, I will.[/QUOTE]

There are 3 .exe's here: [url]https://github.com/bbuhrow/yafu[/url]

yafu-mingw-avx2.exe and yafu-mingw-skyx.exe are a little faster than yafu-x64.exe if you have cpus that support avx2 or avx512 but I think you have to use them in a mingw shell. yafu-x64.exe should be pretty general purpose and is only really only different in that it won't reach maximum SIQS speed.

I recommend giving a build a try using windows subsystem for linux (WSL) on windows 10. But totally understand if you don't want to go down that road.

Either way, thanks, and welcome to the forum.

ConceptJunkie 2021-04-21 18:26

[QUOTE=axn;576404]Are you aware of [URL="http://www.worldofnumbers.com/borderprp.htm"]Border PRPs[/URL]?[/QUOTE]

No, but I know the information is out there. You can find a list of the first 14,000 of them at [url]https://oeis.org/A033873[/url].

I see that BorderPRP has most of them up to 100,000.

wombatman 2021-04-23 00:49

Trying to compile 2.0 with latest GMP (6.2.1) and GMP-ECM (from svn update) using "make USE_SSE41=1 ECM=1 NFS=1". ytools and ysieve compile without issue. Trying to compile yafu throws the following error:

[CODE]/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:65: multiple definition of `vecmulmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:63: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:69: multiple definition of `vecaddsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:67: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:66: multiple definition of `vecsqrmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:64: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:68: multiple definition of `vecsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:66: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:67: multiple definition of `vecaddmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:65: first defined here
/usr/bin/ld: factor/autofactor.o: in function `do_work':
/home/wombat/yafu/factor/autofactor.c:491: undefined reference to `nfs'
/usr/bin/ld: top/cmdParser/calc.o: in function `feval':
/home/wombat/yafu/top/cmdParser/calc.c:2844: undefined reference to `nfs'
/usr/bin/ld: /home/wombat/yafu/top/cmdParser/calc.c:2402: undefined reference to `nfs'[/CODE]

I'm sure I've forgotten something that needs to be changed, but I can't figure out what.

ConceptJunkie 2021-04-23 03:54

[QUOTE=bsquared;576409]There are 3 .exe's here: [url]https://github.com/bbuhrow/yafu[/url] [/QUOTE]

Thank you. I saw the Git repo, and checked for releases (which were all ancient), but didn't notice that there were EXEs. I tried it out and it works fine for me. Thanks!

I'll definitely keep an eye on the progress of this fascinating project. Even after all these years, the idea that I can factor a hundred-digit number in anywhere from a few minutes to a couple hours still blows my mind.

I've always been a little obsessed with numbers, and there's so much cool stuff available these days to indulge my interests. YAFU is definitely one of the coolest.

bsquared 2021-04-23 15:25

[QUOTE=wombatman;576562]Trying to compile 2.0 with latest GMP (6.2.1) and GMP-ECM (from svn update) using "make USE_SSE41=1 ECM=1 NFS=1". ytools and ysieve compile without issue. Trying to compile yafu throws the following error:

[CODE]/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:65: multiple definition of `vecmulmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:63: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:69: multiple definition of `vecaddsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:67: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:66: multiple definition of `vecsqrmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:64: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:68: multiple definition of `vecsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:66: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:67: multiple definition of `vecaddmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:65: first defined here
/usr/bin/ld: factor/autofactor.o: in function `do_work':
/home/wombat/yafu/factor/autofactor.c:491: undefined reference to `nfs'
/usr/bin/ld: top/cmdParser/calc.o: in function `feval':
/home/wombat/yafu/top/cmdParser/calc.c:2844: undefined reference to `nfs'
/usr/bin/ld: /home/wombat/yafu/top/cmdParser/calc.c:2402: undefined reference to `nfs'[/CODE]

I'm sure I've forgotten something that needs to be changed, but I can't figure out what.[/QUOTE]

Hopefully just fixed the duplicate vec*_ptr problems - please try it again after updating. I'm not sure why you are getting the undefined nfs errors since you are including NFS=1. Maybe do a make clean (make clean NFS=1 USE_SSE41=1) and rebuild.

[edit]
You shouldn't need the ECM=1 flag... that is an msieve thing. But including it is harmless.

bsquared 2021-04-23 15:30

[QUOTE=ConceptJunkie;576575]Thank you. I saw the Git repo, and checked for releases (which were all ancient), but didn't notice that there were EXEs. I tried it out and it works fine for me. Thanks!

I'll definitely keep an eye on the progress of this fascinating project. Even after all these years, the idea that I can factor a hundred-digit number in anywhere from a few minutes to a couple hours still blows my mind.

I've always been a little obsessed with numbers, and there's so much cool stuff available these days to indulge my interests. YAFU is definitely one of the coolest.[/QUOTE]

Thanks! Glad you like it. It has been a lot of fun tinkering with it over the years. And as cpu vendors keep adding new things (AVX512, more and more threads), there always seems to be new ways to optimize.

bsquared 2021-04-23 15:32

[QUOTE=kruoli;576402]Sorry, I do not own any AVX-512 capable CPU. :no: (I have a Xeon Phi add in card, but currently I have no system to run it in.)

The system where I compiled YAFU was a Threadripper 1950X. When tuning, I got some segfaults (in the second SIQS, the first one went fine), so I'll have to investigate what happened later.[/QUOTE]

If you are unable to make progress please let me know. I don't have any AMD systems to test on, but obviously I would like yafu to be able to run on them.

wombatman 2021-04-23 20:13

[QUOTE=bsquared;576622]Hopefully just fixed the duplicate vec*_ptr problems - please try it again after updating. I'm not sure why you are getting the undefined nfs errors since you are including NFS=1. Maybe do a make clean (make clean NFS=1 USE_SSE41=1) and rebuild.

[edit]
You shouldn't need the ECM=1 flag... that is an msieve thing. But including it is harmless.[/QUOTE]

Still seeing the same errors (minus the NFS ones) after updating, running make clean, and re-making:

[CODE]/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:65: multiple definition of `vecmulmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:63: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:69: multiple definition of `vecaddsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:67: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:66: multiple definition of `vecsqrmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:64: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:68: multiple definition of `vecsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:66: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:67: multiple definition of `vecaddmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:65: first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:422: yafu] Error 1[/CODE]

I also did a clean re-make of both ytools and ysieve, just in case, before the remake of yafu proper.

bsquared 2021-04-23 23:40

[QUOTE=wombatman;576664]Still seeing the same errors (minus the NFS ones) after updating, running make clean, and re-making:

[CODE]/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:65: multiple definition of `vecmulmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:63: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:69: multiple definition of `vecaddsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:67: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:66: multiple definition of `vecsqrmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:64: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:68: multiple definition of `vecsubmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:66: first defined here
/usr/bin/ld: ./libyecm.a(avxecm.o):/home/wombat/yafu/factor/avx-ecm/avxecm.c:67: multiple definition of `vecaddmod_ptr'; ./libyecm.a(avxppm1.o):/home/wombat/yafu/factor/avx-ecm/avxppm1.c:65: first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:422: yafu] Error 1[/CODE]

I also did a clean re-make of both ytools and ysieve, just in case, before the remake of yafu proper.[/QUOTE]

Well, something isn't quite right because those function pointer definitions don't even exist in that file anymore. I consolidated the duplicate definitions into vec_common.c. Just double-checked and the corrections are checked in. Are you sure you updated yafu to the latest revision?

wombatman 2021-04-24 00:51

[QUOTE=bsquared;576686]Are you sure you updated yafu to the latest revision?[/QUOTE]

I used "git fetch" in each of the directories, but I'm also not overly familiar with git. Is that the proper way to update to the latest version of the repository?

EdH 2021-04-24 02:21

[QUOTE=wombatman;576689]I used "git fetch" in each of the directories, but I'm also not overly familiar with git. Is that the proper way to update to the latest version of the repository?[/QUOTE]I think it's "git pull" once you have established a clone, but you might want to research it.

wombatman 2021-04-24 02:53

[QUOTE=EdH;576694]I think it's "git pull" once you have established a clone, but you might want to research it.[/QUOTE]

That did the trick. Thank you both for your help!

bur 2021-04-24 06:25

I installed yafu from sourceforge using EdH how-to. Could someone explain how I transition to the github version? gmp-ecm and ggnfs are build and working, so it's just downloading and building the github version. If possible step-by-step. Thanks.

kruoli 2021-04-25 12:34

[QUOTE=bsquared;576625]If you are unable to make progress please let me know. I don't have any AMD systems to test on, but obviously I would like yafu to be able to run on them.[/QUOTE]

I guess there is some instruction that is available on Intel with AVX2, that is not available on my Zen 1 Threadripper. I tried the AVX2 binary for Windows from Github and that one wouldn't even start for me. Would it help you ifI ran the feature detector of y-cruncher and share it here?

Meanwhile, your "non-special" Windows binary is running fine. :smile:

bur 2021-04-28 09:43

I cloned the files with [C]git clone[/C], but [C]make[/C] quits with an error regarding a missing .h file and msieve. I think I need to edit Makefile to include the proper location for msieve?

Since there are various lines where it is mentioned, I don't know which of them to edit. This is for linux/ubuntu.

bsquared 2021-04-28 12:53

[QUOTE=kruoli;576827]I guess there is some instruction that is available on Intel with AVX2, that is not available on my Zen 1 Threadripper. I tried the AVX2 binary for Windows from Github and that one wouldn't even start for me. Would it help you ifI ran the feature detector of y-cruncher and share it here?

Meanwhile, your "non-special" Windows binary is running fine. :smile:[/QUOTE]

Yes, that would be good to see, thanks. Yafu has something similar, with the -vproc option, but if yafu doesn't run at all then I guess that won't work.

kruoli 2021-04-28 12:56

The AVX-less version works, so I'll post both outputs (yafu (precompiled Windows version without AVX) and y-cruncher feature detector) later, when I have access to the machine.

bsquared 2021-04-28 13:03

[QUOTE=bur;577093]I cloned the files with [C]git clone[/C], but [C]make[/C] quits with an error regarding a missing .h file and msieve. I think I need to edit Makefile to include the proper location for msieve?

Since there are various lines where it is mentioned, I don't know which of them to edit. This is for linux/ubuntu.[/QUOTE]

Line 26 includes the location of zlib within the msieve directory, maybe that is what you need to change.
[CODE]
-I../../msieve/zlib
[/CODE]

Also, line 172 of the makefile begins this if/else structure to specify the location of the msieve library:

[CODE]
ifeq ($(NFS),1)
CFLAGS += -DUSE_NFS
# modify the following line for your particular msieve installation

ifeq ($(COMPILER),icc)
LIBS += -L../../msieve/lib/linux
else
ifeq ($(COMPILER),icc)
LIBS += -L../../msieve/lib/wsl/
else
ifeq ($(MINGW),1)
LIBS += -L../../msieve/lib/mingw/
else
LIBS += -L../../msieve/lib/linux/
endif
endif
endif

LIBS += -lmsieve
endif[/CODE]

The point of all that is to have several locations for potential msieve installations and which one you use depends on the compiler. I try to make sure builds work using icc, gcc, and mingw/gcc so it was helpful to just select which one to use from the command line. It looks like a gcc build would use the last "else" line.

If you don't need that complexity you can replace it all with something like this:

ifeq ($(NFS),1)
CFLAGS += -DUSE_NFS
LIBS += -L../relative/path/to/libmsieve.a
endif

bur 2021-04-28 17:35

Ok, thank, I'll try that.

bur 2021-04-28 18:10

1 Attachment(s)
Now I get a lot of these errors:
[CODE]ar: Erzeugen von libynfs.a
ranlib libynfs.a
cc -g -DUSE_SSE2 -DUSE_AVX2 -DUSE_SSE41 -mavx2 -DUSE_SSE41 -m64 -msse4.1 -DUSE_NFS -O2 -fomit-frame-pointer -Wall -I. -Iinclude -Itop/aprcl -Itop/cmdParser -Itop/ -I../msieve/zlib -I../ysieve -I../ytools -I/usr/local/include/ -I/usr/local/include/ top/driver.o top/test.o factor/tune.o factor/autofactor.o top/cmdParser/cmdOptions.o top/cmdParser/calc.o -o yafu -lysiqs -lyecm -lynfs -L../ysieve -L../ytools -L. -L/usr/local/lib/ -L/usr/local/lib/ -lecm /usr/local/lib/libgmp.a -lytools -lysieve -lpthread -lm -ldl
/usr/bin/ld: ./libynfs.a(nfs_poly.o): in function `init_poly_threaddata':
/home/florian/Math/yafu/factor/nfs/nfs_poly.c:881: undefined reference to `msieve_obj_new'
.
.
.
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:511: undefined reference to `msieve_obj_new'
/usr/bin/ld: ./libynfs.a(nfs_postproc.o): in function `do_msieve_filtering':
/home/florian/Math/yafu/factor/nfs/nfs_postproc.c:103: undefined reference to `nfs_filter_relations'
[/CODE]msieve is in ../msieve
ytools is in ../ytools
ysieve is in ../ysieve
gmp and ecm libs and includes are in /usr/local/lib and /usr/local/include


Any idea what could be missing? I attached the Makefile (copy&paste from terminal to Windows, so there might be formatting errors). Any help is greatly appreciated.

bsquared 2021-04-28 18:32

Typo.

LIB += -L../msieve/
should be
LIBS += -L../msieve/

BudgieJane 2021-04-28 18:56

Sorry to be a bit ignorant here, but how can I download the txt files? When I clicked on the windows executable I got a download button, but I don't get one for docfile.txt, README and yafu.ini.

bsquared 2021-04-28 19:14

[QUOTE=BudgieJane;577146]Sorry to be a bit ignorant here, but how can I download the txt files? When I clicked on the windows executable I got a download button, but I don't get one for docfile.txt, README and yafu.ini.[/QUOTE]

I don't know about individual files, but if you don't want to clone, then from the top level page ([url]https://github.com/bbuhrow/yafu[/url]) there is a "code" pulldown where you can download a .zip of the selected branch.

BudgieJane 2021-04-28 19:35

[QUOTE=bsquared;577149]I don't know about individual files, but if you don't want to clone, then from the top level page ([url]https://github.com/bbuhrow/yafu[/url]) there is a "code" pulldown where you can download a .zip of the selected branch.[/QUOTE]

Thank you.

kruoli 2021-04-28 19:53

AMD Threadripper 1950X feature set
 
YAFU says:
[CODE]For InfoType 0
CPUInfo[0] = 0xd
CPUInfo[1] = 0x68747541
CPUInfo[2] = 0x444d4163
CPUInfo[3] = 0x69746e65

For InfoType 1
CPUInfo[0] = 0x800f11
CPUInfo[1] = 0xa200800
CPUInfo[2] = 0x7ed8320b
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] = 0x40
CPUInfo[1] = 0x40
CPUInfo[2] = 0x3
CPUInfo[3] = 0x0

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

For InfoType 7
CPUInfo[0] = 0x0
CPUInfo[1] = 0x209c01a9
CPUInfo[2] = 0x0
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] = 0x8000001f
CPUInfo[1] = 0x68747541
CPUInfo[2] = 0x444d4163
CPUInfo[3] = 0x69746e65

For InfoType 80000001
CPUInfo[0] = 0x800f11
CPUInfo[1] = 0x70000000
CPUInfo[2] = 0x35c233ff
CPUInfo[3] = 0x2fd3fbff

For InfoType 80000002
CPUInfo[0] = 0x20444d41
CPUInfo[1] = 0x657a7952
CPUInfo[2] = 0x6854206e
CPUInfo[3] = 0x64616572

For InfoType 80000003
CPUInfo[0] = 0x70706972
CPUInfo[1] = 0x31207265
CPUInfo[2] = 0x58303539
CPUInfo[3] = 0x2d363120

For InfoType 80000004
CPUInfo[0] = 0x65726f43
CPUInfo[1] = 0x6f725020
CPUInfo[2] = 0x73736563
CPUInfo[3] = 0x20726f

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

For InfoType 80000006
CPUInfo[0] = 0x36006400
CPUInfo[1] = 0x56006400
CPUInfo[2] = 0x2006140
CPUInfo[3] = 0x100a140

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

For InfoType 80000008
CPUInfo[0] = 0x3030
CPUInfo[1] = 0x1007
CPUInfo[2] = 0x501f
CPUInfo[3] = 0x0

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

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

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] = 0xf040f040
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0

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

For InfoType 8000001b
CPUInfo[0] = 0x3ff
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] = 0xa
CPUInfo[1] = 0x105
CPUInfo[2] = 0x100
CPUInfo[3] = 0x0

For InfoType 8000001f
CPUInfo[0] = 0x7
CPUInfo[1] = 0x16f
CPUInfo[2] = 0xf
CPUInfo[3] = 0x1


CPU String: AuthenticAMD
Stepping ID = 1
Model = 1
Family = 15
Extended family = 8
CLFLUSH cache line size = 64
Logical Processor Count = 32
APIC Physical ID = 10

The following features are supported:
SSE3
MONITOR/MWAIT
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
Physical Address Extensions
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
Multithreading Technology
LAHF/SAHF in 64-bit mode
Core multi-processing legacy mode
Secure Virtual Machine
Extended APIC Register Space
AltMovCr8
LZCNT instruction
SSE4A (EXTRQ, INSERTQ, MOVNTSD, MOVNTSS)
Misaligned SSE mode
PREFETCH and PREFETCHW Instructions
SKINIT and DEV support
SYSCALL/SYSRET in 64-bit mode
Execute Disable Bit
1GB page support
RDTSCP instruction
64 bit Technology
Nested Paging
LBR Visualization
FP128 optimization
MOVU Optimization

CPU Brand String: AMD Ryzen Threadripper 1950X 16-Core Processor
Cache Line Size = 64
L2 Associativity = 6
Cache Size = 512K
EAX=7 CPUID feature bits:
EAX=00000000
EBX=209c01a9
ECX=00000000
EDX=00000000


AVX2 Extensions


BMI2 Extensions


YAFU Version 2.0
Built with Microsoft Visual Studio 1928
Using GMP-ECM 7.0.4, Powered by MPIR 3.0.0
Detected AMD Ryzen Threadripper 1950X 16-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 =======
===============================================================

>>[/CODE]

y-cruncher says:
[CODE]y-cruncher v0.7.8 Build 9507

Detecting Environment...

CPU Vendor:
AMD = Yes
Intel = No

OS Features:
* 64-bit = Yes
* OS AVX = Yes
* OS AVX512 = No

Hardware Features:
MMX = Yes
* x64 = Yes
* ABM = Yes
RDRAND = Yes
RDSEED = Yes
BMI1 = Yes
* BMI2 = Yes
* ADX = Yes
MPX = No
PREFETCHW = Yes
PREFETCHWT1 = No
RDPID = No
GFNI = No
VAES = No

SIMD: 128-bit
* SSE = Yes
* SSE2 = Yes
* SSE3 = Yes
* SSSE3 = Yes
SSE4a = Yes
* SSE4.1 = Yes
* SSE4.2 = Yes
AES-NI = Yes
SHA = Yes

SIMD: 256-bit
* AVX = Yes
XOP = No
* FMA3 = Yes
* FMA4 = No
* AVX2 = Yes

SIMD: 512-bit
* AVX512-F = No
AVX512-CD = No
AVX512-PF = No
AVX512-ER = No
* AVX512-VL = No
* AVX512-BW = No
* AVX512-DQ = No
* AVX512-IFMA = No
* AVX512-VBMI = No

Alright Intel, how many drinks have you had tonight?
AVX512-VPOPCNTDQ = No
AVX512-4FMAPS = No
AVX512-4VNNIW = No
AVX512-VBMI2 = No
AVX512-VPCLMUL = No
AVX512-VNNI = No
AVX512-BITALG = No
AVX512-BF16 = No


Auto-Selecting: 17-ZN1 ~ Yukina[/CODE]

bur 2021-04-30 17:39

[QUOTE=bsquared;577144]Typo.

LIB += -L../msieve/
should be
LIBS += -L../msieve/[/QUOTE]Thanks, unfortunately I still get the same error.

bsquared 2021-04-30 18:11

[QUOTE=bur;577305]Thanks, unfortunately I still get the same error.[/QUOTE]

Are you building with NFS=1? e.g., something like:
make yafu NFS=1 USE_AVX2=1

bur 2021-04-30 18:17

Yes, I forgot to mention, I use this [c]make NFS=1 USE_SSE41=1 USE_AVX2=1[/c]

bsquared 2021-04-30 18:30

And the file ../msieve/libmsieve.a exists relative to your yafu makefile? If so, and you use that build line, then I don't know what's going on: you will probably have to post more about the errors you are seeing.

bur 2021-05-01 05:07

[QUOTE=bsquared;577315]And the file ../msieve/libmsieve.a exists relative to your yafu makefile? If so, and you use that build line, then I don't know what's going on: you will probably have to post more about the errors you are seeing.[/QUOTE]Here's what I did:[CODE]git clone https://github.com/bbuhrow/yafu
cd yafu
make NFS=1 USE_SSE41=1 USE_AVX=1
[/CODE]This is the output of the failed building of libynfs.a (if you need all I don't know how to transfer all that text from ssh, so I'd do it on monday):

[CODE]ranlib libynfs.a
cc -g -DUSE_SSE2 -DUSE_SSE41 -m64 -msse4.1 -DUSE_NFS -O2 -fomit-frame-pointer -Wall -I. -Iinclude -Itop/aprcl -Itop/cmdParser -Itop/ -I../msieve/zlib/ -I../ysieve/ -I../ytools/ -I=../msieve/include/ -I../msieve/ -I/usr/local/include/ -I/usr/local/include/ top/driver.o top/test.o factor/tune.o factor/autofactor.o top/cmdParser/cmdOptions.o top/cmdParser/calc.o -o yafu -lysiqs -lyecm -lynfs -L../ysieve/ -L../ytools/ -L. -L/usr/local/lib/ -L/usr/local/lib/ -L../msieve/ -lecm /usr/local/lib/libgmp.a -lytools -lysieve -lpthread -lm -ldl
/usr/bin/ld: ./libynfs.a(nfs_poly.o): in function `init_poly_threaddata':
/home/florian/Math/yafu/factor/nfs/nfs_poly.c:881: undefined reference to `msieve_obj_new'
/usr/bin/ld: ./libynfs.a(nfs_poly.o): in function `polyfind_launcher':
/home/florian/Math/yafu/factor/nfs/nfs_poly.c:942: undefined reference to `factor_gnfs'
/usr/bin/ld: ./libynfs.a(nfs_poly.o): in function `do_msieve_polyselect':
/home/florian/Math/yafu/factor/nfs/nfs_poly.c:681: undefined reference to `msieve_obj_free'
/usr/bin/ld: ./libynfs.a(nfs_filemanip.o): in function `savefile_concat':
/home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:33: undefined reference to `savefile_open'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:42: undefined reference to `savefile_write_line'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:46: undefined reference to `savefile_flush'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:47: undefined reference to `savefile_close'
/usr/bin/ld: ./libynfs.a(nfs_filemanip.o): in function `check_existing_files':
/home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:135: undefined reference to `savefile_exists'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:354: undefined reference to `savefile_exists'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:437: undefined reference to `savefile_open'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:438: undefined reference to `savefile_read_line'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:439: undefined reference to `savefile_eof'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:457: undefined reference to `savefile_read_line'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:458: undefined reference to `savefile_eof'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:473: undefined reference to `savefile_close'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs_filemanip.c:441: undefined reference to `savefile_close'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `analyze_one_poly_xface':
/home/florian/Math/yafu/factor/nfs/snfs.c:2905: undefined reference to `msieve_obj_new'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/snfs.c:2910: undefined reference to `analyze_one_poly'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/snfs.c:2946: undefined reference to `msieve_obj_free'
/usr/bin/ld: ./libynfs.a(snfs.o): in function `approx_norms':
/home/florian/Math/yafu/factor/nfs/snfs.c:287: undefined reference to `eval_poly'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/snfs.c:290: undefined reference to `eval_poly'
/usr/bin/ld: ./libynfs.a(nfs.o): in function `nfs':
/home/florian/Math/yafu/factor/nfs/nfs.c:210: undefined reference to `msieve_obj_new'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:250: undefined reference to `factor_list_init'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:251: undefined reference to `factor_list_add'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:917: undefined reference to `msieve_obj_free'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:561: undefined reference to `nfs_find_factors'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:451: undefined reference to `msieve_obj_free'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:452: undefined reference to `msieve_obj_new'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:461: undefined reference to `nfs_solve_linear_system'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:510: undefined reference to `msieve_obj_free'
/usr/bin/ld: /home/florian/Math/yafu/factor/nfs/nfs.c:511: undefined reference to `msieve_obj_new'
/usr/bin/ld: ./libynfs.a(nfs_postproc.o): in function `do_msieve_filtering':
/home/florian/Math/yafu/factor/nfs/nfs_postproc.c:103: undefined reference to `nfs_filter_relations'
collect2: error: ld returned 1 exit status
make: *** [Makefile:408: yafu] Fehler 1[/CODE]libmsieve.a is there:
[CODE]~/Math/yafu$ ls ../msieve/libmsieve.a -l
-rw-rw-r-- 1 florian florian 1120358 Apr 20 16:54 ../msieve/libmsieve.a[/CODE]

paulunderwood 2021-05-01 05:13

When you see "undefined reference" you are not linking properly.

Without trying it myself, you should do something like:

[CODE]make NFS=1 USE_SSE41=1 USE_AVX=1 -llibmsieve[/CODE]

or

[CODE]make NFS=1 USE_SSE41=1 USE_AVX=1 -lmsieve[/CODE]

bur 2021-05-01 05:42

Unfortunately that still gives the exact same error.

paulunderwood 2021-05-01 06:04

[QUOTE=bur;577347]Unfortunately that still gives the exact same error.[/QUOTE]

Where is libmsieve.a relative to the yafu make directory?

try:

[code]make yafu NFS=1 USE_SSE41=1 USE_AVX=1 -l../msieve/libmsieve.a[/code]

LaurV 2021-05-01 06:54

[QUOTE=bur;577345][CODE]/home/florian/Math/[/CODE][/QUOTE]
[URL="https://en.wikipedia.org/wiki/Florian_Luca"]This[/URL] Florian?

bur 2021-05-01 11:33

No, most (all) of my posts here regarding mathmatics would probably be somewhat shameful for a "real" mathmatician. :D


[c]-l../msieve/libmsieve.a[/c] still results in the error.


The path should be correct:
[code]~/Math/yafu$ ls ../msieve/libmsieve.a -l
-rw-rw-r-- 1 florian florian 1120358 Apr 20 16:54 ../msieve/libmsieve.a[/code]

paulunderwood 2021-05-01 15:22

Note it should be "make yafu...." not just "make...".

bur 2021-05-02 15:37

I tried both, still that error. So the error comes from cc for some reason not having included libmsieve.a?

bsquared 2021-05-02 15:48

Do a 'make clean NFS=1 USE_AVX2=1' and then retry the make.

bur 2021-05-02 16:35

Still the same error.


This is caused by libmsieve.a ? Or can it also be due to something in relation to ysieve or ytools? The old sourceforge yafu build using that same msieve, so I'm wondering if it might be something else.

bsquared 2021-05-02 16:45

[QUOTE=bur;577456]Still the same error.


This is caused by libmsieve.a ? Or can it also be due to something in relation to ysieve or ytools? The old sourceforge yafu build using that same msieve, so I'm wondering if it might be something else.[/QUOTE]

No, those symbols should be in libmsieve, the linker just can't find the library to link them in. I don't know anything else to try. You just need to make sure that a path to the location where libmsieve.a exists is in the LIBS variable of the makefile. You could try an absolute path.

paulunderwood 2021-05-02 23:50

Please attach your yafu Makefile. Also what is the output of [C]ls -l ../msieve[/C] ?

bsquared 2021-05-03 03:16

[QUOTE=bsquared;577458]No, those symbols should be in libmsieve, the linker just can't find the library to link them in. I don't know anything else to try. You just need to make sure that a path to the location where libmsieve.a exists is in the LIBS variable of the makefile. You could try an absolute path.[/QUOTE]

Oh, and you also need a -lmsieve in there somewhere too.:blush:

LIBS += -L../msieve -lmsieve

bur 2021-05-03 17:23

Thank you.... !!! :D


That was it. Why does it seem to work for almost everyone without that but not for me? Or did I delete it at some point?

bsquared 2021-05-03 17:37

[QUOTE=bur;577548]Thank you.... !!! :D


That was it. Why does it seem to work for almost everyone without that but not for me? Or did I delete it at some point?[/QUOTE]

It was deleted back when I told you that you could simplify the ifeq ($(NFS),1) block back in post 54. you can see it there at the end of the original NFS block in that post. Just been overlooking it since then. :doh!:

EdH 2021-05-03 17:55

I have gotten around to starting a new "How I. . ." thread specifically for YAFU2. It's based on Makefile modification rather than command line massaging, and it's meant only as a starting point to getting it up and running. Sorry, it's a little late. Any comments are quite welcome.

bur 2021-05-03 18:13

As a general question, how often do you guys build a new version of yafu or cado? Should I just check the repository for the changelog?

BudgieJane 2021-05-04 23:10

Well, I've just got it to work, which is quite something for me!

I persuaded it to do
[CODE]nfs(29^165 - 23^165)[/CODE]
which has 240 decimal digits, and it only took a few hours to come up with
[CODE]***factors found***

P1 = 2
P1 = 3
P1 = 3
P1 = 7
P2 = 31
P2 = 31
P2 = 67
P2 = 97
P3 = 199
P3 = 331
P4 = 2441
P4 = 3301
P37 = 3126480058316999071399277955199677901
C125 = 12724988150963378912700523668030562454652746526621625001448059255431251645943099394682519998040029913891319413189363203274486
P25 = 5021659044902186258192281
P18 = 102397541093560351
P39 = 965650242131801601223534344035881987891

ans = 0[/CODE]
which I am quite satisfied with as I already had the factors for the C125 cofactor.

BudgieJane 2021-05-05 12:46

Things missing in output from Version 2.0
 
Following on from yesterday's post, I have now started using yafu2.0 in my application. What gets run is the following (example):
[CODE]..\..\Maths\yafu\Versions\yafu-2.0\yafu-x64 factor(1093398016684859039437357097655002878473578346491832162155479546307786424669365857546034634142930096044072838434811201) -forceDLP -v -v -v -noecm -silent -R -logfile io\log12.txt -of io\out12.txt[/CODE]

The first thing I noticed is the version number and the host name do not appear in the log file, whereas they did in previous versions. These may be important for figuring out which version was used when comparing runs between future versions.

The second thing I noticed is that whereas the -logfile was created, the -of (output file) was not. This is the way I pass the output from yafu to my application, as it is much easier to parse this than to try to parse the logfile.

LaurV 2021-05-05 12:51

[QUOTE=BudgieJane;577700]I noticed is the version number does not appear in the log file, whereas it did in previous versions. This may be important for figuring out which version was used when comparing runs between future versions.
[/QUOTE]
+1. Needed. We did such comparisons many times in the past.

bsquared 2021-05-05 13:28

[QUOTE=LaurV;577701]+1. Needed. We did such comparisons many times in the past.[/QUOTE]

I guess I didn't realize that was useful to folks, sorry about that. I removed it, well, actually because the code reorg made it harder to implement, but I told myself it was because it wasn't useful. I will look into putting it back.

As for the -of output, can confirm that it isn't working. That was not tested at all and apparently I broke it somehow. I'll get it fixed.

Also, Jane, this one had a small-ish factor (found by ecm):

[CODE]
found factor 24616664227663950740856773434561 in stage 2 in thread 9, vec position 4, with sigma = 3667020861

found factor 24616664227663950740856773434561 in stage 2 in thread 35, vec position 7, with sigma = 544625459

found factor 24616664227663950740856773434561 in stage 2 in thread 40, vec position 5, with sigma = 3261427245
ecm: 768/912 curves on C118 @ B1=1000000, B2=100*B1
ecm: process took 21.6734 seconds.

ecm: found prp32 factor = 24616664227663950740856773434561

ecm: found prp86 (co)factor = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
Total factoring time = 40.2258 seconds


***factors found***

PRP32 = 24616664227663950740856773434561
PRP86 = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
[/CODE]

BudgieJane 2021-05-05 14:39

I can't remember why I added the -noecm keyword in there, although I may have thought the small amount of ecm processing slowed the average factoring time down a bit. Obviously it didn't. I shall remove it.

BTW the file docfile.txt claims to be for Version 1.35-beta. Should this be changed to 2.0?

[QUOTE=bsquared;577705]I guess I didn't realize that was useful to folks, sorry about that. I removed it, well, actually because the code reorg made it harder to implement, but I told myself it was because it wasn't useful. I will look into putting it back.[/QUOTE]

It was appearing on every line of the logfile in the old versions. In my opinion it is only needed in there once, if that makes things any easier, although you might want to get LaurV's opinion on that, too.

[QUOTE=bsquared;577705]As for the -of output, can confirm that it isn't working. That was not tested at all and apparently I broke it somehow. I'll get it fixed.

Also, Jane, this one had a small-ish factor (found by ecm):

[CODE]
found factor 24616664227663950740856773434561 in stage 2 in thread 9, vec position 4, with sigma = 3667020861

found factor 24616664227663950740856773434561 in stage 2 in thread 35, vec position 7, with sigma = 544625459

found factor 24616664227663950740856773434561 in stage 2 in thread 40, vec position 5, with sigma = 3261427245
ecm: 768/912 curves on C118 @ B1=1000000, B2=100*B1
ecm: process took 21.6734 seconds.

ecm: found prp32 factor = 24616664227663950740856773434561

ecm: found prp86 (co)factor = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
Total factoring time = 40.2258 seconds


***factors found***

PRP32 = 24616664227663950740856773434561
PRP86 = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
[/CODE][/QUOTE]

I got the same answer (eventually!):
[CODE]05/05/21 13:18:03, prp86 = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
05/05/21 13:18:03, prp32 = 24616664227663950740856773434561
05/05/21 13:18:03, NFS elapsed time = 8640.5802 seconds.[/CODE]

There is one thing I have forgotten to say on all these emails, and that is THANK YOU for all the work you have put into updating yafu so that retired old codgers like me can keep my brain active in my dotage.

bsquared 2021-05-05 15:06

[QUOTE=BudgieJane;577711]I can't remember why I added the -noecm keyword in there, although I may have thought the small amount of ecm processing slowed the average factoring time down a bit. Obviously it didn't. I shall remove it.

[/QUOTE]

It depends on the inputs, of course. If you are attempting these inputs for the first time then some ecm will help a lot. If they have already been ecm'ed, by you or someone else, then more ecm might not help much. -plan custom and -pretest_ratio X can help fine tune how much time you spend on ecm.

[QUOTE=BudgieJane;577711]

BTW the file docfile.txt claims to be for Version 1.35-beta. Should this be changed to 2.0?

[/QUOTE]

Yes. Every time I contemplate updating that file I suddenly find myself doing something else. Maybe this isn't a coincidence (documentation is a chore).

[QUOTE=BudgieJane;577711]
It was appearing on every line of the logfile in the old versions. In my opinion it is only needed in there once, if that makes things any easier, although you might want to get LaurV's opinion on that, too.

[/QUOTE]

If you use session.log (active by default), then the version and build info appears in there. Date stamps can be correlated to factor.log output, should that be needed. Is that enough? Feedback welcome.

[CODE]
05/05/21 09:31:52, =====================================
05/05/21 09:31:52, System/Build Info:
05/05/21 09:31:52, YAFU Version 2.0
05/05/21 09:31:52, Built with Intel Compiler 1910
05/05/21 09:31:52, Using GMP-ECM 7.0.4, Powered by GMP 6.2.0
05/05/21 09:31:52, detected Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz
detected L1 = 32768 bytes, L2 = 25952256 bytes, CL = 64 bytes
05/05/21 09:31:52, using 1 random witness for Rabin-Miller PRP checks
05/05/21 09:31:52, Cached 664579 primes: max prime is 9999991

05/05/21 09:31:52, Random seed: 11617470479886605489
05/05/21 09:31:52, Processing: factor(rsa(300))
05/05/21 09:32:19, Result : 1
[/CODE]

[QUOTE=BudgieJane;577711]
I got the same answer (eventually!):
[CODE]05/05/21 13:18:03, prp86 = 44416985444197989346245849525036029769673491288448206702392870361399028860459766362241
05/05/21 13:18:03, prp32 = 24616664227663950740856773434561
05/05/21 13:18:03, NFS elapsed time = 8640.5802 seconds.[/CODE]
[/QUOTE]

I can occasionally run on some really nice hardware so don't feel bad... 40 sec is not typical, even if some ecm had been done (I was running 768 curves in parallel)

[QUOTE=BudgieJane;577711]
There is one thing I have forgotten to say on all these emails, and that is THANK YOU for all the work you have put into updating yafu so that retired old codgers like me can keep my brain active in my dotage.[/QUOTE]

You're welcome, glad it is finding some use and thank you for all the feedback.

bsquared 2021-05-05 15:55

New revision (513)

+ added a bunch of protection against trying to close a NULL file
+ vecPPM1: corrected METHOD strings in gmp-ecm resume files (should be P+1 and P-1)
+ vecPPM1: only output active vector lanes to resume file
+ fixed op/of/ou file output
+ update yafu-x64.exe (version 2.01)

BudgieJane 2021-05-05 17:19

[QUOTE=bsquared;577714]If you use session.log (active by default), then the version and build info appears in there. Date stamps can be correlated to factor.log output, should that be needed. Is that enough? Feedback welcome.

[CODE]
05/05/21 09:31:52, =====================================
05/05/21 09:31:52, System/Build Info:
05/05/21 09:31:52, YAFU Version 2.0
05/05/21 09:31:52, Built with Intel Compiler 1910
05/05/21 09:31:52, Using GMP-ECM 7.0.4, Powered by GMP 6.2.0
05/05/21 09:31:52, detected Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz
detected L1 = 32768 bytes, L2 = 25952256 bytes, CL = 64 bytes
05/05/21 09:31:52, using 1 random witness for Rabin-Miller PRP checks
05/05/21 09:31:52, Cached 664579 primes: max prime is 9999991

05/05/21 09:31:52, Random seed: 11617470479886605489
05/05/21 09:31:52, Processing: factor(rsa(300))
05/05/21 09:32:19, Result : 1
[/CODE][/QUOTE]

This doesn't work for me; here is an extract from my file where I changed over to the new version.
[CODE]05/04/21 12:08:34 v1.34.5 @ JANELT3, System/Build Info:
Using GMP-ECM 6.3, Powered by GMP 5.1.1
cached 78498 primes. pmax = 999983
detected Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
detected L1 = 32768 bytes, L2 = 6291456 bytes, CL = 64 bytes
measured cpu frequency ~= 2475.649860
using 20 random witnesses for Rabin-Miller PRP checks

05/04/21 12:08:34 v1.34.5 @ JANELT3, New random seeds: 1781426379, 516928000

05/04/21 12:08:34 v1.34.5 @ JANELT3, Processing expression: factor(1659483557006307984471893306873906022613514850665507820966965932477080093622434599791524757051092471754318679916001651)

05/04/21 12:09:35 v1.34.5 @ JANELT3, System/Build Info:
Using GMP-ECM 6.3, Powered by GMP 5.1.1
cached 78498 primes. pmax = 999983
detected Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
detected L1 = 32768 bytes, L2 = 6291456 bytes, CL = 64 bytes
measured cpu frequency ~= 2479.754400
using 20 random witnesses for Rabin-Miller PRP checks

05/04/21 12:09:35 v1.34.5 @ JANELT3, New random seeds: 3193960914, 2134336360

05/04/21 12:09:35 v1.34.5 @ JANELT3, Processing expression: factor(52602411030795521624144403777822648860941742757032930290383906072720236420065195931310579378461645290846309381)

05/04/21 19:26:51, =====================================
05/04/21 19:26:51, System/Build Info:
05/04/21 19:26:51, detected Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
detected L1 = 32768 bytes, L2 = 6291456 bytes, CL = 64 bytes
05/04/21 19:26:51, using 1 random witness for Rabin-Miller PRP checks
05/04/21 19:26:51, Cached 664579 primes: max prime is 9999991

05/04/21 19:26:51, Random seed: 6005946639089262856
05/04/21 19:26:51, Processing: factor(1552430857998742529411783620991507130911583093310701152041889198802805355311288815262351476779178174815899176986625121)
05/04/21 19:26:52, Result : 1552430857998742529411783620991507130911583093310701152041889198802805355311288815262351476779178174815899176986625121
[/CODE]

Also
[QUOTE]+ fixed op/of/ou file output
+ update yafu-x64.exe (version 2.01)[/QUOTE]

Wow! That was quick. Thank you.

bsquared 2021-05-05 17:28

[QUOTE=BudgieJane;577727]This doesn't work for me; here is an extract from my file where I changed over to the new version.
[/QUOTE]

Is that true even for the new .exe I just posted to github? It's possible the previous .exe didn't log that info, true, but this one should.

BudgieJane 2021-05-05 17:50

[QUOTE=bsquared;577729]Is that true even for the new .exe I just posted to github? It's possible the previous .exe didn't log that info, true, but this one should.[/QUOTE]

I'll have to come back to you on that, as I've got the previous version running at the moment.

BudgieJane 2021-05-05 19:03

It won't run. What have I done wrong? I tried to run it in my application, with no luck, so next I tried to run it in its own directory. It starts up and gets as far as Welcome to YAFU (which tells me I've got the right executable), then it exits with no messages at all. I would expect something from my last attempt, as I'm not directing the log or the output to files.

Here's what shows on my Command Prompt window, with subsequent attempts passing fewer parameters to the program:

[CODE]JANELT3 C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.0 > yafu-x64 factor(209148044825831719227566657932036925083843946561624836465070487458386685769672561025528073586991964435529919531) -forceDLP -v -v -v -silent -R -logfile io\log15.txt -of io\out15.txt

JANELT3 C:\Users\Jane\Documents\Maths\yafu\Versions\yafu-2.0 > yafu-x64 factor(209148044825831719227566657932036925083843946561624836465070487458386685769672561025528073586991964435529919531) -forceDLP -v -R -logfile io\log15.txt -of io\out15.txt
Applying tune_info entry for WIN64 - Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz


YAFU Version 2.01
Built with Microsoft Visual Studio 1922
Using GMP-ECM 7.0.4, Powered by MPIR 3.0.0
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.0 > yafu-x64 -logfile io\log01.txt -of io\out01.txt


YAFU Version 2.01
Built with Microsoft Visual Studio 1922
Using GMP-ECM 7.0.4, Powered by MPIR 3.0.0
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.0 > yafu-x64


YAFU Version 2.01
Built with Microsoft Visual Studio 1922
Using GMP-ECM 7.0.4, Powered by MPIR 3.0.0
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.0 >[/CODE]

I forgot to add session.log has been set up, but contains 0 bytes.

bsquared 2021-05-05 20:00

I don't know... hmm. Do you have session.log open somewhere? If so close it... maybe that would happen if session.log exists but isn't writable. I don't know that's my best guess so far.

BudgieJane 2021-05-05 20:39

[QUOTE=bsquared;577753]I don't know... hmm. Do you have session.log open somewhere? If so close it... maybe that would happen if session.log exists but isn't writable. I don't know that's my best guess so far.[/QUOTE]

I went through all that, no luck.

So I thought I'd download it again, but this time instead of just downloading the executable, I downloaded the whole zip file, and set it up in its own directory among the versions. Again no luck.

When I put the version 2.01 executable into the 2.0 directory, I didn't overwrite the 2.0 version. So I've now renamed the files back again and run the 2.0 exe. I factored 26^65-19^65 successfully (no point on doing really big numbers just for testing).

I noticed that the version 2.0 executable is 2,320,384 bytes, whereas 2.01 is 2,087,424 bytes. Is that size difference reasonable? Would you expect the size of the executable to decrease? [Please forgive me for teaching my granny to suck eggs!]

bsquared 2021-05-06 13:01

I rebuilt everything and re-uploaded yafu-x64.exe. Everything has worked for me on three different intel windows machines... let me know what you find. [STRIKE]And maybe give me some more details on your processor if it doesn't work.[/STRIKE]

edit, nevermind, I see you posted those details already.

BudgieJane 2021-05-06 14:17

First, the good news: it no longer crashes.
Second, the good news: the -of parameter works.
Third: the version number appears in the session.log file.

[QUOTE=bsquared;577799]I rebuilt everything and re-uploaded yafu-x64.exe. Everything has worked for me on three different intel windows machines... let me know what you find. [STRIKE]And maybe give me some more details on your processor if it doesn't work.[/STRIKE]

edit, nevermind, I see you posted those details already.[/QUOTE]

Feedback: the new yafu-x64.exe is 2,318,848 bytes as opposed to the 2,007,424 bytes it was yesterday, which suggests that somehow or other something was missed in the earlier build, and your rebuild has fixed it.

And finally, the good news: I am happy with this. Thank you for your help.


All times are UTC. The time now is 14:17.

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