Oracle® Solaris Studio 12.4: Fortran User's Guide

Exit Print View

Updated: March 2015
 
 

Features Release History

This Appendix lists the new and changed features in this release and recent releases of the Fortran compiler.

B.1 Oracle Solaris Studio 12.4 Fortran Release

The Oracle Solaris Studio Fortran 95 compiler version 8.7 is a component of the Oracle Solaris Studio 12.4 release.

  • New -xarch, -xchip, and -xtarget values for Intel Ivy Bridge processor on x86.

  • New -xarch, -xchip, and -xtarget values for SPARC T5, M5, M6, and M10+ processors.

  • Support for Ivy Bridge assembler instructions.

  • Support for Ivy Bridge intrinsic functions, which can be found in solstudio-install-dir/lib/compilers/include/cc/immintrin.h.

  • Default value for -xarch=generic set to sse2 for -m32 on x86.

  • Support for -xlinkopt on x86. Inter-module, inter-procedural code ordering optimizations for large enterprise applications tuned for modern Intel processors. An up to 5% performance boost over a fully optimized binary can be seen for large applications.

  • Enhanced -xs option to control the trade-off of executable size versus the need to retain object files in order to debug.

  • Support for -xanalyze and -xannotate on Linux.

  • Support for -fopenmp as a synonym for -xopenmp=parallel.

  • Compile time for applications using modules is substantially improved and memory overflows due to module processing are eliminated.

  • #pragma ident can be used in a source file to identify the source version of the compiled object.

  • Support for a deferred type parameter (colon) as the LEN type parameter in a character type used in a declaration. For example:

    character(LEN=:), pointer :: str
  • Support for procedure pointer.

  • Support for the C_F_PROCPOINTER function in the Fortran 2003 standard for the ISO_C_BINDING module. The C_FUNLOC function is extended to allow procedure pointer as argument.

  • Support for the Fortran 2003 feature for ABSTRACT interface.

  • Full support for object-oriented Fortran. Typebound procedures with the GENERIC, DEFERRED, NON_OVERRIDABLE, PASS, and NOPASS attributes are now allowed.

  • Support for the Fortran 2003 feature to enable derived type and generic function to have the same name.

  • Support for the Fortran 2008 feature to enable passing TARGET objects to INTENT(IN) pointer dummies.

  • Support for the Fortran 2003 feature to allow finalizing routines in derived types.

  • New compiler options:

    • -fma enables automatic generation of floating-point fused multiply-add instructions.

    • -fserialio specifies that the program does not perform I/O in more than one thread at a time.

    • (x86) -preserve_argvalues saves copies of register-based function arguments in the stack.

    • -xdebuginfo controls how much debugging and observability information is emitted.

    • -xglobalize controls globalization of file static variables but not functions.

    • -xinline_param allows for changing the heuristics used by the compiler for deciding when to inline a function call.

    • -xinline_report generates a report written to standard output on the inlining of functions by the compiler.

    • -xipo_build reduces compile time by avoiding optimizations during the initial pass through the compiler, optimizing only at link time.

    • -xkeep_unref keeps definitions of unreferenced functions and variables.

    • -keepmod retains a module which is not changed when compiled. The default is -xkeepmod=yes, which replaces the old behavior when a new module file is created each time even without any changes from the previous compilation.

    • -xM generates makefile dependency automatically. In conjunction with the new -keepmod=yes option, it allows the most optimal incremental build on Fortran application using modules.

    • -xpatchpadding reserves an area of memory before the start of each function.

    • (Oracle Solaris) -xsegment_align causes the driver to include a special mapfile on the link line.

    • -xthroughput indicates that the application will be run in situations where many processes are simultaneously running on the system.

    • -xunboundsym specifies whether the program contains references to dynamically bound symbols.

  • The libraries libfmaxlai, libfmaxvai, libfminlai, libfminvai, libfprodai and libfsumai on SPARC platform have not been used by the Studio Fortran compilers since the Sun Studio 10 release in 2005.

    These libraries will be removed in a future release. At that point, object files and executables produced by Studio compilers earlier than the Sun Studio 10 release can no longer be used and must be recompiled with newer Studio compilers. If you have old object files and executables that require any of these libraries and recompiling is not feasible, you should keep the old compiler installation or copy the specific libraries you need from the old compiler installation into the new compiler installation.

B.2 Oracle Solaris Studio 12.3 Fortran Release

The Oracle Solaris Studio Fortran 95 compiler version 8.6 is a component of the Oracle Solaris Studio 12.3 release.

  • The Fortran runtime library now supports sequential-access unformatted records larger than 2GB.

  • Support for new SPARC T4 platform: —xtarget=T4, —xchip=T4, —xarch=sparc4

  • Support for new x86 Platform Sandy Bridge / AVX: —xtarget=sandybridge —xchip=sandybridge —xarch=avx

  • Support for new x86 Platform Westmere / AES: —xtarget=westmere —xchip=westmere —xarch=aes

  • New compiler option: —Xlinker arg passes argument to linker, ld(1). Equivalent to —Wl,arg. (-Xlinker arg)

  • The OpenMP default number of threads, OMP_NUM_THREADS is now 2 (was 1). (–xopenmp[={parallel|noopt|none}])

  • Support for the OpenMP 3.1 shared memory parallelization specifications. (–xopenmp[={parallel|noopt|none}])

  • Use —library=sunperf to link to the Sun Performance Library. This obsoletes -xlic_lib=sunperf. (-library=sunperf)

  • Intrinsic routines LEADZ, POPCNT, and POPPAR previously had the return type as the type of the argument. In this release, to be conforming with the Fortran 2008 standard, the intrinsics return a default integer, regardless of argument type. This introduces a minor incompatibility with previous releases.

  • Object Oriented Fortran features related to polymorphism are now supported:

    • Supported OOF features: type extension and polymorphic entities: CLASS statement, unlimited polymorphism, SELECT TYPE construct, ABSTRACT derived type, EXTENDS_TYPE_OF and SAME_TYPE_AS intrinsics, and sequence type assignments to unlimited pointers.

    • Unsupported OOF features: typebound procedures: typebound PROCEDURE declaration, GENERIC, DEFERRED, NON_OVERRIDABLE, PASS, NOPASS.

  • Other new F2003/2008 features:

    • Enhanced structure constructor: using component names to construct a structure constant.

    • Enhanced PUBLIC/PRIVATE access control on module derived types and components.

    • More Fortran 2008 math intrinsic function support. Most Fortran 2008 math intrinsic functions are now supported except for ERFC_SCALED, NORM2 and some REAL*16 variants on x86 platforms.

    • Derived types with no components.

    • The KIND argument was added to ICHAR, IACHAR, ACHAR, SHAPE, UBOUND, LBOUND, SIZE, MINLOC, MAXLOC, COUNT, LEN, LEN_TRIM, INDEX, SCAN and VERIFY intrinsics.

    • The BACK argument was added to MINLOC and MAXLOC intrinsics.

    • New intrinsics FINDLOC and STORAGE_SIZE were added.

    • New keywords ERRMSG, SOURCE and MOLD were added to ALLOCATE statement, and ERRMSG was added to DEALLOCATE statement.

B.3 Oracle Solaris Studio 12.2 Fortran Release

The Oracle Solaris Studio Fortran 95 compiler version 8.5 is a component of the Oracle Solaris Studio 12.2 release.

  • Support for the SPARC VIS3 version of the SPARC-V9 instruction set. Compiling with the -xarch=sparcvis3 option enables the compiler to use instructions from the SPARC-V9 instruction set, plus the UltraSPARC extensions, including the Visual Instruction Set (VIS) version 1.0, the UltraSPARC-III extensions, including the Visual Instruction Set (VIS) version 2.0 the fused multiply-add instructions, and the Visual Instruction Set (VIS) version 3.0.

  • The default for the -xvector option has changed on x86-based systems to -xvector=simd. Streaming extensions are used on x86-based systems by default where beneficial at optimization level 3 and above. The suboption no%simd can be used to disable it. On SPARC-based systems, the default is -xvector=%none. See -xvector[=a]

  • Support for the AMD SSE4a instruction set is now available. Compile with the -xarch=amdsse4a option.

  • The new -traceback option enables an executable to print a stack trace if a severe error occurs. This option causes the executable to trap a set of signals and print a stack trace and core dump before exiting. If multiple threads generate a signal, a stack trace will be produced only for the first one. To use traceback, add the -traceback option when linking a program with f95, cc, or CC. For convenience, the option is also accepted at compile-time but is ignored. Using the -traceback option with the -G option to create a shared library is an error. See –traceback[={%none|common|signals_list}]

  • The -mt option has been changed to -mt=yes or -mt=no. The -mt=yes option assures that libraries are linked in the appropriate order. See -mt[={yes|no}]

  • The -xprofile=tcovoption has been enhanced to support an optional profile directory pathname, and possibly the ability to generate tcov-compatible feedback data. See –xprofile=p

  • The new -xkeepframe[=[%all,%none] option prohibits stack related optimizations for the named functions. %all prohibits stack related optimizations for all the code. %none allows stack related optimizations for all the code. The default is -xkeepframe=%none. See –xkeepframe[=[%all,%none,name,no%name]]

  • Additional F2003 features have been implemented. See Fortran 200x Features

  • The IVDEP directive tells the compiler to ignore some or all loop-carried dependences on array references that it finds in a loop for purposes of optimization. This enables the compiler to perform various loop optimizations that would not be otherwise possible. The -xivdep option can be used to disable the IVDEP directives, or to determine how the directives should be interpreted. See IVDEP Directive

B.4 Sun Studio 12 Update 1 Fortran Release

  • Object files created by the compilers on the Solaris OS on x86 platforms or the Linux OS are incompatible with previous compiler versions if the application code contains functions with parameters or return values using _m128/_m64 data types. Users with .il inline function files, assembler code, or asm inline statements calling these functions also need to be aware of this incompatibility.

  • New x86 —xtarget values woodcrest, penryn, nehalem.

  • New SPARC —xtarget values ultraT2plus and sparc64vii.

  • New x86 —xarch and —xchip values ssse3, sse4_1, sse4_2, core2, penryn, nehalem, barcelona.

  • New SPARC —xarch and —xchip values sparcima, sparc64vii, and ultraT2plus.

  • The -xprofile=collect and -xprofile=use options provide improved support for profiling multi-threaded, dynamically linked applications.

  • On Solaris platforms, the -xpec[=yes|no] option generates a PEC binary that is recompilable for use with the Automatic Tuning System (ATS).

  • The -xdepend option is now implicitly enabled for optimization levels -xO3 or higher, and is no longer included in the expansion of the -fast option.

  • Support for OpenMP 3.0 tasking..

  • -xannotate[=yes|no] (SPARC platforms only) instructs the compiler to create binaries that can be transformed later by binary modification tools like binopt(1).

  • Quad precision (REAL*16) is implemented on x86 platforms. REAL*16 is 128-bit IEEE floating point.

  • The compiler normally creates temporary files in the /tmp directory. You can specify another directory by setting the TMPDIR environment variable.

  • The behavior of the cpu_time() Fortran intrinsic routine is different between Solaris and Linux platforms.

  • The Fortran 2003 IMPORT statement is implemented.

B.5 Sun Studio 12 Fortran Release

  • The Fortran compiler is now available on the following Linux (x86 and x64) distributions: SuSe Linux Enterprise Server 9 with Service Pack 3 (or later), Red Hat Enterprise Linux 4, and other Linux distributions based on the 2.6 kernel (although these are not officially supported).

  • Use -m64 to create 64-bit executables and shared libraries.

  • New flags for -xarch replace obsolete flags.

  • New values for -xtarget and -xchip provide code generation for the UltraSPARC T2 and SPARC64vi processors.

  • New flag -fma=fused to enable generation of fused multiply-add instructions on processors that support them.

  • New flag -xhwcprof enables compiler support for dataspace profiling.

  • New flag -xinstrument to enable performance analysis by the Thread Analyzer

  • -xregs=frameptr added to -fast on x86.

  • Support for interval arithmetic on Solaris x86 platform with the -xarch=sse2 and -xia options.

  • Explicit prefetch directives accepted on x86 platforms as well as SPARC platforms. (—xprefetch=explicit)

  • Default format for debugging information has changed from the "stabs" standard to the "dwarf" standard format. ( -xdebugformat=dwarf).

B.6 Sun Studio 11 Fortran Release

  • New -xmodel option:The new -xmodel option lets you specify the kernel, small, or medium memory models on the 64-bit AMD architecture. If the size of your global and static variables exceeds two gigabytes, specify -xmodel=medium. Otherwise, use the default -xmodel=small setting. See –xmodel=[small | kernel | medium].

  • The -xvector option extended for x86 SSE2 platforms:The -xvector option enables automatic generation of calls to the vector library functions and/or the generation of the SIMD (Single Instruction Multiple Data) instructions. This option now offers the expanded syntax on x86 SSE2 platforms.

  • STACKSIZE environment variable enhanced:The syntax of the STACKSIZE environment variable has been enhanced to include a units keyword.

  • -xpagesize options available on x86 platforms:Options -xpagesize, -xpagesize_heap, and -xpagesize_stack are now enabled on x86 platforms as well as SPARC. See –xpagesize=size.

  • New UltraSPARC T1 and UltraSPARC IV+ targets enabled:Values for -xarch, -xchip, -xcache, and -xtarget support new UltraSPARC processors. See –xtarget=t.