You are previewing UPC: DISTRIBUTED SHARED MEMORY PROGRAMMING.
O'Reilly logo
UPC: DISTRIBUTED SHARED MEMORY PROGRAMMING

Book Description

This is the first book to explain the language Unified Parallel C and its use. Authors El-Ghazawi, Carlson, and Sterling are among the developers of UPC, with close links with the industrial members of the UPC consortium. Their text covers background material on parallel architectures and algorithms, and includes UPC programming case studies. This book represents an invaluable resource for the growing number of UPC users and applications developers. More information about UPC can be found at: http://upc.gwu.edu/

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright
  4. Contents
  5. PREFACE
    1. About UPC
    2. About This Book
    3. Resources
    4. Acknowledgments
  6. CHAPTER 1: Introductory Tutorial
    1. 1.1 GETTING STARTED
    2. 1.2 PRIVATE AND SHARED DATA
    3. 1.3 SHARED ARRAYS AND AFFINITY OF SHARED DATA
    4. 1.4 SYNCHRONIZATION AND MEMORY CONSISTENCY
    5. 1.5 WORK SHARING
    6. 1.6 UPC POINTERS
    7. 1.7 SUMMARY
    8. EXERCISES
  7. CHAPTER 2: Programming View and UPC Data Types
    1. 2.1 PROGRAMMING MODELS
    2. 2.2 UPC PROGRAMMING MODEL
    3. 2.3 SHARED AND PRIVATE VARIABLES
    4. 2.4 SHARED AND PRIVATE ARRAYS
    5. 2.5 BLOCKED SHARED ARRAYS
    6. 2.6 COMPILING ENVIRONMENTS AND SHARED ARRAYS
    7. 2.7 SUMMARY
    8. EXERCISES
  8. CHAPTER 3: Pointers and Arrays
    1. 3.1 UPC POINTERS
    2. 3.2 POINTER ARITHMETIC
    3. 3.3 POINTER CASTING AND USAGE PRACTICES
    4. 3.4 POINTER INFORMATION AND MANIPULATION FUNCTIONS
    5. 3.5 MORE POINTER EXAMPLES
    6. 3.6 SUMMARY
    7. EXERCISES
  9. CHAPTER 4: Work Sharing and Domain Decomposition
    1. 4.1 BASIC WORK DISTRIBUTION
    2. 4.2 PARALLEL ITERATIONS
    3. 4.3 MULTIDIMENSIONAL DATA
    4. 4.4 DISTRIBUTING TREES
    5. 4.5 SUMMARY
    6. EXERCISES
  10. CHAPTER 5: Dynamic Shared Memory Allocation
    1. 5.1 ALLOCATING A GLOBAL SHARED MEMORY SPACE COLLECTIVELY
    2. 5.2 ALLOCATING MULTIPLE GLOBAL SPACES
    3. 5.3 ALLOCATING LOCAL SHARED SPACES
    4. 5.4 FREEING ALLOCATED SPACES
    5. 5.5 SUMMARY
    6. EXERCISES
  11. CHAPTER 6: Synchronization and Memory Consistency
    1. 6.1 BARRIERS
    2. 6.2 SPLIT-PHASE BARRIERS
    3. 6.3 LOCKS
    4. 6.4 MEMORY CONSISTENCY
    5. 6.5 SUMMARY
    6. EXERCISES
  12. CHAPTER 7: Performance Tuning and Optimization
    1. 7.1 PARALLEL SYSTEM ARCHITECTURES
    2. 7.2 PERFORMANCE ISSUES IN PARALLEL PROGRAMMING
    3. 7.3 ROLE OF COMPILERS AND RUN-TIME SYSTEMS
    4. 7.4 UPC HAND OPTIMIZATION
    5. 7.5 CASE STUDIES
    6. 7.6 SUMMARY
    7. EXERCISES
  13. CHAPTER 8: UPC Libraries
    1. 8.1 UPC COLLECTIVE LIBRARY
    2. 8.2 UPC-IO LIBRARY
    3. 8.3 SUMMARY
  14. REFERENCES
  15. APPENDIX A: UPC Language Specifications, v1.1.1
    1. INTRODUCTION
    2. 1 SCOPE
    3. 2 NORMATIVE REFERENCES
    4. 3 TERMS, DEFINITIONS, AND SYMBOLS
    5. 4 CONFORMANCE
    6. 5 ENVIRONMENT
    7. 6 LANGUAGE
    8. 7 LIBRARY
    9. ACKNOWLEDGMENTS
    10. REFERENCES
  16. APPENDIX B: UPC Collective Operations Specifications, v1.0
    1. INTRODUCTION
    2. 1 SCOPE
    3. 2 DEFINITIONS
    4. 3 COMMON REQUIREMENTS
    5. 4 COLLECTIVES LIBRARY
    6. ACKNOWLEDGMENTS
    7. REFERENCES
  17. APPENDIX C: UPC-IO Specifications, v1.0
    1. 3 TERMS, DEFINITIONS, AND SYMBOLS
    2. 7 LIBRARY
    3. APPENDIX: FUTURE LIBRARY DIRECTIONS
    4. REFERENCES
  18. APPENDIX D: How to Compile and Run UPC Programs
    1. COMPILING AND RUNNING ON THE CRAY X1 UPC COMPILER
    2. COMPILING AND RUNNING ON THE HP-UPC COMPILER
    3. COMPILING AND RUNNING ON THE SGI-INTREPID GCC-UPC COMPILER
    4. COMPILING AND RUNNING ON THE BERKELEY UPC COMPILER
  19. APPENDIX E: Quick UPC Reference
    1. KEYWORDS
    2. SHARED VARIABLE DECLARATIONS
    3. LOCKS
    4. GENERAL UTILITIES
    5. WORK SHARING
    6. SYNCHRONIZATION
    7. LIBRARY ROUTINES
    8. DYNAMIC MEMORY ALLOCATION
    9. STRING FUNCTIONS IN UPC
  20. INDEX