mersenneforum.org

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

jasonp 2011-10-28 23:17

[QUOTE=bsquared;276180]You can also play with TARGET_DENSITY, right?
[/QUOTE]
Yes, there's now a '-D' flag you can use, though you had better have lots of excess relations before cranking up the target density. Ideally the code should just figure out what a good target density should be, but I don't know how.

LaurV 2011-11-05 09:42

From time to time, very seldom, I get this in yafu/msieve:

"Special q XXXXXXXX does not divide"

Then the thread waits patient for the other threads to finish sieving of the current bunch. Also, when all special q's "divide", sometimes one core is faster then the other, and finishes sieving of the current bunch much sooner (especially when I use the computer for other tasks, that take, say, one full core, the "unlucky" tread of yafu/msieve is penalized and the sieving takes much longer).

My problem is that in this time (more exactly for "does not divide" case, for example on one core of two sieving) half of the CPU is empty and wasted. Right now, I was wondering why my fan is so quiet, and looked into task manager, and found out that yafu is taking only 50%, when it was supposed to take 100%. Rest of 50% was "system idle". Looked to the nfs job that yafu was doing (launched with "-threads 2"), there is only one core sieving (the other one got "does not divide" message and is waiting). I launched few ECM curves on P95 (single worker) to compensate.

Can something be done to make the siever to select next specialq and go on in that case? Or if one core finished faster, to re-split the remaining iterations of the other core? (it should cut the remaining time in half!).

jrk 2011-11-05 19:16

[QUOTE=LaurV;277236]From time to time, very seldom, I get this in yafu/msieve:

"Special q XXXXXXXX does not divide"[/QUOTE]
The "Special q does not divide" error comes from ggnfs lasieve4, not from yafu or msieve. After encountering the error, lasieve4 aborts itself. Can you run lasieve4 again on that special q and see if the error is repeated? Or, post the poly file and special q here so we can test it. If the error isn't repeatable, then there may be something wrong with your memory.

bsquared 2011-11-05 21:31

[QUOTE=LaurV;277236]

Can something be done to make the siever to select next specialq and go on in that case? [/QUOTE]

The short answer is yes. The nfs lattice siever control code in yafu uses the old spawn and join threading architecture that has been replaced by a more efficient threadpool architecture in other areas (nfs poly selection and siqs). So I could move the lattice siever stuff to the new threading architecture and that would put a band-aid on the problem. But the real fix is to understand why you are getting the "special-q does not divide" error from ggnfs. That's something I've never seen before personally, but then again I typically run it on workstations with registered ECC memory.

schickel 2011-11-06 02:59

[QUOTE=jrk;277285]The "Special q does not divide" error comes from ggnfs lasieve4, not from yafu or msieve. After encountering the error, lasieve4 aborts itself. Can you run lasieve4 again on that special q and see if the error is repeated? Or, post the poly file and special q here so we can test it. If the error isn't repeatable, then there may be something wrong with your memory.[/QUOTE]

[QUOTE=bsquared;277297]The short answer is yes. The nfs lattice siever control code in yafu uses the old spawn and join threading architecture that has been replaced by a more efficient threadpool architecture in other areas (nfs poly selection and siqs). So I could move the lattice siever stuff to the new threading architecture and that would put a band-aid on the problem. But the real fix is to understand why you are getting the "special-q does not divide" error from ggnfs. That's something I've never seen before personally, but then again I typically run it on workstations with registered ECC memory.[/QUOTE]I get the "does not divide" message occasionally. When it happens, it is because I've stopped a job and restarted it. (I've got a 6-core that I can only run @ 100% overnight, so I stop 2 or 3 cores in the morning.) When I restart the jobs, sometimes they will abort with the divide error. I just bump the starting special-q down a little and it restarts. (Sometimes, though, I just restart the range if the job isn't too far into it....)

I can send you the poly and special-q next time it happens, if you like....

pinhodecarlos 2011-11-10 15:41

I need confirmation on how to run a batch of snfs tasks using yafu (sieving +post-processing).
For a list of "snfs.job" files like:

snfs1.job
snfs2.job
snfs3.job

and for "in.bat" file content as:

nfs -ns -nc -threads 4 -job snfs1.job -r -o snsfs1_output.dat -logfile snfs1.log
nfs -ns -nc -threads 4 -job snfs2.job -r -o snsfs2_output.dat -logfile snfs2.log
nfs -ns -nc -threads 4 -job snfs3.job -r -o snsfs3_output.dat -logfile snfs3.log

Will yafu post-process them all one by one by running "yafu.exe -batchfile in.bat" command?

bsquared 2011-11-10 15:42

[QUOTE=pinhodecarlos;277799]I need confirmation on how to run a batch of snfs (only performing post-processing step) tasks using yafu.
For a list of "snfs.job" files like:

snfs1.job
snfs2.job
snfs3.job

and for "in.bat" file content as:

nfs -nc -threads 4 -job snfs1.job -r -o snsfs1_output.dat -logfile snfs1.log
nfs -nc -threads 4 -job snfs2.job -r -o snsfs2_output.dat -logfile snfs2.log
nfs -nc -threads 4 -job snfs3.job -r -o snsfs3_output.dat -logfile snfs3.log

Will yafu post-process them all one by one by running "yafu.exe -batchfile in.bat" command?[/QUOTE]

No, because the batchfile option won't process additional options. It was intended for running the same command (and same options) on multiple inputs.

It would be straighforward to make a normal batch file to do what you want (either in windows or linux), but it would be more work as you'd have to copy in each individual number you want to process.

For example, create a file called snfs.bat (or whatever) and put in it lines like this:
[CODE]
yafu-32k-x64.exe "nfs(<number 1>)" -nc -R -threads 4 -job snfs1.job -r -o snsfs1_output.dat -logfile snfs1.log

yafu-32k-x64.exe "nfs(<number 2>)" -nc -R -threads 4 -job snfs2.job -r -o snsfs2_output.dat -logfile snfs2.log
[/CODE]

and so forth. Then just run snfs.bat from a windows command line.

pinhodecarlos 2011-11-10 15:49

Your batch file won't work under windows because it will run all lines at the same time.

bsquared 2011-11-10 15:59

[QUOTE=pinhodecarlos;277806]Your batch file won't work under windows because it will run all lines at the same time.[/QUOTE]

That's not my experience with how windows batch files work... they run things one line at a time for me.

test.bat:
[CODE].\yafu-x64.exe "siqs(rsa(200))" -v -threads 1
.\yafu-x64.exe "siqs(rsa(220))" -v -threads 2
.\yafu-x64.exe "siqs(rsa(240))" -threads 4[/CODE]

LaurV 2011-11-11 04:16

[QUOTE=schickel;277322]I get the "does not divide" message occasionally. When it happens, it is because I've stopped a job and restarted it.[/QUOTE]

That is for sure my case too, but did not made the connection until you posted. It seems that the error appears only after a restart, sometimes not immediately, but it is connected with the restart, for sure. Re-restarting (with graceful shutdown) helps always, without the need to bump the spq down. He is just "skipping" a small range, I assume, since no harm.

lorgix 2011-11-15 20:05

I still don't know how flags work. I can't restart a nfs-job, because I don't know how to supply the "-R".


All times are UTC. The time now is 22:59.

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