|
|
1.1 ! root 1: .DA ! 2: .ds RF Company Confidential ! 3: .ds LF Sun Microsystems ! 4: .nr PS 12 ! 5: .nr VS 14 ! 6: .ps 12 ! 7: .vs 14 ! 8: .TL ! 9: Fortran Benchmarks from General Electric ! 10: .AU ! 11: Evan Adams ! 12: .LP ! 13: Walter Sawka from the New York office sent a memo ! 14: on June 21, 1983 detailing fortran performance. ! 15: It included the source and results to three fortran ! 16: benchmarks. ! 17: .LP ! 18: I ran the benchmarks on the following configurations: ! 19: .TS ! 20: center; ! 21: l l l l. ! 22: CPU Unix Fortran Memory ! 23: .sp 4p ! 24: Sun 1 Version 7 SVS 1 Meg ! 25: Sun 1.5 Sun 0.4 Berkeley 2 Meg ! 26: Sun 2 Sun 0.3 Berkeley 2 Meg ! 27: Sun 2 Sun 0.3 Berkeley/Optimizer 2 Meg ! 28: VAX 750 4.1cBSD Berkeley/Optimizer 4 Meg ! 29: .TE ! 30: .LP ! 31: The benchmarks are: ! 32: .IP 1) ! 33: Matrix inversion of double precision values. ! 34: .IP 2) ! 35: A bubble sort of integers. ! 36: .IP 3) ! 37: A prime number generator. ! 38: .LP ! 39: .TS ! 40: center; ! 41: c|c|c s|c s| ! 42: c|c|c s|c s| ! 43: c|c|c s|c s| ! 44: c|c|c s|c s| ! 45: |l|n|n|n|n|n|. ! 46: _ _ _ _ _ ! 47: .sp 4p ! 48: Matrix Inversion Bubble Sort Prime Numbers ! 49: .sp 4p ! 50: _ _ _ _ _ ! 51: .sp 4p ! 52: Dimension Number of Elements Highest N ! 53: .sp 4p ! 54: _ _ _ _ _ _ ! 55: .sp 4p ! 56: Configuration 50 1000 2000 10000 50000 ! 57: .sp 4p ! 58: = ! 59: .sp 3p ! 60: Version 7 91.7 23.1 88.9 24.3 180.1 ! 61: .sp 3p ! 62: _ ! 63: .sp 3p ! 64: Sun 1.5 74.9 29.0 112.7 49.0/28.5\(dg 290.3/188.6\(dg ! 65: .sp 3p ! 66: _ ! 67: .sp 3p ! 68: Sun 2 60.5 22.8 88.0 39.1/22.7\(dg 231.4/150.6\(dg ! 69: .sp 3p ! 70: _ ! 71: .sp 3p ! 72: Sun 2 (OPT) 55.9 15.8 59.9 38.3/22.7\(dg 227.6/150.6\(dg ! 73: .sp 3p ! 74: _ ! 75: .sp 3p ! 76: Apollo 68000 61 30 122 19 164 ! 77: .sp 3p ! 78: _ ! 79: .sp 3p ! 80: Apollo DN300 51 25 94 16 130 ! 81: .sp 3p ! 82: _ ! 83: .sp 3p ! 84: Apollo (PE) 28 22 88 14 127 ! 85: .sp 3p ! 86: _ ! 87: .sp 3p ! 88: VAX (OPT) 19.3 12.1 46.4 14.5 87.2 ! 89: .sp 3p ! 90: _ ! 91: .TE ! 92: .LP ! 93: \(dg using a single precision square root function ! 94: .LP ! 95: All times are in seconds. ! 96: The times for the Apollo machines are from Walt's memo. ! 97: His memo claims the times are elapsed (wall clock) time. ! 98: This seems silly since most of the programs prompt for some information. ! 99: The times for V7 and 4.2 are user time as given by the /bin/time command. ! 100: The Apollo is a 68000 at 10Mhz, ! 101: the Apollo DN300 is a 68010 at 10MHz, and ! 102: the Apollo (PE) is a 68000 at 10Mhz with the performance enhancement option. ! 103: .LP ! 104: The Apollo numbers for the prime number generator ! 105: with a highest N of 10000 look suspect. ! 106: I find it difficult to believe that the Apollo (PE) ! 107: beat the VAX in this benchmark while it was ! 108: consistently beaten badly in the other benchmarks. ! 109: .LP ! 110: Berkeley fortran fared poorly in the prime number generator. ! 111: This program makes many calls to the square root function. ! 112: The square root function is part of the math library and is written ! 113: in C. ! 114: To take the square root of a single precision number ! 115: it is converted to doubled precision and passed to sqrt(). ! 116: A double precision square root is calculated and returned where ! 117: it is promptly converted to single precision. ! 118: Approximately 75% of the execution time was spent in sqrt() and its ! 119: descendants. ! 120: .LP ! 121: I wrote a single precision sqrt() routine in ! 122: fortran and the prime number generator ran 43% faster on ! 123: the Sun 2. ! 124: .LP ! 125: The fortran optimizer mainly improves array references within ! 126: inner loops. ! 127: The bubble sort improves by 30%; the prime number generator ! 128: does not change at all. ! 129: .LP ! 130: It should also be noted that the system times on the 4.2 systems were ! 131: 2 to 7 times greater than the system times for the version 7 system. ! 132: On version 7, the system time averaged 2.4% of the user time. ! 133: On the Sun 2, the system time averaged 8.2% of the user time. ! 134: .SH ! 135: Conclusions ! 136: .LP ! 137: The same object code ran on the Sun 1.5 and the Sun 2. ! 138: The Sun 2 execution times averaged 20.6% less than the Sun 1.5. ! 139: There was speculation that the Sun 2 performance would improve ! 140: by as much as 30% as compared to Sun 1.5. ! 141: Some people may be disappointed by these numbers. ! 142: .LP ! 143: The Sun 2 with the fortran optimizer beats the best Apollo ! 144: time by 28% for the sorting program. ! 145: I believe that the Apollo performance enhancement option includes ! 146: hardware floating point. ! 147: Still, the Sun 2 is 9% slower than the Apollo DN300 on the matrix ! 148: inversion program and a factor of two slower on the prime number ! 149: generator. ! 150: Taking into account the double precision/single precision problem ! 151: for the prime number generator, the Sun 2 is 13% slower ! 152: than the Apollo DN300. ! 153: .LP ! 154: The fortran optimizer is still in a developement stage and ! 155: is not very reliable yet. ! 156: It is not ready for release! ! 157: .SH ! 158: Future ! 159: .LP ! 160: The benchmark numbers give us a reflection of where ! 161: we are at today. ! 162: The ultimate goal is ! 163: .IP 1) ! 164: A Sun 2 CPU, ! 165: .IP 2) ! 166: Unix 4.2BSD (not 4.1c), ! 167: .IP 3) ! 168: the SKY floating point board, ! 169: .IP 4) ! 170: the fortran optimizer, ! 171: .IP 5) ! 172: a single precision and double precision math library, and ! 173: .IP 6) ! 174: an improved fortran I/O library. ! 175: .LP ! 176: Development is in progress for everything but the libraries. ! 177: It is conjecture, but with each of these components in place ! 178: we should beat Apollo consistently.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.