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/trunk/READMES/110.31-README.html
ViewVC logotype

Annotation of /sml/trunk/READMES/110.31-README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 780 - (view) (download) (as text)

1 : blume 780 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 :     <html>
3 :     <head>
4 :     <title>SML/NJ Version 110.31 NEWS</title>
5 :     </head>
6 :    
7 :     <body bgcolor="white">
8 :     <center><h1>Standard ML of New Jersey<BR>
9 :     Version 110.31, December 8, 2000</h1>
10 :     </center>
11 :    
12 :     <center>
13 :     <a href=http://cm.bell-labs.com/cm/cs/what/smlnj/index.html>
14 :     Home page</a>
15 :     </center>
16 :    
17 :     <blockquote>
18 :     <center>
19 :     <h2> Warning </h2>
20 :     </center>
21 :     <blockquote>
22 :     <blockquote>
23 :     <em>
24 :     This version is intended for compiler hackers. The
25 :     version ought to be stable, however we have not run
26 :     our full regression testing.
27 :     </em>
28 :     </blockquote>
29 :     </blockquote>
30 :    
31 :    
32 :     <hr>
33 :    
34 :     <center><h2>Summary:</h2></center>
35 :     <UL>
36 :     <LI> Socket related bug fixes.
37 :     <p>
38 :     <LI> Improvements to CM autoloading.
39 :     <p>
40 :     <LI> General cleanup in the use of CM libraries in the compiler.
41 :     <p>
42 :     <LI> A new x86 fp compilation strategy.
43 :     <p>
44 :     <LI> Removal of regmaps from MLRISC.
45 :     <p>
46 :     </UL>
47 :     <hr>
48 :    
49 :     <center><h3>Bug fixes </h3></center>
50 :     <ul>
51 :     <li> 1514. sockets c-library broken
52 :     <p>
53 :     <li> 1582. SysErr exception connecting to socket
54 :     <p>
55 :     <li> 1585. getpeername in sockets
56 :     <p>
57 :     </ul>
58 :    
59 :     <hr>
60 :     <center><h3>CM </h3></center>
61 :     Drastically improved link traversal code, resulting is faster load
62 :     times for CM and CMB.
63 :     <p>
64 :     Changed CM tool-plugin mechanism. See new manual
65 :     <p>
66 :     Made pickle-lib.cm and eliminated use of comp-lib.cm
67 :     <p>
68 :    
69 :     <hr>
70 :    
71 :     <center><h3>SML/NJ Library </h3></center>
72 :     Fixed "where" clause to GraphSCCFn.
73 :     <hr>
74 :     <center><h3>MLRISC </h3></center>
75 :     <h4>Intel x86 floating point </h4>
76 :     As of 110.31, there is an alternative floating point code generator
77 :     and register allocator for the x86. Since this is still experimental,
78 :     by default this is turned off. To turn this on, do:
79 :    
80 :     <pre>
81 :     CM.autoload "$smlnj/compiler.cm";
82 :     Compiler.Control.MLRISC.getFlag "x86-fast-fp" := true;
83 :     </pre>
84 :    
85 :     The new floating point code generator treats the x86 fp stack as
86 :     7 registers, plus one temporary, and directly allocates floating point
87 :     values into these registers.
88 :     Currently, fp parameter passing is still
89 :     done through memory, so the new code generator only benefits floating
90 :     point heavy loops. However, code compiled under the old and new
91 :     code generator can coexist. The algorithm is described in
92 :     <a href=http://cm.bell-labs.com/cm/cs/what/smlnj/compiler-notes/x86-fp.ps>
93 :     this paper</a>.
94 :     <p>
95 :     We compared Version 110.30 compiling the PCLubIN entry in the
96 :     ICFP'00 programming context.
97 :    
98 :     <pre>
99 :     110.30 new fp Speedup
100 :     (ICFP00, PCLubIN)
101 :     chess.gml 22.16 20.98 5.63%
102 :     cone-fractal.gml 5.70 5.45 4.51%
103 :     cylinder.gml 1.61 1.58 2.28%
104 :     dice.gml 7.33 6.88 6.57%
105 :     ellipsoid.gml 1.35 1.30 4.16%
106 :     fov.gml 2.63 2.51 4.70%
107 :     Fractal.gml 42.08 41.03 2.56%
108 :     golf.gml 3.09 2.95 4.75%
109 :     holes.gml 3.72 3.50 6.40%
110 :     house.gml 1.41 1.33 5.71%
111 :     intercyl.gml 3.02 2.78 8.41%
112 :     large.gml 8.01 7.81 2.64%
113 :     pipe.gml 6.35 5.78 10.01%
114 :     snowgoon.gml 4.70 4.31 8.95%
115 :     spheres.gml 1.26 1.17 6.98%
116 :     spotlight.gml 0.71 0.68 4.69%
117 :     </pre>
118 :    
119 :     By inlining Array2 in the same benchmark we get the following results:
120 :    
121 :     <pre>
122 :     110.30 new fp Speedup
123 :     chess.gml 21.85s 21.46s 1.83%
124 :     cone-fractal.gml 5.82s 5.47s 6.28%
125 :     cylinder.gml 1.57s 1.61s -2.85%
126 :     dice.gml 7.57s 6.85s 10.50%
127 :     ellipsoid.gml 1.33s 1.25s 6.74%
128 :     fov.gml 2.75s 2.57s 7.01%
129 :     fractal.gml 22.64s 21.52s 5.20%
130 :     golf.gml 3.04s 2.92s 4.25%
131 :     holes.gml 3.66s 3.48s 5.11%
132 :     house.gml 1.39s 1.29s 7.74%
133 :     intercyl.gml 3.00s 2.78s 7.91%
134 :     large.gml 7.91s 7.82s 1.13%
135 :     pipe.gml 6.44s 5.65s 13.98%
136 :     snowgoon.gml 4.75s 4.29s 10.53%
137 :     spheres.gml 1.22s 1.12s 8.36%
138 :     spotlight.gml 0.71s 0.68s 5.62%
139 :     </pre>
140 :    
141 :     Results from other benchmarks:
142 :     <pre>
143 :     barnes-hut 1.714 1.696 1.0%
144 :     fft 0.954 0.906 5.2%
145 :     mandelbrot 19.91 14.99 32.8%
146 :     matrix-multiply(a) 47.77 45.81 4.3%
147 :     matrix-multiply(b) 17.04 15.42 10.5%
148 :     simple 3.02 2.69 12.3%
149 :     tsp 1.75 1.656 5.6%
150 :     </pre>
151 :     NOTE: Matrix multiply(b) has all bounds checking removed.
152 :    
153 :     Each test is run 10 times and I take the average.
154 :    
155 :     Overall, the numbers do not improve as much as I was hoping, except for
156 :     mandelbrot. The following benchmarks compare smlnj with mlton and C:
157 :    
158 :     <pre>
159 :     mandelbrot fft barnes-hut
160 :     sml/nj 110.30 19.91 0.96 1.71
161 :     sml/nj new fp 14.99 0.90 1.71
162 :     gcc -O 14.83
163 :     gcc -O6 14.01 0.68
164 :     mlton -O6 17.46 1.04 1.62
165 :     (version 200000906)
166 :     </pre>
167 :    
168 :     <h4>Internal <tt> regmap</tt> Changes </h4>
169 :     <ol>
170 :     <p><li> Changed interface to <tt>CELLS</tt> and the type of <tt>cell</tt>, <tt>cellkind</tt>, <tt>cellset</tt> etc.
171 :    
172 :     <p><li> No more regmaps!! The attributes of cells, including its current color,
173 :     are accessible from <tt>CELLS</tt> interface. Cells can now take arbitrary
174 :     annotations. [They will also have a width attribute in the next
175 :     go around.]
176 :    
177 :     <p><li> Interface of <tt>STREAM</tt> etc have changed (again, no more regmap).
178 :    
179 :     <p><li> Some MLTREE constructors, like <tt>IF</tt>, <tt>BCC</tt>, <tt>JMP</tt>, <tt>CALL</tt>, etc have
180 :     been simplified. <tt>CVTI2I</tt> has been renamed into <tt>SX</tt> and <tt>ZX</tt> respectively,
181 :     following the lambda rtl convention.
182 :    
183 :     <p><li> The old RA interface was getting too complicated. There are now
184 :     two functors, <tt>RISC_RA</tt> (in ra/risc_ra.sml) and <tt>X86RA</tt> (in x86/ra/x86RA.sml)
185 :     which abstract out from all the ugly business. The first is for
186 :     RISC machines, and the second is for x86. Please let us know if you
187 :     use these functors.
188 :    
189 :     <p><li> The cell change broke the peephole phases, because they used to
190 :     pattern match on specific cell number. I (Allen) hacked up a simple
191 :     tool to translate fake SML with where clauses into real ML. This makes
192 :     it much easier to write the rules. Seems to work. (See Tools/WhereGen)
193 :     </ol>
194 :    
195 :     <hr>
196 :    
197 :     <font size=-2>
198 :     <address><a href="mailto:george@research.bell-labs.com">
199 :     Lal George</a></address>
200 :     <!-- Created: Thu Aug 6 00:13:09 EDT 1998 -->
201 :     <!-- hhmts start -->
202 :     Last modified: Fri Dec 8 15:15:08 EST 2000
203 :     <!-- hhmts end -->
204 :     </font>
205 :     </blockquote>
206 :     </body>
207 :     </html>

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