Current Features
- Initial merged version with Open64 4.0 http://www.open64.net NEW
- Support IA-64, x86, and x86_64 backends NEW
- OpenMP 2.5 in conjunction with C, Fortran 77/90/95 NEW
- Support GCC 3.3 and 4.0 frontends NEW
- Selective instrumentation to reduce overheads NEW
- -pfmp and -pfmap flags for OpenMP performance dataNEW
- Bug Fixes from previous versions NEW
- Improved C++ front end
- OpenMP 2.0 Integration
- Autoscoping to verify the data scope of variables
- API for Compiler Instrumentation support for profiling and tracing
- Extensions to Open64 features, analyses and optimizations including Interprocedural Analysis(IPA), Loop Nest Optimizer (LNO), Auto-Parallelizer (APO), global optimizer (WOPT), and Code Generator (CG).
- A novel call graph algorithm that provides exact call chain information.
- The Dragon tool for browsing an application's source code, callgraph, flow graph, profile information and more. On IA-64 platforms, feedback on the runtime behavior of a program is provided via Dragon.
- Main target is Intel Itanium 1 and 2 systems with Linux.
- Most features are portable via recreation of compilable code and the use of a native Fortran (77) or C compiler. The compiler's run-time library is portable. In particular, this enables OpenMP and Fortran90 functionality to be used on non-Itanium platforms.
- OpenMP functionality tested via OpenMP C and Fortran validation suite, NPB 2.3, NPB 3.2 and a subset of SPEC OMPM2001.
- Cray Fortran90 front end extended to support Program Database Toolkit (PDT).
- The compiler version that is integrated with Eclipse/PTP for IA-64 platforms includes additional functionality to support the creation of OpenMP programs.
Limitations
We support three backends: IA-64, x86, and x86_64. In order to generate code for other platforms, you should follow instructions to generate optimized, but compilable, C or Fortran code with calls to our portable run-time library. It can then be compiled by a native compiler for the corresponding system.
- Feedback on the runtime behavior of programs via Dragon is currently only available on Itanium platforms.
- On some programs, the combination of -O3 and -IPA compiler flags causes the compiler to crash. If this occurs, you may need to use -O2 and -IPA or some other combination of flags.
- In Dragon displays, the mapping of information to source code is not always accurate for C++ applications.
- The compiler does not yet support nested parallelism in OpenMP programs.
Problems and Workarounds
We have worked hard to test the compiler and have fixed many bugs in preparation for this release. However, we are still working on several known bugs and will release patches in the near future to address as many of them as possible. For this reason it is important that we know how to contact you. A full list of bugs is available via our bug tracking system. Here are the major current problems.
- There are a few known problems when recreating C code for non-Itanium systems:
- When multidimensional arrays are passed as parameters to functions, the translation is sometimes faulty. You may have to modify the generated code manually.
- Some complex pointer and structure references are incorrectly translated.
- The combination of O3 and IPA flags occasionally does not work.
- When creating compilable code for non-Itanium platforms, some of a C application's .h header files are omitted. It is necessary to manually insert the missing files into *.w2c.c.
- The process of recreation of Fortran code for non-Itanium platforms is still buggy. We expect to significantly upgrade this feature by the end of the year.
- There a few known problems when translating OpenMP directives:
- The COPYPRIVATE directive in OpenMP is not yet supported.
- The compiler translates ATOMIC updates to CRITICAL regions for portability. This may negatively impact the performance of some programs.