XL Fortran for AIX 8.1
User's Guide
XL Fortran Version 8.1 provides the following new features:
- The ALLOCATABLE attribute can also be used on scalar variables,
components of structures, function results, and dummy arguments.
- Dummy arguments with the POINTER attribute may now appear in
INTENT statements.
- Three intrinsic modules - IEEE_EXCEPTIONS,
IEEE_ARITHMETIC, and IEEE_FEATURES - provide support for
exceptions and IEEE arithmetic.
- The MOD intrinsic handles arguments that have the same data
type, but may have different kind type parameters.
- The INT2(A) intrinsic converts a real or integer data type
kind parameter=2.
- The SIZEOF(A) instrinsic returns the size of an argument in
bytes.
- Support for the TYPE statement, which behaves in a manner
similar to the PRINT statement. This takes effect only if the
-qport=typestmt option is specified.
- Record structures can be used as a way of declaring derived
types.
- Support for union and map functionality.
- The CACHE_ZERO, ISYNC, LIGHT_SYNC,
PREFETCH_BY_STREAM_BACKWARD, and PREFETCH_BY_STREAM_FORWARD
directives provide specific PowerPC machine instructions to the
compiler.
- The COLLAPSE directive reduces an entire array dimension to a
single element by specifying that only the element in the lower bound of an
array dimension is accessible.
- The SUBSCRIPTORDER directive rearranges the subscripts of an
array in its declaration and in all references to that array.
- Additional intrinsic procedures that extend data manipulation, such as,
data conversion, rotation, and multiplication. These include:
- FCFI (Floating Convert From Integer)
- FCTI (Floating Convert to Integer)
- FCTID (Floating-point Convert to Integer)
- FCTIDZ (Floating-point Convert to Integer Round to
Zero)
- FCTIW (Floating-point Convert to Integer)
- FCTIWZ (Floating-point Convert to Integer Round to
Zero)
- FCTIZ (Floating Convert to Integer with Rounding toward Zero)
- MTFSF (Move to FPSCR Fields)
- MTFSFI (Move to FPSCR Field Immediate)
- MULHY (Multiply High)
- ROTATELI (Rotate Left Immediate then Mask Insert)
- ROTATELM (Rotate Left then AND with Mask)
- SETFSB0 (Move to FPSCR Bit 0)
- SETFSB1 (Move to FPSCR Bit 1)
- SFTI (Store Floating Point as Integer)
- TRAP (Trap)
- The xlfutility and f_pthread 64-bit Large Data Type
(LDT) module files are provided in a new directory called:
/usr/lpp/xlf/include_64ldt
- omp_lib module provides the interfaces to run-time library
routines, general purpose lock routines, and portable timer routines to give
programmers a mechanism to query and control parallel execution environment
and detect errors at compile-time.
- The following new (or changed) options:
- -qalign=struct suboptions packed,
natural, and port specify how objects or arrays of a derived
type declared using a record structure are stored and their components are
padded.
- -qarch and -qtune can be used to target your
program to run on a particular architecture and take advantage of
machine-specific instructions that can improve performance.
- -qctyplss=arg specifies that Hollerith constants that are
used as actual arguments should be treated as integer actual
arguments.
- -qessl allows the use of ESSL routines in place of Fortran
90 intrinsic procedures.
- -qhot can now be used in a compilation unit.
- -qipa suboptions threads[=N] or nothreads
are used to run as many parallel threads as are available, or to run one
serial thread.
- -qlargepage indicates that a program, designed to execute in a
large page memory environment, can take advantage of large 16 MB pages
provided on POWER4 or better CPUs.
- -qport=hexint accomodates porting from compilers that treat
hexadecimal strings as integers.
- -qsave has suboptions that specify the default storage
class for local variables.
- -qsclk provides centisecond (the default) resolution for
the SYSTEM_CLOCK intrinsic procedure. -qsclk=micro provides
microsecond resolution.
- -qsmallstack minimizes stack usage, where possible.
- -qsmp suboptions (opt | noopt) minimize
optimizations to parallelize code.
- -qstrict can be used at any optimization level except
0.
- -qstrictieeemod causes the compiler to adhere to the draft
Fortran 2000 IEEE arithmetic rules for the IEEE_ARITHMETIC and
IEEE_EXCEPTIONS intrinsic modules.
- -qunwind preserves the default behavior for saves and restores to
volatile registers during a procedure call. -noqunwind
rearranges subprograms to minimize saves and restores.
- -qxlines specifies whether or not fixed-form lines with an
X in column 1 are compiled or treated as comments.
Support for the OpenMP Fortran API, as understood and
interpreted by IBM. The following items are new:
- The WORKSHARE directive allows parallelization of the Fortran
array syntax operation, WHERE and FORALL constructs.
- Variables that are privatized in a parallel region can be privatized again
on the enclosed work-sharing directive.
- The REDUCTION variable now allows array names.
- The COPYPRIVATE clauses broadcasts the value of a private
variable (or a pointer to a shared object) from one thread in a team to all
the other threads.
- The NUM_THREADS clause now requests that a specific number of
threads are to be used in a parallel region. It supersedes the number
of threads indicated by the OMP_SET_NUM_THREADS library routine or
the OMP_NUM_THREADS environment variable.
- The OpenMP run-time library includes two routines- OMP_GET_WTIME
and OMP_GET_WTICK that support a portable wall-clock timer.
- For the -qsmp=omp suboption, the _OPENMP C preprocessor macro is now defined
with the value 200011.
- Assumed-shape arrays are now allowed in the following scoping
clauses: PRIVATE, FIRSTPRIVATE, LASTPRIVATE,
REDUCTION, SHARED, and COPYPRIVATE.
- A restriction has been added to the REDUCTION clause.
reduction_op must be an intrinsic operator, and
reduction_function must be an intrinsic procedure name or a name to
which an intrinsic procedure name is renamed.
- Support for the nested lock subroutines, OMP_SET_NEST_LOCK and
OMP_UNSET_NEST_LOCK for setting and releasing nestable lock
variables.
- The THREADPRIVATE directive can be applied to
MODULE variables, as well as local variables that have the
SAVE attribute.
- The COPYIN clause is allowed for THREADPRIVATE
variables.
[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]