Contents

About this document

  • Conventions and terminology used in this document
  • Typographical conventions
  • Icons
  • How to read syntax diagrams
  • Examples
  • Related publications
  • Using 32-bit and 64-bit modes

  • Assigning long values
  • Assigning constant values to long variables
  • Bit-shifting long values
  • Assigning pointers
  • Aligning aggregate data
  • Calling Fortran code
  • Using XL C/C++ with Fortran

  • Identifiers
  • Corresponding data types
  • Character and aggregate data
  • Function calls and parameter passing
  • Pointers to functions
  • Sample program: C/C++ calling Fortran
  • Aligning data

  • Using alignment modes
  • Alignment of aggregates
  • Alignment of bit fields
  • Using alignment modifiers
  • Precedence rules for scalar variables
  • Precedence rules for aggregate variables
  • Handling floating point operations

  • Floating-point formats
  • Handling multiply-add operations
  • Compiling for strict IEEE conformance
  • Handling floating-point constant folding and rounding
  • Matching compile-time and runtime rounding modes
  • Handling floating-point exceptions
  • Using C++ templates

  • Using the -qtempinc compiler option
  • Example of -qtempinc
  • Regenerating the template instantiation file
  • Using -qtempinc with shared libraries
  • Using the -qtemplateregistry compiler option
  • Recompiling related compilation units
  • Switching from -qtempinc to -qtemplateregistry
  • Constructing a library

  • Compiling and linking a library
  • Compiling a static library
  • Compiling a shared library
  • Linking a library to an application
  • Linking a shared library to another shared library
  • Initializing static objects in libraries (C++)
  • Assigning priorities to objects
  • Order of object initialization across libraries
  • Optimizing your applications

  • Using optimization levels
  • Techniques used in optimization level 2
  • Techniques used in optimization level 3
  • Techniques used in optimization levels 4 and 5
  • Getting the most out of optimization levels 2 and 3
  • Optimizing for system architecture
  • Getting the most out of target machine options
  • Using high-order loop analysis and transformations
  • Getting the most out of -qhot
  • Using shared-memory parallelism (SMP)
  • Getting the most out of -qsmp
  • Using interprocedural analysis
  • Getting the most from -qipa
  • Using profile-directed feedback
  • Example of compilation with pdf and showpdf
  • Other optimization options
  • Coding your application to improve performance

  • Find faster input/output techniques
  • Reduce function-call overhead
  • Manage memory efficiently
  • Optimize variables
  • Manipulate strings efficiently
  • Optimize expressions and program logic
  • Optimize operations in 64-bit mode
  • Using the high performance libraries

  • Using the Mathematical Acceleration Subsystem (MASS)
  • Using the scalar library
  • Using the vector libraries
  • Compiling and linking a program with MASS
  • Using the Basic Linear Algebra Subprograms (BLAS)
  • BLAS function syntax
  • Linking the libxlopt library
  • Parallelizing your programs

  • Countable loops
  • Enabling automatic parallelization
  • Using OpenMP directives
  • Shared and private variables in a parallel environment
  • Reduction operations in parallelized loops
  • Index