Holiday book sale: Save up to 30% on print and eBooks. No promo code needed.
Save up to 30% on print and eBooks.
A Guidebook to Fortran on Supercomputers
1st Edition - November 28, 1988
Authors: John M. Levesque, Joel W. Williamson
9 7 8 - 1 - 4 8 3 2 - 6 5 7 1 - 1
A Guidebook to Fortran on Supercomputers presents in detail both the underlying architecture of supercomputers and the manner by which a compiler maps Fortran code onto that… Read more
Save 50% on book bundles
Immediately download your ebook while waiting for your print delivery. No promo code is needed.
A Guidebook to Fortran on Supercomputers presents in detail both the underlying architecture of supercomputers and the manner by which a compiler maps Fortran code onto that architecture. This book outlines the constructs preventing full optimization and provides specific strategies for restructuring a program. Organized into four chapters, this book begins with an overview of the basic concepts of vector, scalar, and parallel processing. This text then provides an in-depth look at the architectural features of a variety of existing machines, with emphasis to the features common to many of them. Other chapters consider the optimization techniques used by compilers and how a programmer can take advantage of this knowledge in restructuring existing programs and in the development of new applications. The final chapter presents examples of loops from real-world programs, with a discussion of the inherent problems. This book is a valuable resource for scientists, engineers, students, and research workers.
Preface1. Introduction 1.1 Conventional Computers 1.2 What's a Supercomputer Anyway? 1.3 Terminology 1.3.1 Scalar 1.3.2 Vector and Stride 1.3.3 Parallel and Concurrent 1.4 Amdahl's Law 1.4.1 Amdahl's Law for Vector Processors 1.4.2 Amdahl's Law for Parallel Processors 1.5 Summary Problems2. Supercomputer Architecture 2.1 Basic Features 2.1.1 Clock Cycle and Performance Measures 2.1.2 Registers 2.1.3 Functional Units 2.1.4 Memory Banks 2.1.5 Memory Caches 2.1.6 Instruction Streams and Data Streams 2.1.7 Summary 2.2 The Vector Processor 2.2.1 Memory-to-Memory Vector Processes 2.2.2 ETA 10 2.2.3 Register-to-Register Vector Processes Problems3. Fortran 3.1 Standard Fortran 3.1.1 Array Layout in Memory 3.2 Compilers 3.2.1 Machine-Independent Optimizations 3.2.2 Machine-Dependent Optimizations 3.3 Vectorization 3.3.1 Explicit Vectorization 3.3.2 Implicit Vectorization Problems4. Vectorization of Fortran Programs 4.1 Obtaining Timing Statistics 4.1.1 Flow Trace 4.1.2 FORGE Timing Facility 4.1.3 How to Use the Timing Statistics 4.2 Discussion of Amdahl's Law 4.3 Modularity and Optimization 4.3.1 Scalar-Valued Routines versus Array-Valued Routines 4.4 A Systematic Approach to Restructuring 4.4.1 Possible Inaccuracies Caused by Vectorization 4.5 Why the Programmer is Needed 4.5.1 Difficulties of Optimizing "Dusty Deck" Fortran 4.6 Candidates For Vectorization 4.7 Vectorization Inhibitors 4.7.1 Compiler Optimization with Incomplete Information 4.8 Effects of Array Access on Performance 4.9 Examples of Restructuring Fortran Loops 4.9.1 Introduction to Examples 4.9.2 Accessing Arrays 4.9.3 Scalar Temporaries (Simple) 4.9.4 Recursion Involving Arrays 4.9.5 Scalar Recursion 4.9.6 More Loop Switching 4.9.7 Loop Unrolling 4.9.8 IF Statements 4.9.9 Subprogram References 4.9.10 I/O Statements 4.9.11 Assigned GO TO Statements 4.9.12 Backward GO TOs 4.10 Summary ProblemsAppendixes A. Abbreviations and Glossary A.1 Common Abbreviations A.2 Glossary of Terms B. Examples of the FORGE Timing Facility B.1 Timing Results from LINPACK Benchmark B.2 Timing Results from HYGRID Program C. Loops for Memory-Access Comparison C.1 Group 1: Indirect Access with Random Index C.2 Group 2: Unitary Stride C.3 Group 3: Direct Access with Stride D. Solutions to ProblemsIndex