Sun Studio (software)
Encyclopedia
The Oracle Solaris Studio compiler suite is Oracle
's flagship software development product for Solaris and Linux
. It was formerly known as Sun Studio. The Oracle Solaris Studio software delivers optimizing C, C++, and Fortran compilers, libraries, and performance analysis, and debugging tools for the Solaris OS on SPARC, and both Solaris and Linux on x86/x64 platforms, including multi-core systems.
The Solaris Studio software suite is downloadable at no charge from the Solaris Studio download website.
Previous names of this product include Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers.
Compiler Optimizations
A common optimizing backend is used for code generation.
A high-level intermediate representation called Sun IR is used, and high-level optimizations done in the iropt (intermediate representation optimizer) component are operated at the Sun IR level. Major optimization
s include:
shared memory parallelization API is native to all three Solaris Studio compilers.
's front end and the Sun Studio compiler's code-generating back end. Thus, gccfss is able to handle gcc-specific compiler directives, while it is also able to take advantage of the compiler optimizations in the Sun Studio compiler's back end. This greatly facilitates the porting of GCC-based applications to SPARC systems.
gccfss 4.2 adds a new functionality as a cross compiler
; SPARC binaries can be generated on an x86 (or x64) machine running Solaris.
would have been the first general-purpose processor to support hardware transactional memory (HTM), the Sun Studio compiler is used by a number of research projects, including Hybrid Transactional Memory (HyTM) and Phased Transactional Memory (PhTM) , to investigate support and possible HTM optimizations.
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...
's flagship software development product for Solaris and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
. It was formerly known as Sun Studio. The Oracle Solaris Studio software delivers optimizing C, C++, and Fortran compilers, libraries, and performance analysis, and debugging tools for the Solaris OS on SPARC, and both Solaris and Linux on x86/x64 platforms, including multi-core systems.
The Solaris Studio software suite is downloadable at no charge from the Solaris Studio download website.
Previous names of this product include Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers.
Components
Oracle Solaris Studio is a suite of software products that includes:- C, C++, and Fortran compilers and support libraries;
- DBX and frontends;
- lint;
- IDE based on NetBeansNetBeansNetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...
; - Performance analyzer;
- Thread analyzer;
- Sun performance library;
- Distributed make.
Compiler OptimizationsCompiler optimizationCompiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...
A common optimizing backend is used for code generation.A high-level intermediate representation called Sun IR is used, and high-level optimizations done in the iropt (intermediate representation optimizer) component are operated at the Sun IR level. Major optimization
Compiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...
s include:
- Copy propagationCopy propagationIn compiler theory, copy propagation is the process of replacing the occurrences of targets of direct assignments with their values. A direct assignment is an instruction of the form x = y, which simply assigns the value of y to x.From the following code:...
- Constant foldingConstant foldingConstant folding and constant propagation are related compiler optimizations used by many modern compilers. An advanced form of constant propagation known as sparse conditional constant propagation can more accurately propagate constants and simultaneously remove dead code.- Constant folding...
and constant propagation - Dead code eliminationDead code eliminationIn compiler theory, dead code elimination is a compiler optimization to remove code which does not affect the program results. Removing such code has two benefits: it shrinks program size, an important...
- Interprocedural analysisInterprocedural optimizationInterprocedural optimization is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length...
- Loop optimizationLoop optimizationIn compiler theory, loop optimization plays an important role in improving cache performance, making effective use of parallel processing capabilities, and reducing overheads associated with executing loops. Most execution time of a scientific program is spent on loops...
s - ParallelizationAutomatic parallelizationAutomatic parallelization, also auto parallelization, autoparallelization, or parallelization, the last one of which implies automation when used in context, refers to converting sequential code into multi-threaded or vectorized code in order to utilize multiple processors simultaneously in a...
- Profile-guided optimizationProfile-guided optimizationProfile-guided optimization is a compiler optimization technique in computer programming to improve program runtime performance. In contrast to traditional optimization techniques that solely use the source code, PGO uses the results of test runs of the instrumented program to optimize the final...
- Scalar replacement
- Strength reductionStrength reductionStrength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations. The classic example of strength reduction converts "strong" multiplications inside a loop into "weaker" additions – something that frequently occurs in array...
- vectorization (with
-xvector=simd
)
OpenMP
The OpenMPOpenMP
OpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...
shared memory parallelization API is native to all three Solaris Studio compilers.
gccfss
The gccfss (GCC for SPARC Systems) compiler uses gccGNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
's front end and the Sun Studio compiler's code-generating back end. Thus, gccfss is able to handle gcc-specific compiler directives, while it is also able to take advantage of the compiler optimizations in the Sun Studio compiler's back end. This greatly facilitates the porting of GCC-based applications to SPARC systems.
gccfss 4.2 adds a new functionality as a cross compiler
Cross compiler
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run. Cross compiler tools are used to generate executables for embedded system or multiple platforms. It is used to compile for a platform upon which it is not feasible to...
; SPARC binaries can be generated on an x86 (or x64) machine running Solaris.
Research platform
Before it's cancellation, the Rock processorRock processor
Rock was a multithreading, multicore, SPARC microprocessor developed at Sun Microsystems. Now canceled, it was a separate development from the CoolThreads/Niagara family of processors....
would have been the first general-purpose processor to support hardware transactional memory (HTM), the Sun Studio compiler is used by a number of research projects, including Hybrid Transactional Memory (HyTM) and Phased Transactional Memory (PhTM) , to investigate support and possible HTM optimizations.
External links
- Sun Studio home page on Sun Developer Network
- Cool Tools - GCC for SPARC Systems
- Sun Studio Forums
- Application Performance Tuning on Sun Platform
- Developer Support Services from Sun Microsystems
- Sun Studio Wiki Pages
- Sun Studio Release History
- downloads/index-jsp-141149.html Download Sun Studio