![]() |
|
|
#1 |
|
May 2004
Oslo, Norway
23·3·5 Posts |
What is the algorithm used by the reports for determining the number of P90 years per exponent?
I guess there must be some documentation on this somewhere, but so far I've been unable to find it. regards, Leif. |
|
|
|
|
|
#2 |
|
"Tony Gott"
Aug 2002
Yell, Shetland, UK
373 Posts |
Not sure on the maths but you can find P90 value at Rob's Page
|
|
|
|
|
|
#3 |
|
"Mark"
Feb 2003
Sydney
3×191 Posts |
Try this thread. The GIMPS status page has the speeds that are assumed for each fft size.
|
|
|
|
|
|
#4 | |
|
May 2004
Oslo, Norway
23×3×5 Posts |
Quote:
I've found a similar algorithm simply by viewing the source of the GIMPS Benchmark page. I thought that there maybe existed a more elegant formula, but this is probably the real thing after all ![]() regards, Leif. |
|
|
|
|
|
|
#5 |
|
May 2004
Oslo, Norway
23·3·5 Posts |
FWIW, here's a full, working, Python implementation of robreid's code:
Code:
def calc_p90(exp):
""" calculate P90 value for LL and DC, input is exponent,
output is P90 cpu yrs.
By robreid, his explanation is as follows
(from http://www.mersenneforum.org/showthread.php?t=2731):
The exponent ranges are based on the table on the Mersenne
Status page (http://www.mersenne.org/status.htm)
The multiplier for each range is comes from the PII-400 Speed
column on the same table.
So its :-
Exponent (same as the number of iterations needed to complete
the LL) multiplied by the number of PII-400 seconds to complete
an iteration at the fft size of the exponent multiplied by 5.5
(to convert to P90 seconds) divided by 31536000
(to convert to P90 years)
Converted to Python by leifbk 2004"""
exp_p90 = 0.0
if (exp <= 4598000): exp_p90 = exp * 0.119
elif (exp >= 4598001 and exp <= 5255000): exp_p90 = exp * 0.132
elif (exp >= 5255001 and exp <= 6520000): exp_p90 = exp * 0.173
elif (exp >= 6520001 and exp <= 7760000): exp_p90 = exp * 0.211
elif (exp >= 7760001 and exp <= 9040000): exp_p90 = exp * 0.252
elif (exp >= 9040001 and exp <= 10330000): exp_p90 = exp * 0.281
elif (exp >= 10330001 and exp <= 12830000): exp_p90 = exp * 0.372
elif (exp >= 12830001 and exp <= 15300000): exp_p90 = exp * 0.453
elif (exp >= 15300001 and exp <= 17850000): exp_p90 = exp * 0.536
elif (exp >= 17850001 and exp <= 20400000): exp_p90 = exp * 0.6
elif (exp >= 20400001 and exp <= 25350000): exp_p90 = exp * 0.776
elif (exp >= 25350001 and exp <= 30150000): exp_p90 = exp * 0.934
elif (exp >= 30150001 and exp <= 35100000): exp_p90 = exp * 1.113
elif (exp >= 35100001 and exp <= 40250000): exp_p90 = exp * 1.226
elif (exp >= 40250001 and exp <= 50000000): exp_p90 = exp * 1.64
elif (exp >= 50000001 and exp <= 59400000): exp_p90 = exp * 1.99
elif (exp >= 59400001 and exp <= 69100000): exp_p90 = exp * 2.38
elif (exp >= 69100001 and exp <= 79300000): exp_p90 = exp * 2.604
exp_p90 = exp_p90 * 5.5 / 31536000
return exp_p90
if __name__ == '__main__':
from sys import argv
res = calc_p90(int(argv[1]))
print '%3.3f' % res
I hope that this might be useful to someone regards, Leif. |
|
|
|
|
|
#6 |
|
May 2004
Oslo, Norway
23×3×5 Posts |
Here's a shorter and cleaner version:
Code:
#! /usr/bin/env python
def calc_p90(exp):
""" calculate P90 value for LL and DC, input is exponent,
output is P90 cpu years.
see http://www.mersenneforum.org/showthread.php?t=2731
for an explanation."""
exp_p90 = 0.0
if exp < 4598000: exp_p90 = exp * 0.6545
if exp > 4598000: exp_p90 = exp * 0.726
if exp > 5255000: exp_p90 = exp * 0.9515
if exp > 6520000: exp_p90 = exp * 1.1605
if exp > 7760000: exp_p90 = exp * 1.386
if exp > 9040000: exp_p90 = exp * 1.5455
if exp > 10330000: exp_p90 = exp * 2.046
if exp > 12830000: exp_p90 = exp * 2.4915
if exp > 15300000: exp_p90 = exp * 2.948
if exp > 17850000: exp_p90 = exp * 3.3
if exp > 20400000: exp_p90 = exp * 4.268
if exp > 25350000: exp_p90 = exp * 5.137
if exp > 30150000: exp_p90 = exp * 6.1215
if exp > 35100000: exp_p90 = exp * 6.743
if exp > 40250000: exp_p90 = exp * 9.02
if exp > 50000000: exp_p90 = exp * 10.945
if exp > 59400000: exp_p90 = exp * 13.09
if exp > 69100000: exp_p90 = exp * 14.322
return exp_p90 / 31536000
if __name__ == '__main__':
from sys import argv
print '%3.3f' % calc_p90(int(argv[1]))
Maybe this thread should have been placed in the Programming section, but as I feel that a lot of newbies wonder about this kind of stuff, I felt that this was the right place. regards, Leif.
|
|
|
|
![]() |
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Test a Specific Exponent in Prime95. When it is 100% done, does it mean I find a new prime number? | king | Information & Answers | 5 | 2018-02-21 18:15 |
| http://www.mersenne.ca/exponent/72977 - 'That is a weird number' | Syntony | mersenne.ca | 3 | 2017-01-27 18:53 |
| PSP: 10 years old! | Citrix | Prime Sierpinski Project | 1 | 2013-11-08 07:35 |
| Six years ago today… | Xyzzy | Forum Feedback | 4 | 2008-08-16 16:55 |
| P90 CPU Years and PrimeNet | S485122 | PrimeNet | 9 | 2006-10-27 06:52 |