-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrelease_notes.txt
537 lines (238 loc) · 13.1 KB
/
release_notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
Open64 Compiler Version 4.0 Release Notes
June 13, 2007
1. Overview
2. New Features
2.1 Front End New Features
2.2 Back End New Features
3. The Packages of the Compiler Suite
4. Installing the Compiler Suite
4.1 Install from bz2 Package
4.2 Install from RPM packages
5. Build the compiler Suite - directly from source
4.1 Prerequisites
4.2 Build Steps
4.3 Build Fortran Front-End
4.4 Some Notes on Build
6. Bug Reporting
7. Known Problems, Limitation and Some Notes
8. Credits
1. Overview
=============
The objective of the Osprey project is to bring the Open64 compiler
to that of a production quality compiler and catch up wit the GCC/G++
features evolution. In this release, we introduce a new GCC 4.0.2 based
front end to make the compiler compatible both with GCC 3.x and 4.x.
Also, we integrate Pathscale's code generator for x86_64. With the x86_64
code generator, the compiler can not only generate code for IA64, but also
for IA32/x86_64. Most importantly, the source code of all previous archives
are merged into one subversion tree and it is readily available for
researchers and developers to join the development and incrementally
check in changes. The website for that is
http://www.open64.net/
The release consists of two kinds of packages: a suite of pre-built
compiler binaries including C, C++, F95 and related archives, and
a suite of corresponding compiler source codes. The pre-built compilers
are build using a self-build bootstrap process. They are provided both in
.bz2 and RPM packages.
We will aggressively continue to update the GCC/G++ front end to the
latest version after this release. Another important focus after this
release is further performance improvement in the HPC area. We are
looking forward for collaboration from the open source community for
this effort. The SVN source control and Bugzilla system are built up
to facilitate this. Our checkin testing will be continuously improved
to achieve the "checkin early and checkin fast with little to no
impact to overall quality" development environment.
For a more detailed description of our kernel boot work-arounds and
procedure, our performance comparison numbers, please send mail to
http://sourceforge.net/projects/open64.
2. New Features
2.1 Front End New Features
-------------------
In this release, the compiler contains two different GCC based front-ends.
One is based on the GCC 3.3.1, which is compatible with GCC 3.x and the
other is based on the GCC 4.0.2, which is compatible with GCC 4.x.
The new GCC 4.0.2 based front end has better C++ ABI support than the
GCC 3.3.1 based front end.
The driver of the compiler will determine which front end should be used
based on the version of GCC is installed on the system. If the first gcc
found in the $PATH is GCC 4.x, the GCC 4.0.2 based front end will be invoked.
Otherwise, the GCC 3.3.1 based front end will be used.
To force using GCC 3.3.1 or GCC 4.0.2 based front end, please add
'-gnu3' or '-gnu4' to the command line, respectively.
2.2 Back End New Features
-------------------
In this release, we integrate Pathscale's code generator for x86_64 into
the compiler. Now, the compiler can generate code not only for Itanium, but
also for x86_64/ia32. We have tested the back end at -O0/-O2/-O3.
The PBO (Profile-Based Optimization) and ipa (Inter-Procedure
Analysis/Optimization) is not tested heavily yet. They may not work on both
Itanium and x86_64/IA32.
3. The Packages of the Compiler Suite
======================================
This compiler is available in both in binary and source-code form for
different target machines.
o: open64-4.0-0.src.tar.bz2
This package contains all compiler's source code. it's machine independent.
o:open64-4.0-0.ia64.tar.bz2
This package contains all the binary code for ia64 machine including
prebuilt library. The compiler is built on an Itanium2 based system with
kernel 2.6.9 and glibc 2.3.4. The OS is RHEL4 for IA64. The GCC version
is 3.4.5. The compiler is built twice for releasing. The first stage
is built by 'gcc -O0', the we use the compiler built in the first stage
to build the release compiler by 'opencc -O2'. The libraries is built
by the release compiler.
o:open64-4.0-0.i386.tar.bz2, open64-4.0-0.x86_64.tar.bz2
These two package are the same, contain all the binary code for i386 and
x86_64 machine. The compiler is built on an x86_64 based system with
kernel 2.6.9 and glibc 2.3.4. The OS is RHEL4 for x86_64. We upgrade the
GCC version to 4.1.2. The compiler is built by 'gcc -O2'. The 64-bit and
32-bit libraries are built on the same system by the Open64 compiler itself.
o:open64-4.0-0.i386.rpm, open64-4.0-0.x86_64.rpm, open64-4.0-0.ia64.rpm
these three packages are binaries rpm for different machine. The binaries
are the same in both bz2 and rpm packages. It's more easy to install the
compiler from the rpm.
4. Installing the Compiler Suite
=================================
4.1 Install from bz2 Package
-------------------
Before installing the compiler, the environment variable $TOOLROOT
should be set properly. As the name suggests, this variable specifies
the root of the installation hierarchy. You can set it to anywhere
you have write permission. For example, in GNU BASH this may be done
with the following command: may set this variable by adding this
command to the $HOME/.bash_profile file:
export TOOLROOT=$HOME/mycompiler
After that, run 'source $HOME/.bash_profile' to make the change effective
Now, to complete the installation:
o. expand open64-4.0-0-ia64.tar.gz with the command:
tar zxvf open64-4.0-0-ia64.tar.gz
o. Run script 'INSTALL.sh'
The C, C++, Fortran compilers are now available in folder
$TOOLROOT/bin. They are opencc, openCC, openf90 respectively.
4.2 Install from RPM Package
-------------------
To install the compiler from rpm:
$ rpm -ivh open64-4.0-0.ia64.rpm
This command will install the Open64 compiler to /opt/open64. The C, C++,
Fortran compilers are in folder /opt/open64/bin.
To install the compiler to another location:
$ rpm --prefix=/path/to/folder -ivh open64-4.0-0.ia64.rpm
Then the compiler will be installed to /path/to/folder
5. Build the compiler Suite - directly from source
====================================================
If you choose to build the compiler suite from the source tar ball,
follow the steps outlined below.
5.1 Prerequisites
-------------------
In order to compile Open64 successfully, your system should meet the
following requirements:
o.Linux OS on IA64/ix86/x86_64
Open64 as well as its variants have been successfully built on many Unix
variants and Unix-like systems. This release has only been tested extensively
on IA64/ix86/x86_64 running Linux operating systems. If you are going to
build it on any platform other than Linux on IA64/ix86/x86_64, you may need
to make some minor changes to the source code.
o.GNU Compiler Collection
Currently, GCC 3.3.x through 4.1.x are supported. GCC 4.1.x is preferred.
o.A open64 binary for building the Fortran Front End
you can just download the Open64 binary for system and install it to
some place and make sure that openf90 is in your PATH before building
the Fortran front end.
5.2 Build Steps
-------------------
Follow these steps to build the compiler:
Step 1. Expand the source tarball
After that, the whole source hierarchy will be in directory rooted at
open64-4.0-0/. Change working directory to open64-4.0-0/.
Step 2. Build the compiler components by simply invoking command:
make or make V=1(V=1 will show all the building information)
If you want to build a debuggable compiler, use this command instead:
make BUILD_OPTIMIZE=DEBUG
note that, if you type "make", it will only build the compiler's source
code by default it won't build the prebuilt library. if you want to
build it by yourself, type
make library
The defaut Fortran compiler in source code is openf90. If the openf90 is
not in the PATH, the Fortran front end will not be built. During the
installation, the prebuilt version will be picked up. Then, we can use
it to build the Fortran front end again.
Developers may find this command handy in building individual component,
say wopt.so:
make BUILD_OPTIMIZE=DEBUG wopt.so
step 3. set environment variable TOOLROOT to anywhere you have write
permission as detailed in section 3.
If you do not want to use $TOOLROOT, just skip this step.
step 4. call 'make install' or 'install_compiler.sh' to install
all compiler components and archives.
If $TOOLROOT is set, the compiler will be installed to that folder.
Otherwise, a path will be prompted.
The C, C++, Fortran compilers are now available in folder
$TOOLROOT/bin/ They are opencc, openCC, openf90 respectively.
5.3.Build Fortran Front-End
-------------------------------
The Fortran front-end executable is provided in both
binary and source packages. Normally, you need *NOT* to build it by yourself.
If you are going to build one, make sure that an Openf90 is already in
your $PATH(you need to download a binary form and install it somewhere).
then just type:
make mfef95.
the makefile will use a pre-hand openf90 to build the new mfef95 for you.
5.4 Some Notes on Build
--------------------------
o.The compiler is built with flag '-Werror' which treats warnings as error.
If the build process terminates due to warnings, you can get around this
with:
make ... ERROR_ON_WARNINGS="" ...
i.e. simply repeat the make process with ERROR_ON_WARNINGS="".
o.GNU Make utility version 3.81 is shipped with many of the latest Linux
distributions. Building the compiler suite with it may cause some weird
complaints pertaining to dependent files don't exist (they are actually
there). You can ignore those complaints, and repeat the make command to
continue.
6. Bug Reporting
==================
You are WELCOME to report bugs. The bugs tracked at
http://bugs.open64.net/. Bug reports should include these items in
order to be reproduced:
o. the compiler release version;
o. system details -- the OS, libc etc;
o. the compilation flags that trigger the bug;
o. the test file if applicable (it is highly appreciated if the test file
is minimized);
o. the correct output of the test file.
7. Known Problems, Limitation and Some Notes
==============================================
o. Due to limited resources, the archives shipped with this compiler may
not be built successfully from the source. 'make library' may not work
correctly.
o. libmsgi.a in prebuilt library didn't work very well, so the compiler won't
link it by default.
o. we can bootstrap the compiler on ia64, but may meet error at x8664 if the
first stage compiler is built by gcc3.x
o. Currently, we build the compiler *ONLY* on Linux/IA64, x86_64, i386.
'make cross' is supposed to be used to build the cross compiler on
Linux/IA32 systems targeting IA64. However, we have not tested this
thoroughly.
o. The perlbmk benchmark in CPU2006 suite may not run successfully without
some changes to its source code. It is *NOT* an Open64 bug. The problem is
with the perlbmk benchmark itself. Please check the bug-81
(https://bugs.open64.net/) for details. This problem can be solved by
deleting following lines from file spec_config.h (of perlbmk benchmark):
1172 #undef HASATTRIBUTE
1173 #ifndef HASATTRIBUTE
1174 #define __attribute__(_arg_)
1175 #endif
o. IPA and PBO option is not support very well in this release. See the
bugzillar or detail bug information about IPA and Feedback.
o. A full list of known bugs can be found in our bug database. You can visit
http://bugs.open64.net
to view them.
8. Credits
============
This project is led by Shin-Ming Liu at HP Inc. It is the result of
partnership between Tsinghua University, Institute of Computing
Technology at the Chinese Academy of Science, CAPSL research laboratory
at the University of Delaware, and Hewlett-Packard, Inc.
We'd also like to acknowledge the contributions of QLogic Inc
(formerly PathScale Inc.), Google Inc, Paul Yuan at Peking University
and Sun Chan at SimpLight Nanoelectronics.