mersenneforum.org Things that make you go hmm, concerning gpuowl runs
 Register FAQ Search Today's Posts Mark Forums Read

2020-09-08, 22:59   #35
R. Gerbicz

"Robert Gerbicz"
Oct 2005
Hungary

2×36 Posts

Quote:
 Originally Posted by kriesel Mprime/prime95 support PRP-CF. No argument there. Gpuowl DOES NOT support PRP-CF computations. It has never supported the type 5 PRP residues used for PRP-CF. https://www.mersenneforum.org/showpo...3&postcount=15
Exactly, what I don't understand is that why anyone tries to run something that is clearly not supported, and you can check this easily at https://github.com/preda/gpuowl . It means nothing that it could successfully start such job. you can enter any trash input, if the parser doesn't catch your silly line.

And basically you need only one big division (by mp/d, so there could be a shortcut here because d is "small", a few hundred bits in general) to support prp-cf.
That is ((3^mp) mod mp) mod mp/d [so do a fermat test with base=3^d], here we'll use the smallest non-negative residue at mod. And not forget the 2048 bit tricks to save further tests: https://www.mersenneforum.org/showthread.php?t=23462 .

2020-09-08, 23:13   #36
kriesel

"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

47×107 Posts

Quote:
 Originally Posted by kriesel How many of the PRP-CF results from you accepted by the PrimeNet server as such were performed on prime95, versus gpuowl, in this list: https://www.mersenne.org/report_prpc...dispdate=1&B1=
Since they all indicate nonzero shift, and gpuowl does only zero shift, none of them are from gpuowl.
Quote:
 Originally Posted by R. Gerbicz Exactly, what I don't understand is that why anyone tries to run something that is clearly not supported, and you can check this easily at https://github.com/preda/gpuowl . It means nothing that it could successfully start such job. you can enter any trash input, if the parser doesn't catch your silly line.
I assume it's some sort of honest mistake. Perhaps he confused prime95's support with gpuowl, or manual assignment, and gpuowl not throwing an immediate fatal error misled him. Then with the belief somewhat taken root, misreading exponent status pages, result lines, etc. It happens that we sometimes latch on to a wrong hypothesis and get stuck. Been there, done that. I once heard someone at a party state something to the effect that birds were not animals, generating a lot of surprised response.

I'm becoming concerned that gpuowl CF capability may be a misunderstanding shared by others also.

Last fiddled with by kriesel on 2020-09-08 at 23:23

2020-09-08, 23:24   #37
R. Gerbicz

"Robert Gerbicz"
Oct 2005
Hungary

5B216 Posts

Quote:
 Originally Posted by R. Gerbicz And basically you need only one big division (by mp/d)
Hm, but if you use my prp cf method then you can save that annoying large division. So compute just
(3^mp mod mp) mod 2^2048 (or 3^(1+mp)... ) just as if we'd know only d=1, and then apply my prp cf trick. Ofcourse in this setup we're weaker than a regular Fermat test, but not much weaker because d<<2^2048 so we have a very small chance that we'd identify a composite mp/d as a "probable" prime. And the identified composites here are really composites.

ps. not that ideal case, because you need s=3^d mod (mp/d) in the method, so you'd need to compute s with another program with one big division.

Last fiddled with by R. Gerbicz on 2020-09-08 at 23:37

2020-09-09, 00:10   #38
storm5510
Random Account

Aug 2009

19·101 Posts

Quote:
 Originally Posted by R. Gerbicz Exactly, what I don't understand is that why anyone tries to run something that is clearly not supported, and you can check this easily at https://github.com/preda/gpuowl . It means nothing that it could successfully start such job. you can enter any trash input, if the parser doesn't catch your silly line.
If gpuOwl is not built to run CF tests then it needs to be plainly stated in the "readme" document included with each build archive. A person should not have to go digging around on the web to find such information.

I will ignore the "barbs" above and say that I will not belabor this any longer. I will stick with P-1, while it lasts. Once P-1 is gone, then I do not know what will come after. Perhaps nothing.

2020-09-09, 00:29   #39
kriesel

"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

47·107 Posts

Quote:
 Originally Posted by storm5510 If gpuOwl is not built to run CF tests then it needs to be plainly stated in the "readme" document included with each build archive.
I don't see why. It doesn't do Proth, Fermat numbers, LLR, generalized repunit, TF, ECM, etc. etc. Documentation is for what it does do. Excluding everything else is implied, in standard fashion.
I don't change the readme.md that gets put in the zip file of Windows builds. At all. It is the creation of Preda and SELROC.

You wouldn't expect CUDALucas to do everything, or disclaim everything else, would you? or CUDAPm1? Or mfaktc?
Gpuowl is actually an outlier in doing more than one computation type on gpu in GIMPS. Which one(s) has changed over time and may again.
As for "barbs", well, none intended from here, and I suggest you chalk up any you percieve, to word choice or something equally benign.
Honestly, trying to help.

Last fiddled with by kriesel on 2020-09-09 at 00:30

2020-09-09, 01:35   #40
ATH
Einyen

Dec 2003
Denmark

17×181 Posts

Quote:
 Originally Posted by storm5510 If gpuOwl is not built to run CF tests then it needs to be plainly stated in the "readme" document included with each build archive. A person should not have to go digging around on the web to find such information. I will ignore the "barbs" above and say that I will not belabor this any longer. I will stick with P-1, while it lasts. Once P-1 is gone, then I do not know what will come after. Perhaps nothing.
I think they consider PRP-CF tests as extra feature which would be announced if it was added, but not something they have to say is not included.

It was only added to Prime95 around 2 years ago, at least as a feature recorded and handed out by the server. I think you could manually run PRP CF tests for many years if you wanted.

I'm not sure how PRP-CF tests works but I believe it is fairly different from a standard PRP test which is "just" 3^(Mp-1) (mod Mp) with modular exponentiation, and since Mp is almost a power of 2 it is mostly just modular squarings. I think some more tricks are needed for PRP-CF tests where you test (2^p-1)/knownfactors which is far from a power of 2, and therefore it should not be expected to be implemented just because PRP tests are working.

Also the gpuowl Readme file does not say you can add known factors to the worktodo.txt line:

Quote:
 ## worktodo.txt The lines in worktodo.txt must be of one of these forms: * 70100200 * PRP=FCECE568118E4626AB85ED36A9CC8D4F,1,2,77936867,-1,75,0

Last fiddled with by ATH on 2020-09-09 at 01:38

2020-09-09, 06:45   #41
kriesel

"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

47×107 Posts

Quote:
 Originally Posted by ATH Also the gpuowl Readme file does not say you can add known factors to the worktodo.txt line:
That and several other indications were already covered in post 34.
One I missed was the gpuowl primenet.py documentation part of readme.md.

Code:
## Primenet.py Arguments
-h, --help            show this help message and exit\
-t TIMEOUT            Seconds to sleep between updates\
--dirs DIR $DIR ...$  GpuOwl directories to scan\
-w \{PRP,PM1,LL_DC,PRP_DC,PRP_WORLD_RECORD,PRP_100M\}   GIMPS work type
Nothing there about PRP_CF or PRP_CF_DC. Since storm5510 is operating manually, not using primenet.py, it would have been easy to miss that one.

Similarly, in the primenet.py code itself:
Code:
workTypes = dict(PRP=150, PM1=4, LL_DC=101, PRP_DC=151, PRP_WORLD_RECORD=152, PRP_100M=153)
The PrimeNet API spec does not make a good reference since it has not been maintained. http://v5.mersenne.org/v5design/v5webAPI_0.97.html#7.0 does not list any work type involving PRP.

Resorting to a prime95 source code download, we see in primenet.h a list of work preference values
Code:
/* Valid work_preference values */
#define PRIMENET_WP_WHATEVER        0    /* Whatever makes most sense */
#define PRIMENET_WP_FACTOR_LMH        1    /* Factor big numbers to low limits */
#define PRIMENET_WP_FACTOR        2    /* Trial factoring */
#define PRIMENET_WP_PMINUS1        3    /* P-1 of small Mersennes --- not supported */
#define PRIMENET_WP_PFACTOR        4    /* P-1 of large Mersennes */
#define PRIMENET_WP_ECM_SMALL        5    /* ECM of small Mersennes looking for first factors */
#define PRIMENET_WP_ECM_FERMAT        6    /* ECM of Fermat numbers */
#define PRIMENET_WP_ECM_CUNNINGHAM    7    /* ECM of Cunningham numbers --- not supported */
#define PRIMENET_WP_ECM_COFACTOR    8    /* ECM of Mersenne cofactors */
#define PRIMENET_WP_LL_FIRST        100    /* LL first time tests */
#define PRIMENET_WP_LL_DBLCHK        101    /* LL double checks */
#define PRIMENET_WP_LL_WORLD_RECORD    102    /* LL test of world record Mersenne */
#define PRIMENET_WP_LL_100M        104    /* LL 100 million digit */
#define PRIMENET_WP_PRP_FIRST        150    /* PRP test of big Mersennes */
#define PRIMENET_WP_PRP_DBLCHK        151    /* PRP double checks */
#define PRIMENET_WP_PRP_WORLD_RECORD    152    /* PRP test of world record Mersennes */
#define PRIMENET_WP_PRP_100M        153    /* PRP test of 100M digit Mersennes */
#define PRIMENET_WP_PRP_COFACTOR    160    /* PRP test of Mersenne cofactors */
#define PRIMENET_WP_PRP_COFACTOR_DBLCHK    161    /* PRP double check of Mersenne cofactors */
and a list of assignment types
Code:
/* This structure is passed for the ga - Get Assignment call */

/* Valid work_types returned by ga */
#define PRIMENET_WORK_TYPE_FACTOR    2
#define PRIMENET_WORK_TYPE_PMINUS1    3
#define PRIMENET_WORK_TYPE_PFACTOR    4
#define PRIMENET_WORK_TYPE_ECM        5
#define PRIMENET_WORK_TYPE_FIRST_LL    100
#define PRIMENET_WORK_TYPE_DBLCHK    101
#define PRIMENET_WORK_TYPE_PRP        150
#define PRIMENET_WORK_TYPE_CERT        200
Assignment result types:
Code:
/* This structure is passed for the ar - Assignment Result call */

#define PRIMENET_AR_NO_RESULT    0    /* No result, just sending done msg */
#define PRIMENET_AR_TF_FACTOR    1    /* Trial factoring, factor found */
#define PRIMENET_AR_P1_FACTOR    2    /* P-1, factor found */
#define PRIMENET_AR_ECM_FACTOR    3    /* ECM, factor found */
#define PRIMENET_AR_TF_NOFACTOR    4    /* Trial Factoring no factor found */
#define PRIMENET_AR_P1_NOFACTOR    5    /* P-1 Factoring no factor found */
#define PRIMENET_AR_ECM_NOFACTOR 6    /* ECM Factoring no factor found */
#define PRIMENET_AR_LL_RESULT    100    /* LL result, not prime */
#define PRIMENET_AR_LL_PRIME    101    /* LL result, Mersenne prime */
#define PRIMENET_AR_PRP_RESULT    150    /* PRP result, not prime */
#define PRIMENET_AR_PRP_PRIME    151    /* PRP result, probably prime */
#define PRIMENET_AR_CERT    200    /* Certification result */
PRP residue types (Note, gpuowl only implemented in various versions, a single type; 1, 4, or 0, where 0 corresponds to the PRP-1 simultaneous P-1 and PRP using IIRC a base determined from the exponent and P-1 bounds. Gpuowl has used type 1 since V6.5-84, July 2019.)
Code:
// There are (at least) 5 PRP residue types for testing N=(k*b^n+c)/d:
#define    PRIMENET_PRP_TYPE_FERMAT    1    // Fermat PRP.  Calculate a^(N-1) mod N.  PRP if result = 1
#define    PRIMENET_PRP_TYPE_SPRP        2    // SPRP variant.  Calculate a^((N-1)/2) mod N.  PRP if result = +/-1
#define    PRIMENET_PRP_TYPE_FERMAT_VAR    3    // Type 1 variant,b=2,d=1. Calculate a^(N-c) mod N.  PRP if result = a^-(c-1)
#define    PRIMENET_PRP_TYPE_SPRP_VAR    4    // Type 2 variant,b=2,d=1. Calculate a^((N-c)/2) mod N.  PRP if result = +/-a^-((c-1)/2)
#define    PRIMENET_PRP_TYPE_COFACTOR    5    // Cofactor variant.  Calculate a^(N*d-1) mod N*d.  PRP if result = a^(d-1) mod N
// Primenet encourages programs to return type 1 PRP residues as that has been the standard for prime95, PFGW, LLR for many years.
// Primenet encourages programs to return type 5 PRP residues for cofactor tests as that allows Gerbicz-error checking and proofs.
This is what a PRP-CF performed by prime95 displays in a user's results listing for an example run:
CPU Name roa
Exponent 10516361
Result type C-PRP

Age days 0.1
Result M10516361/1072668823/249111559369/788796377818991 : F0C2FEF19EB174A1
Ghz-Days 3.4353

The same exponent in Exponent Status shows the known factors, nonzero shift, PRP residue type 5: https://www.mersenne.org/report_expo...0516361&full=1

Last fiddled with by kriesel on 2020-09-09 at 07:07

2020-09-09, 12:58   #42
storm5510
Random Account

Aug 2009

19×101 Posts

Quote:
 Originally Posted by kriesel Nothing there about PRP_CF or PRP_CF_DC. Since storm5510 is operating manually, not using primenet.py, it would have been easy to miss that one.
I don't use this script. I would have had to install Python. I didn't want to install it. I was getting assignments directly from Primenet's "Get Manual Assignments" page. There are two items in the list specifying "cofactors." First-time and double check.

Quote:
 PRP=,1,2,10516021,-1,"315480631"
Above is an assignment Prime95 is currently running. I have Prime95's work type set to first-time tests on cofactors. The exponent page, here, shows an existing factor as does the example above. There is no previous history other than my assignment. Where did this factor come from?

Having a factor, I don't understand how this could be considered a "first-time" test. The more I think about all of this, the more my head hurts.

2020-09-09, 13:46   #43
Uncwilly
6809 > 6502

"""""""""""""""""""
Aug 2003
101×103 Posts

224238 Posts

Quote:
 Originally Posted by storm5510 There is no previous history other than my assignment. Where did this factor come from? Having a factor, I don't understand how this could be considered a "first-time" test. The more I think about all of this, the more my head hurts.
Many of the small factors have been known for a long time and the assignments that generated them were not recorded. Assume that it was known by the ancients. Your PRP-CF is the first test to check if the cofactor is prime.

2020-09-09, 13:52   #44
kriesel

"TF79LL86GIMPS96gpu17"
Mar 2017
US midwest

47×107 Posts

Quote:
 Originally Posted by storm5510 The exponent page, here, shows an existing factor as does the example above. There is no previous history other than my assignment. Where did this factor come from? Having a factor, I don't understand how this could be considered a "first-time" test.
https://www.mersenne.ca/exponent/10516021 shows the factor has k=15. That was found so easily that it was probably found very long ago, and it may predate GIMPS and record keeping of trial factoring levels completed per exponent, or any organized system of assignments / reservations.

Another way the situation may occur, is that old factoring gets removed from the database to manage the database size. See the note about that at the bottom of any https://www.mersenne.org/results/ output:
Code:
*Count does not include any results reported to the old v4  server. Also, to keep the database size down, some TF-LMH result lines  are deleted before 365 days pass. Any factors found, trial factoring  limits, and CPU credits are remembered, but the result lines will not  appear in the table above or appear in the count of total results for  the last 365 days.
(Some people mistakenly believe that the absence of listing a bit level of TF such as in an exponent report means it was skipped, and redo it. Please everyone, don't do that. Duplication of TF already completed is not productive.)

As to why PRP-CF is called a first-time test, it's the first time the cofactor is primality tested. This is the same terminology and similar sequence as for an exponent with no factor found. The usual order when searching for Mersenne primes is TF up to a stopping point, if no factor found yet, run a P-1, if no factor found yet, then a first primality test, then eventually a double check of the primality test, or now a Cert of the proof.

The cofactor being tested for primality in PRP-CF is whatever is left after dividing the Mersenne number by the known factors. See for example https://www.mersenne.org/report_expo...0516361&full=1 (the only PRP-CF I've run.)
Or definition of cofactor, #11 of https://www.mersenneforum.org/showpo...65&postcount=3
PRP of a cofactor does not help find new Mersenne primes. It may aid in further factoring of composite Mersenne numbers, which some people like. See https://www.mersenneforum.org/showth...810#post555810

Last fiddled with by kriesel on 2020-09-09 at 13:57

 Similar Threads Thread Thread Starter Forum Replies Last Post Xyzzy Lounge 4277 2021-04-16 20:30 preda GpuOwl 20 2020-10-17 06:51 GP2 GpuOwl 22 2020-06-13 16:57 M344587487 GpuOwl 14 2018-12-29 08:11 MattcAnderson Operazione Doppi Mersennes 3 2014-02-16 15:19

All times are UTC. The time now is 16:57.

Sun Apr 18 16:57:25 UTC 2021 up 10 days, 11:38, 1 user, load averages: 2.23, 1.81, 1.59