mersenneforum.org

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

bsquared 2021-04-08 20:00

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

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

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

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

Happy factoring!

bsquared 2021-04-08 20:10

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

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

EdH 2021-04-08 20:55

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

bsquared 2021-04-08 20:57

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

charybdis 2021-04-09 01:58

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

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

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

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

siqs() runs fine on this number.

Kvasir 2021-04-09 08:18

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

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

mersenneNoob 2021-04-09 08:43

553351296091338013184869649447 is a factor of the 60 digit number

charybdis 2021-04-09 12:41

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

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

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

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

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

bsquared 2021-04-09 12:55

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

[/QUOTE]

Perfect, yes.

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

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

charybdis 2021-04-09 19:17

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

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

bur 2021-04-10 04:47

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

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


checking for NFS sievers... done.

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


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

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






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


All times are UTC. The time now is 00:13.

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