IBM Support

Documentation errata for IBM XL Fortran for Linux, V12.1

Preventive Service Planning


Abstract

This page contains corrections and additions to the product documentation shipped with IBM XL Fortran for Linux, V12.1.

Content

Compiler Reference
The following corrections and additions apply to the IBM XL Fortran for Linux, V12.1 Compiler Reference:

The XLFRTEOPTS environment variable
The following runtime option is added now:

buffer_size=size
Specifies the size of I/O buffers in bytes instead of using the block size of devices. size must be either -1 or an integer value that is greater than or equal to 4096. The default, -1, uses the block size of the device where the file resides.

Using this option can reduce the amount of memory used for I/O buffers when an application runs out of memory because the block size of devices is very large and the application opens many files at the same time.

Note the following when using this runtime option:

  • Preconnected units remain unaffected by this option. Their buffer size is the same as the block size of the device where they reside except when the block size is larger than 64KB, in which case the buffer size is set to 64KB.
  • This runtime option does not apply to files on a tape device or logical volume.
  • Specifying the buffer size with the SETRTEOPTS procedure overrides any value previously set by the XLFRTEOPTS environment variable or SETRTEOPTS procedure. The resetting of this option does not affect units that have already been opened.

-qfloat=fltint | nofltint option
The following new information is added:

If -qarch is set to a processor that has an instruction to convert from floating point to integer, that instruction will be used regardless of the [no]fltint setting. This conversion also applies to all PowerPC processors in 64-bit mode.

-t option
The following reference to the p suboption is removed:

Note that using the p suboption causes the source code to be preprocessed separately before compilation, which can change the way a program is compiled.

The references to the I suboption are removed from the syntax diagram and the table:

Syntax:
        .-------.
        V       |
>>- -t----+-a-+-+----------------------------------------------><
          +-b-+
          +-c-+
          +-d-+
          +-F-+
          +-h-+
          +-I-+
          +-l-+
          +-p-+
          '-z-'

Table:
Parameter  Description                         Executable name
I          High-level optimizer, compile step  ipa

Chapter: Setting up and customizing XL Fortran

Section: Correct settings for environment variables

Topic: PDFDIR: Specifying the directory for PDF profile information

Store the profiling information for each application in a different directory, or use the -qpdf1=pdfname, -qpdf2=pdfname option to explicitly name the temporary profiling files according to the template provided.

should read:

Store the profiling information for each application in a different directory, or use the -qpdf1=pdfname option to explicitly name the temporary profiling files according to the template provided.


Chapter: Problem determination and debugging

Section: Understanding XL Fortran error messages

Topic: Fixing compile-time problems

The following problem should be added:

Compilation failure because of internal alias table overflow

At an optimization level of -O2 or higher, XL Fortran compiler computes alias information to ensure that the optimizer preserves the semantics of the application. Alias computation might be an expensive process in terms of space usage, depending on the object definitions and language constructs used in an application. In rare occasions, the internal alias table might overflow, which causes the compilation to fail. Such overflow might occur when a module defines or uses derived-type objects that contain a large number of ultimate components, and passes the objects as dummy arguments to a large number of procedures that are defined in the same module. Partitioning the set of module procedures and placing each partition in a separate module might resolve the overflow problem.


Language Reference
The following corrections and additions apply to the IBM XL Fortran for Linux, V12.1 Language Reference:

Chapter: Directives

Section: Directives and optimization

Topic: Assertive directives

EXPECTED_VALUE should be added.


Section: Detailed directive descriptions

The following topic should be added:

EXPECTED_VALUE

Purpose
Specifies the value that a dummy argument is most likely to have at run time. The compiler can use this information to perform certain optimizations, such as procedure cloning and inlining.

Syntax
>>-EXPECTED_VALUE--(--argument--,--value--)--------------------><

argument
    The name of the dummy argument for which you want to provide the expected value. The dummy argument must be a scalar of REAL, INTEGER, LOGICAL, or BYTE type. It must not have the ALLOCATABLE or POINTER attribute.

value
    An initialization expression representing the value that the dummy argument is most likely to take at run time.

Rules
Use the EXPECTED_VALUE directive only in the specification part of a procedure. Do not use more than one EXPECTED_VALUE directive for a dummy argument.

Examples
In the following example, the EXPECTED_VALUE directives indicate to the compiler that the most likely value is 1 for a, and 0 for b.

integer function func(a, b)
    integer a, b
    !IBM* EXPECTED_VALUE(a, 1)
    !IBM* EXPECTED_VALUE(b, 0)
    ...
end function func


Topic: IGNORE_TKR

Examples
interface
  subroutine sub1(a, b)
    integer(4), value :: a
    integer(4), value :: b
    !ibm* ignore_tkr b
  end subroutine
end interface

! valid calls
call sub1(1, ’abc’)   ! type ignored
call sub1(1, 2_8)     ! kind ignored
call sub1(1, (/ 2 /)) ! rank ignored

end

should read

Examples
interface
  subroutine sub1(a, b)
    integer(4) :: a
    integer(4) :: b
    !ibm* ignore_tkr b
  end subroutine
end interface

! valid calls
call sub1(1, ’abc’)   ! type ignored
call sub1(1, 2_8)     ! kind ignored
call sub1(1, (/ 2 /)) ! rank ignored

end

Statements and attributes

Table 31. Statements table
ASYNCHRONOUS 3 should read ASYNCHRONOUS 1
RECORD should read RECORD 1
VALUE 1 should read VALUE 3
WAIT 1 should read WAIT 3

Within the chapter:

ASYNCHRONOUS is incorrectly identified as a Fortran 2003 extension. It is an IBM extension.

WAIT is incorrectly identified as an IBM extension. It is a Fortran 2003 extension.


Chapter: Hardware-specific directives

Section: PROTECTED STREAM

prefetch_variable
is a variable to be prefetched. The variable must be a data object with a determinable storage address. The variable can be of any data type, including intrinsic and derived data types. The variable cannot be a procedure name, subroutine name, module name, function name, literal constant, label, zero-sized string, zero-length array, or array with a vector subscript.

prefetch_depth


is a variable to be prefetched. The variable must be a data object with a determinable storage address. The variable can be of any data type, including intrinsic and derived data types. The variable cannot be a procedure name, subroutine name, module name, function name, literal constant, label, zero-sized string, zero-length array, or array with a vector subscript.

prefetch_depth can be specified by either an integer variable or a numeric literal ranging from 0 to 7. It is a relative value with the levels defined qualitatively as follows:

should read:



prefetch_variable
is a variable to be prefetched. The variable must be a data object with a determinable storage address. The variable can be of any data type, including intrinsic and derived data types. The variable cannot be a procedure name, subroutine name, module name, function name, literal constant, label, zero-sized string, zero-length array, or array with a vector subscript.

prefetch_depth can be specified by either an integer variable or a numeric literal ranging from 0 to 7. It is a relative value with the levels defined qualitatively as follows:

Optimization and Programming Guide


The following corrections and additions apply to the IBM XL Fortran for Linux, V12.1 Optimization and Programming Guide:

Chapter: Tuning XL compiler applications

Section: Further option driven tuning

Topic: Options to assist with performance analysis

-qshowpdf
    If you specify this option with -qpdf1 and a minimum of -O optimization, the optimization process inserts additional information into your application that the showpdf utility can make use of when analyzing the result of a PDF run.

should read:
    If you specify this option with -qpdf1 and a minimum of -O2 optimization, the optimization process inserts additional information into your application that the showpdf utility can make use of when analyzing the result of a PDF run.

Chapter: Parallel programming with XL Fortran

Section: Setting OMP and SMP run time options

On the page The XLSMPOPTS environment variable, the following option has been added under Parallel execution options:


procs=cpu_id[,cpu_id,...]
Enables thread binding and specifies a list of cpu_id to which the threads are bound. If the number of CPU IDs specified is less than the number of threads used by the program, the remaining threads are not bound.

[{"Product":{"code":"SSB259","label":"XL Fortran Advanced Edition for Linux"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Documentation","Platform":[{"code":"PF016","label":"Linux"}],"Version":"12.1","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}},{"Product":{"code":"SSAT4T","label":"XL Fortran for Linux"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Documentation","Platform":[{"code":"","label":"Linux on Power systems"}],"Version":"12.1","Edition":"Not Applicable","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}}]

Document Information

Modified date:
24 February 2022

UID

swg21318107