![]() |
|
|
#474 | |
|
Sep 2010
Scandinavia
3·5·41 Posts |
Quote:
I know ECM is probabilistic. But I don't expect consistency (which in this case would be pretty much inconsistency) from something that is erroneous. |
|
|
|
|
|
|
#475 | |
|
Sep 2010
Scandinavia
3×5×41 Posts |
Quote:
--- What's the rationale behind the new behavior of the factor()-command? It appears to me that to few curves are run. Also, and I haven't done the math here, could it possible be better to run pm1 without stg2 the first time? Seeing as it may be run more than once again if no factor is found. Is there a way for me to tailor the behavior of the command? Why is there still a 4e9 limit in ECM? And a more general question; Why do some implementations of ECM raise the bounds in so few and big steps? Is it somehow costly to raise the bounds more often, running fewer curves at each level? I don't get it. Thanks a lot for your continuing work improving YAFU! |
|
|
|
|
|
|
#476 | |||
|
"Ben"
Feb 2007
2×3×587 Posts |
Good questions.
Quote:
The optimal balance of time is in reality a complex question... but reasonable approximations of optimal are much simpler. Right now, factor() targets spending 1/4 of the time QS is estimated to take on pretesting. The improvement I hinted at is a new tuning function which will hopefully provide better estimates of how long QS (and NFS) is expected to take for a given input. The crossover between QS and NFS will also be computed. Quote:
As for no stg2 in pm1... its hard to say. Yes, sometimes pm1 is run again with higher bounds, and either restarting from a saved B1 checkpoint or not doing stg2 the first time would be a savings. But on the other hand sometimes factors are found in stg2 the first time around, which would prevent all subsequent work from needing to be run, which would be a savings the other way. And on a third hand, either of these two mechanisms seem like too much work to implement for the potential savings. We're talking about saving 10% or so of a single pm1 curve at higher bounds... when potentially hundreds of much longer ecm curves would be run anyway. I'm not motivated enough to do anything about it :) Right now it's not very flexible. Soon there will be a few ways to tailor it: you'll be able to set the target ECM/QS or ECM/NFS ratios in the yafu.ini file or from the command line. If you like to run more ecm curves, for example, you'd be able to set the target ratio from 0.25 (where it is fixed at now) to 0.3 or 0.35. Because when I first wrote the command line parser, I didn't have an easy way to parse integers greater than 32 bits. Is this really an issue for you in everyday use? (By the way, that limit should only apply to B1) Quote:
You're welcome! Last fiddled with by bsquared on 2010-12-30 at 21:40 |
|||
|
|
|
|
|
#477 | |
|
Jun 2003
5,087 Posts |
Quote:
The other thing is, you can have a more aggressive ramp up of ecm levels without compromising the efficiency. I use 70% of the recommended # of curves(where probability is 50-50 that there are no factors of the target size) before switching to the next higher level. The final level can have the full set of recommended curves. |
|
|
|
|
|
|
#478 |
|
"Ben"
Feb 2007
352210 Posts |
I just updated the windows binaries on sourceforge. These contain a fix for the bug in the factorial routine (thanks lorgix!).
|
|
|
|
|
|
#479 |
|
Mar 2010
3×137 Posts |
Ok, seems I have trouble with nfs()
Used Mathematica to generate a composite number 65379518567343825609926638717478788763550229961891453899594186887691561214942200786222079232433049, which has 2 divisors. Here's the batchfile calling Yafu: Code:
yafu-32k-x64.exe -threads 4 -v -rhomax 800000 -fmtmax 299396627 -ggnfs_dir "C:\Program Files (x86)\msieve\ggnfs" <factorme.txt I'm using latest sourceforge binaries. http://img6.imageshack.us/img6/2197/yafu.png Any light ? |
|
|
|
|
|
#480 | |||||||
|
Sep 2010
Scandinavia
3·5·41 Posts |
Quote:
Quote:
Quote:
Allowing some manual, user tuning the way you're planning is probably the best. I think few people use YAFU to factor random integers... Quote:
This tuning thing sounds very interesting! Quote:
Everything you say makes sense. But I think it would be interesting to try ... > pm1 stg1 > pp1, some ECM & other stuff > pm1 stg1 extended (from save file pref. obv.) +stg2 > ... But, even if my intuition is right the gains would be small so... Well you said it. Quote:
If I enter a big enough number into factor() it will eventually run ECM with B1=10M, B2=1B and then B1=100M, B2=4B after stating that primes above 4e9 aren't supported in ECM. Hardly a big problem. I occasionally use ecm() to run curves with B1=20M, B2=4B. Quote:
I understand that people stick to GMP-ECM-standard for reasons of simplicity. But unless I'm missing something here (and that may very well be the case), there are gains to be made. This really confuses me, cause this is all about efficiency. But I don't hear people questioning this convention. Alpern's app even skips bounds (don't get me wrong; I love that nifty app). (Btw, YAFU abandons the standard after B1=1M, and doesn't comply at all when B2 is considered. Again, not a problem.) Another thing; I often run more than one instance of YAFU from one directory. Could it be arranged so that (automatically) the second instance of QS doesn't fail because of the data file from the first? Also, would it be troublesome to make a command that runs like factor() but uses only ECM? It could use the standard values and/or allow the user to set bounds and number of curves. I really like the factor()-command, but I think a command like that would be appreciated by many as well. For situations where you know that the number you are entering lack small and/or smooth factors. axn almost asked for it a few posts up. Even though I don't quite agree with axn about factor(). But I don't think he would kick out rho, pp1 & pm1 from a 'general purpose'-factoring-command. I think what axn is talking about is what I described above; when you know there are no small factors. Correct me if I'm wrong. |
|||||||
|
|
|
|
|
#481 |
|
Tribal Bullet
Oct 2004
3·1,181 Posts |
Rho is there because it's very fast when you want 6-8 digit factors, faster than any of the other methods. One P+-1 curve is also much faster than one ECM curve, so if you're budgeting time in units of ECM curves, then P+-1 can be run with much larger B1 in the same time one ECM curve needs (the conventional wisdom uses a P-1 B1 of 10x the ECM B1 and a P+1 B1 of 5x the ECM B1). So for the same cost as an ECM curve you have a much better chance of finding factors that are susceptible to P+-1; it's extra 'resolving power' for free.
ECM will always be able to find factors that the other methods miss; the point is that you don't have to go to the trouble of using ECM when it is overkill. There's a minor additional point that when an input has factors of different sizes, using ECM with too large a B1 will find multiple factors at once. For example, if an input has a 6, 10 and 20 digit factor and you run ECM intended to find the 20-digit factor, you'll spend a lot of time on one curve and then probably find the product of all three of those factors. Which is fine, but if you want each factor individually you aren't don't yet. You could have found the 6-digit factor in 1% of the ECM time and the 10-digit factor in maybe 5% of the ECM time, leaving the 20-digit factor for ECM to find; knowing the other factors also makes the ECM arithmetic faster. |
|
|
|
|
|
#482 | |
|
"Ben"
Feb 2007
2·3·587 Posts |
Quote:
I'm seeing the same thing. The first thing is that the command line parser doesn't know to remove the quotes around the ggnfs_dir string. So for now, try adding this line to the yafu.ini file instead: Code:
ggnfs_dir=C:\Program Files (x86)\msieve\ggnfs\ yafu-32k-x64.exe -threads 4 -v -rhomax 800000 -fmtmax 299396627 -batchfile factorme.txt |
|
|
|
|
|
|
#483 | |
|
Mar 2010
1100110112 Posts |
Quote:
Even in ini files, the path to sievers require quotes. Relative pathing, maybe, like ggnfs_dir=/sievers/ ( folder sievers, which exists in dir, where yafu was called from). P.S. Small feature suggestion - if, while doing polyselect, YAFU is killed, then, when restarted, proceed with sieving and other steps. It can be done manually though :-) Since I've already spoken, another feature suggestion: "parallelize polyselection". From my point of view, it can be done like this. When msieve's polyselection starts, it says "searching leading coefficients from 1 to 14167290". Why not launch N msieve instances, each doing it's own work in that range ? For instance, if it's [1;14167290], and CPU has 2 cores, it can be split to [1;7083645] and (7083645;14167290]. The only thing that bothers me that, even the figures look evenly split, they may take different time to finish. K. Last fiddled with by Karl M Johnson on 2010-12-31 at 15:26 |
|
|
|
|
|
|
#484 | ||
|
"Ben"
Feb 2007
2×3×587 Posts |
Quote:
Quote:
|
||
|
|
|
![]() |
| Thread Tools | |
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Running YAFU via Aliqueit doesn't find yafu.ini | EdH | YAFU | 8 | 2018-03-14 17:22 |
| YAFU-1.34 | bsquared | YAFU | 119 | 2015-11-05 16:24 |
| Yafu bug. | storflyt32 | YAFU | 2 | 2015-06-29 05:19 |
| yafu-1.33 | bsquared | YAFU | 12 | 2012-11-08 04:12 |
| yafu-1.32.1 | bsquared | YAFU | 21 | 2012-09-04 19:44 |