![]() |
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! |
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] |
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).
|
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.
|
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. |
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. |
553351296091338013184869649447 is a factor of the 60 digit number
|
[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. |
[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. |
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] |
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 |
[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. |
Ok, thanks. I didn't get an error message, so I thought it was different.
|
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. |
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.
|
Looks good now. Thank you!
|
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=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. |
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. |
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=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. |
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? |
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] |
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.
|
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.
|
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] |
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" |
[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] |
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. |
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. |
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. |
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=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. |
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. |
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. |
[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]? |
[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. |
[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. |
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=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. |
[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. |
[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. |
[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. |
[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. |
[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? |
[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? |
[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.
|
[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! |
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.
|
[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: |
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=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. |
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.
|
[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 |
Ok, thank, I'll try that.
|
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. |
Typo.
LIB += -L../msieve/ should be LIBS += -L../msieve/ |
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=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. |
[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. |
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] |
[QUOTE=bsquared;577144]Typo.
LIB += -L../msieve/ should be LIBS += -L../msieve/[/QUOTE]Thanks, unfortunately I still get the same error. |
[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 |
Yes, I forgot to mention, I use this [c]make NFS=1 USE_SSE41=1 USE_AVX2=1[/c]
|
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=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] |
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] |
Unfortunately that still gives the exact same error.
|
[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] |
[QUOTE=bur;577345][CODE]/home/florian/Math/[/CODE][/QUOTE]
[URL="https://en.wikipedia.org/wiki/Florian_Luca"]This[/URL] Florian? |
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] |
Note it should be "make yafu...." not just "make...".
|
I tried both, still that error. So the error comes from cc for some reason not having included libmsieve.a?
|
Do a 'make clean NFS=1 USE_AVX2=1' and then retry the make.
|
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=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. |
Please attach your yafu Makefile. Also what is the output of [C]ls -l ../msieve[/C] ?
|
[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 |
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=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!: |
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.
|
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?
|
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. |
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. |
[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. |
[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] |
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. |
[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. |
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) |
[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. |
[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. |
[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. |
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. |
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=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!] |
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. |
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 02:23. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.