Moors's legal issue

Suppose you need to run the program on the fastest supercomputer in the world, which takes 10 years. You could:

  • Spend now $ 250 million.
  • 9-year program, Moores law acceleration (4,000 faster), spend $ 1 million in 10 years, completion in 2 weeks.

What is the best strategy?

Question from Long-term storage trends and you "

+3
source share
12 answers

, ( )...
, ​​ ...
- (, , )...

(, , ):

  • endtime(startyear) = startyear + (calculations / speed(startyear))
  • speed(year) = speed(year-1.5) 4 ( , 18 ).
  • endtime(0) = 0 + (calculations/speed(0)) = 10 years
  • speed(0) = calculations/(10 years) ( # 3)

, , , . # 2 :

speed(year) = speed(0)*4 (year/1.5)= (calculations/10)*4 (year/1.5)

BeanShell script:

calculations() {
    return 10000000; // random constant (gets cancelled out anyway)
}
speed(year) {
    speed0 = calculations()/10; // constant factor
    return speed0*Math.pow(4.0, year/1.5);
}
endtime(startyear) {
    return startyear + calculations()/speed(startyear);
}
findmin() {
    start = 0.0;
    finish = 10.0;
    result = 0.0;
    // home in on the best solution (there should only be one minimum)
    for (inc = 1; inc > 0.00000001; inc /= 2.0) {
        result = findmin(start,finish,inc);
        start = result-2*inc;
        finish = result+inc;
    }
    print("Minimum value is " + result + ", taking a total of " +
            endtime(result) + " years");
}
findmin(start,finish,inc) {
    lastNum = 0;
    lastVal = Double.MAX_VALUE;
    for (i = start; i < finish; i += inc) {
        result = endtime(i);
        if (result > lastVal) {
            print("Minimum value between " + start + " and " + finish +
                    " is " + lastVal + ", occurring at " + lastNum);
            return i;
        }
        lastNum = i;
        lastVal = result;
    }
    return lastNum;
}

:

bsh % source("moore.bsh");
bsh % findmin();
Minimum value between 0.0 and 10.0 is 3.5749013123685915, occurring at 2.0
Minimum value between 1.0 and 4.0 is 3.4921256574801243, occurring at 2.5
Minimum value between 2.0 and 3.5 is 3.4921256574801243, occurring at 2.5
Minimum value between 2.25 and 3.0 is 3.4886233976754246, occurring at 2.375
Minimum value between 2.25 and 2.625 is 3.488620519067143, occurring at 2.4375
Minimum value between 2.375 and 2.5625 is 3.488170701257679, occurring at 2.40625
Minimum value between 2.375 and 2.46875 is 3.488170701257679, occurring at 2.40625
Minimum value between 2.390625 and 2.4375 is 3.488170701257679, occurring at 2.40625
(snip)
Minimum value between 2.406149387359619 and 2.4061494767665863 is 3.4881706965827037,
occurring at 2.4061494171619415
Minimum value is 2.4061494320631027, taking a total of 3.488170696582704 years

, , , 2.406149... ( 2 , 148 , Google).


: , , , , .

endtime(x) = x + c/speed(x) (where c = calculations)
speed(x) = speed(0) * 4^(x/1.5) = (c/10)*4^(2x/3)
=> endtime(x) = x + c/((c/10)*4^(2x/3))
              = x + 10*(4^(-2x/3))
d/dx endtime(x) = 1 + 10*ln(4)*(-2/3)*(4^(-2x/3))

- d/dx = 0,

1 + 10*ln(4)*(-2/3)*(4^(-2x/3)) = 0
=> 4^(-2x/3) = 1/(10*ln(4)*(2/3))

log4 : (, log4 (x) = ln (x)/ln (4), ln (1/x) = -ln (x))

-2x/3 = ln(1/(10*ln(4)*(2/3))) / ln(4)
      = -ln(10*ln(4)*2/3) / ln(4)
=> x = (-3/2) * -ln(1/(10*ln(4)*2/3)) / ln(4)
     = 3*ln(10*ln(4)*(2/3)) / 2*ln(4)

( , ). , 2.4061494159159814141268120293221 ( , Windows, ). (, , ).

( , , . ( -(some constant)*4 -2x/3) . , .)

+7

, . , 9 4000x. , GHz . CPU.

, (.. , ), 9 , , , .

+11

Moore Law , .

, , , , , , , .

, , - , , , , ( ) - .

+4

, , . ...

+3

- / 10 - 3 . , 10 , 4000 4000 /, , , .

, , 2012 , !

+1

, , . , / , .

+1

:

  • , .
  • , ..

, , , . ( ).

, .

, moore , . , , .

+1

.

9 2 .

9- , .

0

4 , 2.5?

( , "" 4 5 ...)

0

, .

, , ( ), .

, , ( )... . , , ... .

0

, . , . , , , 10 10 . ( , ), , , . , , .

. , , , , . - - , . , , .

0

, , . , Moores, Warhol Worm, 85% , (GIMPS), 20 .

( , , )

0

All Articles