RS/6000 Scientific and Technical Computing: POWER3 Introduction and Tuning Guide Stefan Andersson, Ron Bell, John Hague, Holger Holthoff Peter Mayes, Jun Nakano, Danny Shieh, Jim Tuccillo International Technical Support Organization http://www.redbooks.ibm.com SG24-5155-00 SG24-5155-00 International Technical Support Organization RS/6000 Scientific and Technical Computing: POWER3 Introduction and Tuning Guide October 1998 Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix D, “Special Notices” on page 199. First Edition (October 1998) This edition applies to XL Fortran Version 5.1.1 (5765-C10 and 5765-C11) running under AIX Version 4.3 (5765-C34) on an RS/6000 43P 7043 Model 260 Workstation. Note This book is based on a pre-GA version of a product and may not apply when the product becomes generally available. We recommend that you consult the product documentation or follow-on versions of this redbook for more current information. Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. JN9B Building 045 Internal Zip 2834 11400 Burnet Road Austin, Texas 78758-3493 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. © Copyright International Business Machines Corporation 1998. All rights reserved Note to U.S Government Users – Documentation related to restricted rights – Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. Contents Figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii The Team That Wrote This Redbook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiv Comments Welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvi Chapter 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1 RS/6000 Processor Evolution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1.1 POWER1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.1.2 POWER2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 1.1.3 PowerPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.1.4 POWER3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2 SMP-Based System Views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2.1 Job Level Parallelism with Single CPU Jobs. . . . . . . . . . . . . . . . .3 1.2.2 Automatic Parallelization (Fortran) . . . . . . . . . . . . . . . . . . . . . . . .4 1.2.3 Compiler Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1.2.4 Message Passing Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1.2.5 Using POSIX Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 1.2.6 Combined MPI/Threads Paradigm . . . . . . . . . . . . . . . . . . . . . . . .5 Chapter 2. The POWER3 Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 2.1 Processor Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 2.2 POWER3 Execution Core. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 2.3 POWER3 Roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 2.4 POWER3-Based Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 2.4.1 RS/6000 43P 7043 Model 260 . . . . . . . . . . . . . . . . . . . . . . . . . .13 2.4.2 IBM RS/6000 SP Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 2.4.3 DOE ASCI Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Chapter 3. XL Fortran Version 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 3.1 SMP Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 3.2 Support for POWER3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 3.3 64-Bit Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 3.3.1 Fortran Storage Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 3.3.2 32-Bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 3.3.3 32-Bit Mode, Large Address Space Model . . . . . . . . . . . . . . . . .22 3.3.4 64-Bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 3.3.5 Compiler Defaults and Limits . . . . . . . . . . . . . . . . . . . . . . . . . . .23 3.3.6 64-bit Integer Arithmetic Support . . . . . . . . . . . . . . . . . . . . . . . .23 © Copyright IBM Corp. 1998 iii 3.4 Performance Improvements over Previous XL Fortran . . . . . . . . . . . .24 Chapter 4. Using the SMP Feature of XL Fortran. . . . . . . . . . . . . . . . .29 4.1 How to Compile, Link, and Execute . . . . . . . . . . . . . . . . . . . . . . . . . .29 4.2 Consideration of Storage Classes in 32-Bit Mode. . . . . . . . . . . . . . . .33 4.3 Conditions for Automatic Parallelization . . . . . . . . . . . . . . . . . . . . . . .36 4.4 Automatic Parallelization - Parallelism Analysis . . . . . . . . . . . . . . . . .38 4.4.1 Examples of Parallelism Analysis. . . . . . . . . . . . . . . . . . . . . . . .38 4.4.2 XL Fortran Messages Related to Parallelization . . . . . . . . . . . . .44 4.5 Automatic Parallelization - Cost-Based Analysis. . . . . . . . . . . . . . . . .45 4.5.1 Cost-Based Analysis - Single Loops. . . . . . . . . . . . . . . . . . . . . .45 4.5.2 Cost-Based Analysis - Nested Loops . . . . . . . . . . . . . . . . . . . . .46 4.5.3 How to Affect the Decision of Cost-Based Analysis . . . . . . . . . .47 4.6 Directives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 4.6.1 PARALLEL DO Compiler Directive . . . . . . . . . . . . . . . . . . . . . . .51 4.6.2 PARALLEL SECTIONS Compiler Directive. . . . . . . . . . . . . . . . .53 4.6.3 PERMUTATION Compiler Directive . . . . . . . . . . . . . . . . . . . . . .54 4.6.4 SCHEDULE Compiler Directive . . . . . . . . . . . . . . . . . . . . . . . . .54 4.6.5 THREADLOCAL Compiler Directive . . . . . . . . . . . . . . . . . . . . . .56 4.7 NUM_PARTHDS Intrinsic Function. . . . . . . . . . . . . . . . . . . . . . . . . . .56 4.8 XLSMPOPTS Environment Variable. . . . . . . . . . . . . . . . . . . . . . . . . .57 4.9 OpenMP Porting Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . .58 Chapter 5. Performance Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 5.1 The ESSL Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 5.1.1 Benefits of Using ESSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 5.1.2 How to Use ESSL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 5.1.3 Performance Examples of ESSL. . . . . . . . . . . . . . . . . . . . . . . . .70 5.2 MASS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 5.2.1 How to Use the MASS Library . . . . . . . . . . . . . . . . . . . . . . . . . .74 5.2.2 Performance of the MASS Library . . . . . . . . . . . . . . . . . . . . . . .75 5.2.3 Further Tuning Possibilities Using Vector MASS. . . . . . . . . . . . .77 Chapter 6. Message Passing Interface . . . . . . . . . . . . . . . . . . . . . . . . .81 6.1 MPI in an SMP Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 6.2 MPI Communication Rates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83 Chapter 7. Performance and Tuning Analysis . . . . . . . . . . . . . . . . . . .87 7.1 Relevant Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 7.2 CPU Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 7.2.1 Unrolling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 7.2.2 Divides. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 7.2.3 Floating Point to Integer Conversion. . . . . . . . . . . . . . . . . . . . . .94 7.2.4 Fractional Part of a Number . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 iv RS/6000 Scientific and Technical Computing: POWER3 Introduction and Tuning Guide 7.3 Memory Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 7.3.1 Copy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 7.3.2 Multiple Streams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 7.3.3 DAXPY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 7.3.4 Loads and Stores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 7.3.5 Prefetching Individual Cache Lines. . . . . . . . . . . . . . . . . . . . . .101 7.4 Large Stride. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 7.4.1 Cache Effects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 7.4.2 Translation Lookaside Buffer Effects . . . . . . . . . . . . . . . . . . . .103 Chapter 8. Fortran Tuning Guide for Maximum Megaflops . . . . . . . .107 8.1 The Tuning Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 8.1.1 Tuning for I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 8.1.2 Locating the Hot Spots (Profiling). . . . . . . . . . . . . . . . . . . . . . .109 8.1.3 Use Pre-tuned Code, Such As ESSL . . . . . . . . . . . . . . . . . . . .111 8.1.4 Hand Tune the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112 8.2 Recommended Compiler Options. . . . . . . . . . . . . . . . . . . . . . . . . . .112 8.3 Architecture Independent Hand Tuning Review . . . . . . . . . . . . . . . .114 8.3.1 Basic Coding Practices for Performance. . . . . . . . . . . . . . . . . .115 8.3.2 Commonly Occurring Examples . . . . . . . . . . . . . . . . . . . . . . . .116 8.4 Key Aspects of POWER3 (Model 260) Architecture . . . . . . . . . . . . .119 8.4.1 The POWER3 (Model 260) Level 1 Data Cache . . . . . . . . . . . .119 8.4.2 The POWER3 (Model 260) Level 2 Data Cache . . . . . . . . . . . .122 8.4.3 The Translation Lookaside Buffer (TLB) . . . . . . . . . . . . . . . . . .123 8.4.4 The Superscalar Floating Point Units and Peak Megaflops. . . .123 8.5 Tuning for Floating Point Performance on POWER3 (Model 260). . .126 8.5.1 Letting the Compiler Do the Tuning . . . . . . . . . . . . . . . . . . . . .127 8.5.2 Getting and Understanding an Object Code Listing . . . . . . . . .127 8.5.3 Tuning for the L1 Cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 8.5.4 Tuning for the CPU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 8.6 Some Comments on Parallel Coding for Model 260 . . . . . . . . . . . . .144 Chapter 9. Throughput Measurements . . . . . . . . . . . . . . . . . . . . . . . .147 9.1 Copy Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 9.2 User Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 9.3 Case Study: Matrix Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . .150 9.3.1 The Computational Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 9.3.2 Single Processor Implementation of DGEMM. . . . . . . . . . . . . .153 9.3.3 Automatically Parallelized DGEMM. . . . . . . . . . . . . . . . . . . . . .156 9.3.4 MPI Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Chapter 10. Kernels, Codes, and Benchmarks. . . . . . . . . . . . . . . . . .159 10.1 GAMESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 10.2 Oil Reservoir Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 v 10.3 Weather Forecast Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 10.4 Computational Fluid Dynamics: FIRE. . . . . . . . . . . . . . . . . . . . . . .162 10.5 Crash Worthiness Analysis: RADIOSS. . . . . . . . . . . . . . . . . . . . . .165 10.6 Finite Difference Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 10.7 Iterative Eigenvalues Solver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 Appendix A. Industry Standard Benchmarks . . . . . . . . . . . . . . . . . . . . 173 A.1 LINPACK Benchmark. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 A.2 SPEC95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.3 STREAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.4 NAS NPB 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Appendix B. Enabling Vector Codes to POWER3. . . . . . . . . . . . . . . . . 177 B.1 Data Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 B.2 Data Dependency and Recursive Code . . . . . . . . . . . . . . . . . . . . . . . . . 177 B.3 Vector Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 B.4 Conditional Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Appendix C. Threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 C.1 Symmetric Multiprocessing (SMP) Concepts and Architecture . . . . . . . 181 C.2 Thread Implementation Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 C.3 Understanding Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 C.3.1 Threads and Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 C.3.2 Threads Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 C.3.3 Thread Scheduling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 C.3.4 Thread Models and Virtual Processors . . . . . . . . . . . . . . . . . . . . . 188 C.3.5 Contention Scope and Concurrency Level. . . . . . . . . . . . . . . . . . . 191 C.3.6 libpthreads.a POSIX Threads Library. . . . . . . . . . . . . . . . . . . . . . . 192 C.3.7 libpthreads_compat.a POSIX Draft 7 Threads Library. . . . . . . . . . 192 C.4 A Simple Thread Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 C.4.1 Using SMP Directives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 C.4.2 Using the Fortran PThread Module . . . . . . . . . . . . . . . . . . . . . . . . 194 C.4.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Appendix D. Special Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Appendix E. Related Publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 E.1 International Technical Support Organization Publications . . . . . . . . . . 203 E.2 Redbooks on CD-ROMs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 E.3 Other Publications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 E.4 Information Available on the Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 How to Get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 How IBM Employees Can Get ITSO Redbooks. . . . . . . . . . . . . . . . . . . . . . . 207 vi RS/6000 Scientific and Technical Computing: POWER3 Introduction and Tuning Guide How Customers Can Get ITSO Redbooks. . . . . . . . . . . . . . . . . . . . . . . . . . . 208 IBM Redbook Order Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 List of Abbreviations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 ITSO Redbook Evaluation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 vii viii RS/6000 Scientific and Technical Computing: POWER3 Introduction and Tuning Guide
Description: