Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/releases/release-110.37/READMES/110.28-README.html
ViewVC logotype

Annotation of /sml/releases/release-110.37/READMES/110.28-README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 638 - (view) (download) (as text)
Original Path: sml/trunk/READMES/110.28-README.html

1 : dbm 637 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 :     <html>
3 :     <head>
4 :     <title>SML/NJ Version 110.28 NEWS</title>
5 :     </head>
6 :    
7 :     <body bgcolor="white">
8 :     <center><h1>Standard ML of New Jersey<BR>
9 :     Version 110.28, May 1, 2000</h1>
10 :     </center>
11 :    
12 :     <center>
13 :     <tt> http://cm.bell-labs.com/cm/cs/what/smlnj/index.html </tt>
14 :     </center>
15 :    
16 :     <blockquote>
17 :     <center>
18 :     <h2> Warning </h2>
19 :     </center>
20 :     <blockquote>
21 :     <blockquote>
22 :     <em>
23 :     This version is intended for compiler hackers.
24 :     We are in the midst of substantial structural changes,
25 :     and this is a snapshot.
26 :     </em>
27 :     </blockquote>
28 :     </blockquote>
29 :    
30 :     <hr>
31 :    
32 :     <center><h2>Summary:</h2></center>
33 :     <UL>
34 :     <LI> This version has some tuning of phase ordering for FLINT, which
35 :     mostly solves the excessive space problem during compilation. With
36 :     this tuning, 110.28 is slightly better than 110.25 in performance,
37 :     but not quite as good as 110.25+latest MLRISC. See the benchmarks
38 :     below. Futher work on the register allocator in MLRISC should
39 :     improve space performance further.
40 :     <p>
41 :     <LI>CM:
42 :     Installation scripts have been tweaked. A new noweb tool has been
43 :     added. ".fun" suffix has been added to those that imply sml compilation.
44 :     New version numbering scheme added. Alternative syntax for anchored
45 :     paths added. Parallel make made smarter. Support for "unsharing".
46 :     Simple "makedepend" functionality added. Further details below.
47 :     <p>
48 :     See src/system/README and the latest version of the CM manual at
49 :     <blockquote>
50 : dbm 638 <a href="http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual/index.html">&lt;http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual/index.html&gt;</a>
51 :     <a href="http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual.ps">&lt;http://www.kurims.kyoto-u.ac.jp/~blume/SMLNJ-DEV/manual.ps&gt;</a>
52 : dbm 637 </blockquote>
53 :     for further information about visible changes.
54 :     <p>
55 :     <li> A few MLRISC changes, most not SML/NJ related.
56 :     <p>
57 :     <li> ML-Yacc: updated manual and examples to be SML '97, SML/NJ 110+ compliant.
58 :     Examples now compiled with CM.
59 : dbm 638 <p>
60 : dbm 637 <li> Reported bug fixes:
61 :     <pre>
62 :     1498. Specialized real arrays not pretty-printed correctly
63 :     1510. Signature matching bug makes "casts" possible
64 :     1562. CM complains about unrecognized file extension ".fun"
65 :     1563. redundant pathconfig contents with multiple builds
66 :     </pre>
67 :     <p>
68 :     <hr>
69 :     <h2> Change Details </h2>
70 :     <center><h3> FLINT </h3></center>
71 :     Tuned ordering of phases to improve time/space performance. See
72 :     src/compiler/FLINT/opt/flintopt.txt for description of some of the
73 :     issues.
74 :     <p>
75 :     <hr>
76 :     <center><h3> MLRISC </h3></center>
77 :     This update synchronizes my repository with Yale's. Most of these
78 :     changes, however, do not affect SML/NJ at all (the RA is an exception).
79 :     <p>
80 :     <ol>
81 :     <li>Register Allocator
82 :     <ol type="a">
83 :     <li> An improvement in the interference graph construction:
84 :     Given a copy
85 :     <pre>
86 :     s <- t
87 :     </pre>
88 :     no interference edge between s and t is added for this definition of s.
89 :     <p>
90 :     <li> I've added two new spill heuristic modules that Fermin and I developed
91 :     (in the new library RA.cm). These are unused in SML/NJ but maybe
92 :     useful for others (Moby?)
93 :     <p>
94 :     <li> Added a flag "ra-dump-size" to print out the size of the flowgraph
95 :     and the interference graph.
96 :     </ol>
97 :     <li> X86
98 :     <ol type="a">
99 :     <li> Various fixes in the backend provided by Fermin [C--] and Lal.
100 :     </ol>
101 :     <p>
102 :     <li> Alpha
103 :     <ol type="a">
104 :     <li> Added the BSR instruction and code generation that goes with it [C--]
105 :     <p>
106 :     <li> Other fixes too numerous to recount provided by Fermin [C--]
107 :     <p>
108 :     <li>PSEUDOARITH was missing in AlphaRewrite. This causes an endless
109 :     loop in C--.
110 :     </ol>
111 :     <p>
112 :     <li> Regmaps
113 :     <ol type="a">
114 :     <li> The regmaps are not initialized with the identity physical bindings
115 :     at creation time. This is unneeded.
116 :     </ol>
117 :     <p>
118 :     <li> MLRISC Optimizations
119 :     <ol type="a">
120 :     <li> The DJ-Graph module can now compute the iterated dominance frontiers
121 :     intersects with liveness incrementally in linear time! Woohoo!
122 :     This is now used in my new SSA construction algorithm.
123 :     <p>
124 :     <li> THe branch reorganization module is now smarter about linear chains of
125 :     basic blocks.
126 :     </ol>
127 :     </ol>
128 :     <p>
129 : dbm 638 <hr>
130 : dbm 637 <center><h3> CM </h3></center>
131 :     <ul>
132 :     <li>Several manual updates
133 :     <blockquote>
134 :     I always try to keep the manual in sync with CM's latest features.
135 :     </blockquote>
136 :     <p>
137 :     <li>New noweb tool
138 :     <blockquote>
139 :     The existing system is entirely unaffected by this, but some CM users
140 :     have asked for renewed noweb support. Everything is documented in the
141 :     CM manual.
142 :     <p>
143 :     New (plugin) libraries:
144 :     <pre>
145 :     noweb-tool.cm
146 :     nw-ext.cm
147 :     </pre>
148 :     </blockquote>
149 :     <p>
150 :     <li>CM version numbering added
151 :     <blockquote>
152 :     This is an implementation of Lal's proposal for adding version
153 :     numbers and version checking to .cm files. Lal said that his
154 :     proposal was just that -- a proposal. For the time being I went
155 :     ahead and implemented it so that people can comment on it.
156 :     Everything is completely backward-compatible (except for the stable
157 :     library format, i.e., new bootfiles!).
158 :     <p>
159 :     As usual, see the CM manual for details.
160 :     </blockquote>
161 :     <p>
162 :     <li> Alternative syntax for anchored paths
163 :     <blockquote>
164 :     Dave has recently voiced the same concerns that I had when I did
165 :     this, so there should be some support. My take is that eventually
166 :     I will let support for the current syntax (where anchors are
167 :     "implicit") fade out in favor of the new, explicit syntax.
168 :     In order to be backward-compatible, both old and new syntax are
169 :     currently supported.
170 :     <p>
171 :     Again, see the CM manual for details.
172 :     </blockquote>
173 :     <p>
174 :     <li> Parallel make is trying to be slightly smarter
175 :     <blockquote>
176 :     When the master process finds a "bottleneck", i.e., when there is
177 :     only one compilation unit that can be compiled and everybody else
178 :     is waiting on it, then it will simply compile it directly instead
179 :     of clumsily telling one of the slaves to do it.
180 :     </blockquote>
181 :     <p>
182 :     <li> Support for "unsharing" added
183 :     <blockquote>
184 :     This is necessary in order to be able to have two different
185 :     versions of the same library running at the same time (e.g., for
186 :     trying out a new MLRISC while still having the old MLRISC linked
187 :     into the current compiler, etc.) See the CM manual.
188 :     </blockquote>
189 :     <p>
190 :     <li> makedepend
191 :     <blockquote>
192 :     Simple "makedepend" functionality added for generating Makefile
193 :     dependency information. (This is rather crude at the moment.
194 :     Expect some changes here in the future.)
195 :     </blockquote>
196 :     <p>
197 :     <li> New sml class prefix
198 :     <blockquote>
199 :     ".fun" added as a recognized suffix for ML files. Also documented
200 :     explicitly in the manual that the fallback behavior (unknown suffix
201 :     -&gt; ML file) is not an official feature!
202 :     </blockquote>
203 :     <p>
204 :     <li>Pickler
205 :     <blockquote>
206 :     Small changes to the pickler for stable libraries.
207 : dbm 638 </blockquote>
208 : dbm 637 <p>
209 :     <li>Internal cleanup
210 :     <blockquote>
211 :     Several internal changes to CM (for cleanup/improvement).
212 :     </blockquote>
213 :     <p>
214 :     <li>install.sh changes
215 :     <blockquote>
216 :     I changed config/install.sh to remove duplicate entries from the
217 :     lib/pathconfig file at the end. Moreover, the final version of
218 :     lib/pathconfig is sorted alphabetically. The same (sorting) is done
219 :     in src/system/installml.
220 :     <p>
221 :     The config/install.sh script now consistently uses relative
222 :     pathnames in lib/pathconfig whenever the anchor is in the lib
223 :     directory. (So far this was true for the libraries that come
224 :     pre-compiled and bundled as part of the bootfiles but not for
225 :     libraries that are compiled by the script itself.)
226 :     <p>
227 :     Changed install.sh script to handle archive files without version number
228 :     and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
229 :     name of the boot file archive.
230 :     </blockquote>
231 :     </ul>
232 :     <p>
233 :     <hr>
234 :     <center><h3> BENCHMARKS </h3></center>
235 :     Allen Leung, 28 April 2000:
236 :     <p>
237 :     I've rerun the benchmarks to see if anything has slowed down in
238 :     MLRISC recently, but found nothing. I compared 110.25, 110.25+latest
239 :     MLRISC, and 110.27+ (which also has the latest MLRISC). 110.25 uses
240 :     cpsopt, and 110.27+ uses flintopt. [110.27+ is repository state
241 :     at the end of April, which is essentially 110.28 - dbm].
242 :     <p>
243 :     The results are:
244 :     <pre>
245 :     110.25 versus 110.25+latest MLRISC
246 :     ----------------------------------
247 :     Name Compilation Runtime Speedup
248 :     barnesHut 5.560 5.368 3.57% 3.690 3.302 11.76%
249 :     boyer 8.678 7.672 13.12% 0.313 0.312 0.53%
250 :     count-graphs 2.048 1.915 6.96% 28.577 27.128 5.34%
251 :     fft 1.325 1.233 7.43% 1.060 0.982 7.98%
252 :     knuthBendix 5.337 4.680 14.03% 0.962 0.918 4.72%
253 :     lexgen 10.310 9.950 3.62% 0.917 0.902 1.66%
254 :     life 1.230 1.127 9.17% 0.128 0.100 28.33%
255 :     logic 3.533 3.258 8.44% 5.750 5.413 6.22%
256 :     mandelbrot 0.145 0.148 -2.25% 0.700 0.685 2.19%
257 :     mlyacc 34.557 33.342 3.64% 0.553 0.533 3.75%
258 :     nucleic 6.675 6.507 2.59% 0.173 0.167 4.00%
259 :     ratio-regions 6.358 6.218 2.25% 119.753 120.772 -0.84%
260 :     ray 2.280 2.247 1.48% 3.563 3.517 1.33%
261 :     simple 9.798 9.650 1.54% 2.987 3.083 -3.14%
262 :     tsp 1.763 1.528 15.38% 8.657 7.718 12.16%
263 :     vliw 33.938 32.570 4.20% 1.982 2.000 -0.92%
264 :     Average speedup: 5.32%
265 :     Average compile time speedup: 5.95%
266 :     </pre>
267 :     As you can see, MLRISC on x86 has improved slightly since the
268 :     110.25. Now comparing 110.25 with 110.27+:
269 :     <pre>
270 :     110.25 versus 110.27+
271 :     ---------------------
272 :     Name Compilation Runtime Speedup
273 :     barnesHut 5.560 5.568 -0.15% 3.690 3.347 10.26%
274 :     boyer 8.678 10.058 -13.72% 0.313 0.322 -2.59%
275 :     count-graphs 2.048 2.125 -3.61% 28.577 31.533 -9.38%
276 :     fft 1.325 1.297 2.19% 1.060 1.052 0.79%
277 :     knuthBendix 5.337 3.737 42.82% 0.962 1.175 -18.16%
278 :     lexgen 10.310 9.985 3.25% 0.917 0.992 -7.56%
279 :     life 1.230 1.105 11.31% 0.128 0.125 2.67%
280 :     logic 3.533 3.302 7.02% 5.750 5.357 7.34%
281 :     mandelbrot 0.145 0.162 -10.31% 0.700 0.753 -7.08%
282 :     mlyacc 34.557 37.292 -7.33% 0.553 0.493 12.16%
283 :     nucleic 6.675 7.717 -13.50% 0.173 0.165 5.05%
284 :     ratio-regions 6.358 3.915 62.41% 119.753 126.153 -5.07%
285 :     ray 2.280 2.142 6.46% 3.563 2.827 26.06%
286 :     simple 9.798 10.067 -2.67% 2.987 2.812 6.22%
287 :     tsp 1.763 1.605 9.87% 8.657 8.870 -2.41%
288 :     vliw 33.938 46.907 -27.65% 1.982 1.802 9.99%
289 :     Average speedup: 1.77%
290 :     Average compile time speedup: 4.15%
291 :    
292 :     110.25+latest MLRISC versus 110.27+
293 :     -----------------------------------
294 :     Name Compilation Runtime Speedup
295 :     barnesHut 5.368 5.568 -3.59% 3.302 3.347 -1.34%
296 :     boyer 7.672 10.058 -23.73% 0.312 0.322 -3.11%
297 :     count-graphs 1.915 2.125 -9.88% 27.128 31.533 -13.97%
298 :     fft 1.233 1.297 -4.88% 0.982 1.052 -6.66%
299 :     knuthBendix 4.680 3.737 25.25% 0.918 1.175 -21.84%
300 :     lexgen 9.950 9.985 -0.35% 0.902 0.992 -9.08%
301 :     life 1.127 1.105 1.96% 0.100 0.125 -20.00%
302 :     logic 3.258 3.302 -1.31% 5.413 5.357 1.06%
303 :     mandelbrot 0.148 0.162 -8.25% 0.685 0.753 -9.07%
304 :     mlyacc 33.342 37.292 -10.59% 0.533 0.493 8.11%
305 :     nucleic 6.507 7.717 -15.68% 0.167 0.165 1.01%
306 :     ratio-regions 6.218 3.915 58.83% 120.772 126.153 -4.27%
307 :     ray 2.247 2.142 4.90% 3.517 2.827 24.41%
308 :     simple 9.650 10.067 -4.14% 3.083 2.812 9.66%
309 :     tsp 1.528 1.605 -4.78% 7.718 8.870 -12.98%
310 :     vliw 32.570 46.907 -30.56% 2.000 1.802 11.01%
311 :     Average speedup: -2.94%
312 :     Average compile time speedup: -1.68%
313 : dbm 638 </pre>
314 : dbm 637 Overall, I'd say 110.27+ is pretty competitive with 110.25. There are
315 :     some big improvements (ray, vliw, mlyacc) which can only be attributed to FLINT
316 :     changes. But something has slowed down (tsp, knuth-bendix, life, mandelbrot,
317 :     count-graphs). [We know the reasons with knuth-bendix.]
318 :     Also, compilation time in 110.27+ is generally slower (which is offset
319 :     by huge improvements in knuth-bendix and ratio-regions).
320 :     <p>
321 :     <hr>
322 :    
323 :     <font size=-2>
324 :     <address><a href="mailto:george@research.bell-labs.com">
325 :     Lal George</a></address>
326 :     <!-- Created: Thu Aug 6 00:13:09 EDT 1998 -->
327 :     <!-- hhmts start -->
328 : dbm 638 Last modified: Tue May 2 15:34:00 EDT 2000
329 : dbm 637 <!-- hhmts end -->
330 :     </font>
331 :     </blockquote>
332 :     </body>
333 :     </html>

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0