|
|
x86 Open64 Compiler Suite
Home > Tools > x86 Open64 Compiler Suite
|
Overview
The x86 Open64 compiler system is a high performance, production quality code generation tool designed for high performance parallel computing workloads. The x86 Open64 environment provides the developer the essential choices when building and optimizing C, C++, and Fortran applications targeting 32-bit and 64-bit Linux platforms.
The x86 Open64 compiler system offers a high level of advanced optimizations, multi-threading, and processor support that includes global optimization, vectorization, interprocedural analysis, feedback directed optimizations, loop transformations, and code generation which extracts the optimal performance from each x86 processor core.
The x86 Open64 Compiler Suite simplifies and accelerates development and tuning for x86, AMD64 (AMD® x86-64 Architecture), and Intel64 (Intel® x86-64 Architecture) applications. The x86 Open64 compilers create a strong foundation for building robust, high performance parallel code through MPI, OpenMP®, and auto-parallelization along with highly optimized libraries*.
* See Release Notes regarding parallel code generation
What is new in v4.5.1
- Incremental improvements to optimizer and code generation
- Improved performance and functionality of multi-media intrinsic
- Preview into advanced vectorization capability
- Preview into FMA3 support.
- Many bug fixes.
- Merged sources from the latest Open64.net community release, Open64 v5.0
- Extended platform support, including RHEL 6.2
Features
The x86 Open64 Compiler Suite provides the following features to help you generate high-performance multi-threaded applications for multi-core platforms.
- Extended proactive loop optimizations for improved loop-fusion, if-merging, loop-unswitching, loop-interchange and if-condition pre-computation.
- Added support for partial vectorization(simdization). You can enable this using the flag -LNO:simd=3
- Added new peep-hole optimizations including improve sign extension codes, register, usage etc.
- Improvements to dispatch scheduling in terms of alignment, padding, instruction size etc. You can enable this using the flag -CG:dsched
- Improved performance of certain class of intrinsic such as mm_set* through better handling of CONSTRUCTORs and CONSTs
- Added support to unconditionally generate non-temporal stores.
- General correctness improvements including bug fixes for problems in handling BOZ constants, constant folding in Fortran data statements, better handling of floating point rules, handling complex division overflows etc.
- Preview into FMA3 support. You can enable this using either the -march=bdver2 or -mfma flags
|
AMD x86 Open64 Team Insights
This video features AMD’s Open64 Compiler Team talking about Open64 origins, unique features of this compiler, such as multi-core scalability optimizations and other important optimization flags you should not miss such as loop nest optimizations (LNO), and interprocedural analysis (IPA) to name a few. Many thanks to the team for giving us this insight directly! (14:23)
|
| Language Standards |
Platform Highlights |
- ANSI C99, ISO C++98
- Conforms to ISO/IEC 9899: 1999, Programming Languages - C standard
- Conforms to ISO/IEC 14882:1998(E), Programming Languages - C++ standard
- Fortran 77, 90, 95
- Conforms to ISO/IEC 1539-1: 1997 Programming Languages - Fortran
- Inter-language calling
- IEEE 754 floating point support
|
- x86 32-bit and x86 64-bit code generation
- Large File support on 32-bit systems
- Byte-swapping I/O
- Vector and scalar SSE/SSE2/SSE3/SSE4.1/SSE4.2/AVX/XOP/FMA4/FMA3 code generation
- OpenMP 2.5 for shared memory models
- MPICH2/OpenMPI for distributed and shared memory models
- Optimized AMD Core Math Library (ACML)
|
|
Optimization Highlights
|
- Global optimizations, e.g.
- Partial redundancy elimination
- Constant propagation and code motion
- Strength reduction and expression simplification
- Dead code elimination and common sub-expression elimination
- Loop-nest optimizations
(enabled with '-O3'), e.g.
- Loop fusion and distribution
- Loop interchange and cache locality optimization
- Vectorization for SSE* and AVX code generation
- Software data pre-fetching
- Code generation and optimizations, e.g.
- Advanced register allocation
- Loop unrolling
- Instruction selection and scheduling
- Peephole optimizations
- Feedback-directed optimizations
(enabled with ‘-fb_create/-fb_opt’), e.g.
- Code layout
- Feedback-directed function inlining and de-virtualization
- Feedback-guided register spilling
- Value specialization
- Inter-procedural analysis and optimization
(enabled with '-ipa'), e.g.
- Function inlining and cloning
- Inter-procedural alias analysis
- Data re-layout optimizations for structure members
- Inter-procedural constant propagation and dead code elimination
- Multi-core scalability optimizations (enabled with ‘-mso’)
|
Documentation
Support
AMD offers specialized support to the application developers and users throughout the development and test cycle of their applications. Support is available via the following mechanisms:
If you do not find what you need above, AMD’s Technical Support is available to x86 Open64 customers. Registration is required. AMD is committed to providing timely technical support to customers using the x86 Open64 compiler to develop or port applications to AMD platforms within an enterprise Linux® environment.
The AMD Developer Central Help Request system is an interactive web site allowing AMD x86 Open64 customers to submit questions, issues, feature requests, and other technical service requests or monitor status of a previously submitted service request
The AMD x86 Open64 Technical Support Service and AMD Service Level Agreement describe the services, priorities, responsibilities, and other terms.
Related Resources
Open64 is an open source, optimizing compiler for x86-32 and x86-64 architectures as well as many other micro-architectures. It derives from the Silicon Graphics, Inc. compilers for the MIPS processor, called MIPSPro. It was released under the GNU GPL in 2000. Open64 supports C/C++ and Fortran 77/95, as well as the shared memory programming model OpenMP. The compiler can perform high-quality interprocedural analysis, data-flow analysis, data dependence analysis, and array region analysis.
Open64 leverages many aspects from the GNU Compiler Collection (GCC). Built within the Open64 framework is the gcc/g++ front-end which augments the gnu-compatibility of the Open64 compiler system. The Open64 compiler also relies on the GNU collection of binary tools (i.e. binutils) and C Library (i.e. glibc).
- For more information regarding the GNU preprocessors and binutils, visit GNU.org.
Downloads
The x86 Open64 Compilers for Linux provides C, C++, and Fortran development tools. In addition to the software download, you can obtain Technical Support on installation, usage, configuration, and application development advice.
Note: Please read the Installation Prerequisites and Guidelines which provides instructions on how to configure your environment and install the x86 Open64 compilers.
MD5s
|
|