![]() |
Yes, there is the third option of spawning external jobs via system calls in order to implement parallel ecm. Without studying it in any detail, I'm fairly sure that's what the .pl script does.
I haven't designed that method into yafu, no. So currently there is no way to point it to an external ecm. I can see how that might be desirable, and doing so would also allow for multi-threaded ecm, so it sounds like a worthwhile thing to implement. GGNFS, on the other hand, does rely on external binaries. You point to them using the a line like so in the .ini file: ggnfs_dir=<path> Once I get around to implementing an external ecm option, you would need a similar line to point to the ecm executable. |
[QUOTE=bsquared;264581]Thanks!
[URL="http://www.sendspace.com/file/lzaaor"]Here [/URL]is the updated source code, and updated win32 and win64 binaries. Use command line option -y to use yafu's factor() for everything. A yafu.ini file can control the number of threads (and other stuff), like normal. I haven't updated the version number or "whatsnew.txt" file, as it sounds like you're going to make some additional modifications (at least, I hope you do - sounds neat). Also, I think mklasson should be made aware of these developements at some point. I can shoot him an email...[/QUOTE] An issue with this version: When I start aliqueit -y -e <sequence>, yafu does full ECM pretesting anyway, although the aliqueit -e flag is supposed to skip ECM for the first cofactor it encounters. (this is useful if one knows that the first cofactor already had (almost) full ECM.) |
[QUOTE=Andi47;264707]An issue with this version: When I start aliqueit -y -e <sequence>, yafu does full ECM pretesting anyway, although the aliqueit -e flag is supposed to skip ECM for the first cofactor it encounters. (this is useful if one knows that the first cofactor already had (almost) full ECM.)[/QUOTE]
I forgot about the interaction with other flags... I'll try to get that fixed soon. |
1 Attachment(s)
Attached is an updated version of aliqueit. It includes:
- bsquared's new "-y" command line option which uses YAFU's factor() for everything after trial division and rho - mklasson's latest changes to allow use of ecm.py, though of course this is mutually exclusive with -y - my new "-r <add_digits>" option which, when used with max digit and/or cofactor limits (-d/-c) will ignore the limits if the sequence is decreasing or has the downdriver or a few other promising patterns, and will increase the digit/cofactor limits by <add_digits> if the sequence does not have a driver. I made a few tweaks to the list of "promising patterns" which will cause -r to ignore limits while porting the changes, and the new list doesn't have extensive testing. So let me know if you hit cases where it keeps increasing far beyond where you wanted it to stop and I can re-tweak the list. Unfortunately the zip file has source only -- I couldn't get the Windows build working (ok, I only tried a little) and I had to do some binary-patching hacks to get the linux version, so I can't build binaries useful to anyone else. |
[QUOTE=bchaffin;264871]Attached is an updated version of aliqueit. It includes:
- bsquared's new "-y" command line option which uses YAFU's factor() for everything after trial division and rho - mklasson's latest changes to allow use of ecm.py, though of course this is mutually exclusive with -y - my new "-r <add_digits>" option which, when used with max digit and/or cofactor limits (-d/-c) will ignore the limits if the sequence is decreasing or has the downdriver or a few other promising patterns, and will increase the digit/cofactor limits by <add_digits> if the sequence does not have a driver. I made a few tweaks to the list of "promising patterns" which will cause -r to ignore limits while porting the changes, and the new list doesn't have extensive testing. So let me know if you hit cases where it keeps increasing far beyond where you wanted it to stop and I can re-tweak the list. Unfortunately the zip file has source only -- I couldn't get the Windows build working (ok, I only tried a little) and I had to do some binary-patching hacks to get the linux version, so I can't build binaries useful to anyone else.[/QUOTE] Super. It also looks like you fixed things so that yafu honors the -e switch. [URL="http://www.sendspace.com/file/2xsay0"]Here [/URL]are some new windows binaries and a linux makefile. |
[QUOTE=bsquared;264876]Super. It also looks like you fixed things so that yafu honors the -e switch.
[URL="http://www.sendspace.com/file/2xsay0"]Here [/URL]are some new windows binaries and a linux makefile.[/QUOTE] Great, thanks for compiling. Yes, I forgot to mention I also made -y compatible with -e and -c. I did some basic testing and it seemed to work, but let me know if you see anything unexpected. |
Nice!
do I understand correctly that ecm.py does multithreaded ECM? If jes, than a switch would be desired which uses ecm.py for ecm pretesting and yafu for gnfs. Edit: Just tested -y -e, it indeed works. :tu: |
[QUOTE=bchaffin;264871]Attached is an updated version of aliqueit. It includes:
- mklasson's latest changes to allow use of ecm.py, though of course this is mutually exclusive with -y [/QUOTE] Great! However, I don't actually see any of those changes included in the code or .ini. They're only mentioned in whatsnew.txt afaict. :max: |
-y -e doesn't work properly when an NFS job is interrupted because -R is not added to the command sent to yafu.
Also, aliqueit doesn't log the factors already found for a number, so if aliqueit is stopped during a term which has a factor large enough not to be found by yafu's rho but which was found by ecm, yafu will not take account of the factor and will instead factor a larger number which still has that factor in it. For example, if c110 = 2^2 * p20 * c90 is interrupted during the sieving of the c90, yafu will instead start factoring p20 * c90. A consequence is that the savefile is wiped. |
[QUOTE=Andi47;264879]Nice!
do I understand correctly that ecm.py does multithreaded ECM? If jes, than a switch would be desired which uses ecm.py for ecm pretesting and yafu for gnfs. Edit: Just tested -y -e, it indeed works. :tu:[/QUOTE] yafu will now do multi-threaded ecm as well. See [URL="http://www.mersenneforum.org/showpost.php?p=267073&postcount=768"]here[/URL]. |
[QUOTE=10metreh;265479]-y -e doesn't work properly when an NFS job is interrupted because -R is not added to the command sent to yafu.
Also, aliqueit doesn't log the factors already found for a number, so if aliqueit is stopped during a term which has a factor large enough not to be found by yafu's rho but which was found by ecm, yafu will not take account of the factor and will instead factor a larger number which still has that factor in it. For example, if c110 = 2^2 * p20 * c90 is interrupted during the sieving of the c90, yafu will instead start factoring p20 * c90. A consequence is that the savefile is wiped.[/QUOTE] You can add an R=1 line to the yafu.ini file, when necessary, and that should take care of the first issue. Not sure if there is an automated fix for the second, but if you've interrupted the job anyway then you can manually factor the c90 (or whatever) with yafu and then continue, no? |
| All times are UTC. The time now is 22:26. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.