ebook img

Associative Computing: A Programming Paradigm for Massively Parallel Computers PDF

290 Pages·1992·5.033 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Associative Computing: A Programming Paradigm for Massively Parallel Computers

Associative Computing A Programming Paradigm for Massively Parallel Computers FRONTIERS OF COMPUTER SCIENCE Series Editor: Arnold L. Rosenberg University of Massachusetts Amherst, Massachusetts ASSOCIATIVE COMPUTING: A Programming Paradigm for Massively Parallel Computers Jerry L. Potter INTRODUCTION TO PARALLEL AND VECTOR SOLUTION OF LINEAR SYSTEMS James M. Ortega A Continuation Order Plan is available for this series. A continuation order will bring delivery of each new volume immediately upon publication. Volumes are billed only upon actual shipment. For further information please contact the publisher. Associative Computing A Programming Paradigm for Massively Parallel Computers Jerry L. Potter Kent State University Kent, Ohio Springer Science+Business Media, LLC Llbrary of Congress Cataloglng-ln-Publlcatlon Data Potter, Jerry L. Associative computing a programming paradigm for masslvely para lle 1 computers I Jerry L. Potter. p. cm. -- (Frontiers in computer sciencel Inc 1u des b i b 1 i ograph i ca I references and 1 ndex. ISBN 978-1-4613-6452-8 ISBN 978-1-4615-3300-9 (eBook) DOI 10.1007/978-1-4615-3300-9 1. Parallel computers--Programming. 1. Title. II. Series. QA76.5.P6354 1992 004'35--dc20 91-40897 CIP ISBN 978-1-4613-6452-8 © 1992 Springer Science+Business Media New York Originally published by Plenum Press, New York in 1992 Softcover reprint of the hardcover Ist edition 1992 All rights reserved No part of this book may be reproduced, stored in a retrieval system, or transmitted in any fonn or by any means, electronic, mechanical, photocopying, microfilming, recording, or otherwise, without written permis sion from the Publisher. Preface Associative processing has been discussed for more than thirty years, but little more than the a-list function in Lisp has ever been incorporated into a program ming language. The idea of accessing data by its content or meaning instead of an abstract address mapping surely has much to offer in increased programmer productivity. This book is a first step toward unifying associative processing concepts with massively parallel SIMD technology. This book is intended for students, professionals, and researchers interested in associative processing, content-addressable memories, artificial intelligence, context-sensitive compilation, massively parallel computation, neural networks, and expert systems. The first six chapters have been used successfully for teaching an undergraduate course in SIMD parallel programming at Kent State University. The last four chapters are appropriate for more advanced courses. An associative computer emulator that executes in a C-Unix environment has been developed as an aid to classroom instruction. Compilers for the Connection Machine and Wavetracer are also available. The software comes with a set of programming exercises, coordinated with the text, which cover all aspects of associative programming. Source-file solutions to the exercises are included with the soft ware. These programs are also used as a test suite to assure that the compiler/ emulator is operating properly. A request form for the ASC (associative comput ing) software can be found inside the back cover of this book. Chapter 1 introduces and defines some basic terms and concepts of associa tive computing. In particular, the terms associative, responder, word, field, vector, pointer, and flag are defined. The concepts of associative searches, associative triples, associative memories, associative processors, associative com puters, and data parallelism are introduced and distinguished. The ability to use associative searching in place of conventional address calculation is briefly discussed. The capability of SIMD computers to perform effective associative retrieval is explained, and the natural mapping of a two-dimensional data structure onto the memory of a one-dimensional SIMD processor is demonstrated. These v vi Preface last two items form the basic rationale for the Single Instruction Tabular Data Associative Computation (SITDAC) model. The model is formally defined and then contrasted briefly with data-parallel, neural networks, relational data bases, list processing, and rule-based systems as models of computation. The affinity among associative programming, natural thought processes, and natural language is discussed. An argument for the simplicity of associative programming as compared with conventional address calculation is presented. The concept of an address function is introduced. Finally, a brief discussion of throughput analysis is given. Chapter 2 introduces and describes some basic SIMD programming concepts that are important to the SITDAC model. Among them are SIMD flow of control, the classroom model, dynamic memory allocation, massively parallel searching, tabular data arrays, bit-serial arithmetic, numeric searching, responders, re sponder iteration, data reformatting (corner turning), bucket-brigade communica tion, data-memory mapping, and data replication. Chapter 3 describes the search, process, retrieve (SPR) cycle that is the basis of SITDAC programming. The mappings of the SPR cycles onto the basic control statements of ASC are described. Additional ASC statements, including data declarations and 110, are explained in conjunction with basic associative programming concepts. Chapter 4 presents several ASC programs and contrasts them with conven tional implementations. This chapter also describes how the associative approach reduces the need for sorting and sort-based data structures such as linked lists, stacks, and queues. Chapter 5 describes associative data-structure implementation using struc ture codes. Structure codes allow any logical data structure to be stored in the tabular two-dimensional SITDAC data structure so that they may be searched and processed in parallel. Chapter 6 describes how recursion can be implemented in ASC. In general, SITDAC associative computing avoids recursion for searching and processing data and instead uses massively parallel searching to find the innermost or terminating level of recursion and then performs the evaluations from the inside out. However, certain functions are elegantly expressed using recursion. This chapter describes recursion both with and without a specialized recursive control statement. Chapter 7 introduces additional ASC control structures that allow complex pattern searches to be expressed in procedural form. Chapter 8 illustrates how rule-based pattern-matching 'languages can be compiled into procedural routines using context-sensitive techniques. Chapter 9 discusses the implementation of a Prolog interpreter in ASC. Associative techniques for unification, and/or tree searching, variable binding, and clause filtering are described. The Prolog interpreter is a significant ASC program. Chapter 10 proposes a computer design for the SITDAC model. It is based on Preface vii the classic bit-serial SIMD design but incorporates several specific changes. It includes an 110 stack to provide specialized data-manipulation functions in addition to 110. It has a byte-serial architecture for data manipulation while maintaining bit-serial manipulation for flag processing. One of the most signifi cant enhancements is the inclusion of a multiple-instruction-stream feature that allows parallel execution of single SIMD programs as well as multiuser and multitasking parallel execution of multiple SIMD programs. I would like to thank Goodyear Aerospace for the donation to Kent State University of the STARAN computer that enabled much of this research to progress, and the Office of Naval Research, the Supercomputing Research Center, and the state of Ohio for their support over the years. Finally, I would like to thank the reviewers for their helpful comments, corrections, and suggestions. Jerry L. Potter Kent, Ohio Contents Chapter 1. Introduction .................................... 1 1.l. SITDAC Terminology ............................. . 2 1.2. The SITDAC Model ............................... . 6 1.3. SITDAC versus Other Models ....................... . 10 1.4. Hardware Ramifications of SITDAC .................. . 13 1.5. SITDAC Algorithms ............................... . 15 1.6. History ......................................... . 15 1. 7. The Nature of SITDAC Programming ................ . 19 1.8. Reduced Programming Complexity ................... . 24 1.9. Throughput Analysis .............................. . 27 1.10. Conclusion ...................................... . 28 Chapter 2. Basic Concepts of Associative Programming ........ . 29 2.1. SIMD Parallelism ................................. . 30 2.2. Flow of Control .................................. . 32 2.3. The Classroom Model ............................. . 33 2.4. Memory Allocation ............................... . 35 2.5. Massive Parallel Searching ......................... . 39 2.6. Tabular Arrays ................................... . 40 2.7. Bit·Serial Arithmetic .............................. . 41 2.8. Responders and Numeric Searching .................. . 48 2.9. Responder Iteration ............................... . 57 2.10. Corner Turning ................................... . 58 2.11. Bucket-Brigade Communication ..................... . 60 2.12. Data Mapping .................................... . 61 2.13. Data Replication .................................. . 62 2.14. Conclusion ...................................... . 67 ix x Contents Chapter 3. An Associative Model of Computation ............ . 69 3.1. The SITDAC Model of Computation ................. . 70 3.2. Cycle Nesting .................................... . 71 3.3. Items and Expressions ............................. . 72 3.4. Item Declarations ................................. . 74 3.5. The Associative Statement ........................ .. 75 3.6. The Allocate and Release Statements ................. . 76 3.7. The If Statement ................................. . 77 3.8. The For and While Statements ...................... . 78 3.9. The Loop Statement .............................. . 80 3.10. The Get Statement ................................ . 82 3.11. The Next Statement ............................... . 82 3.12. The Any Statement ............................... . 83 3.13. The Setscope Statement ............................ . 84 3.14. Maximum, Minimum, Nth and Count ................ . 86 3.15. Item Equivalences ................................ . 87 3.16. ASC Pronouns and Articles ........................ . 89 3.17. Module 'JYpes-Main and Subroutine ............... . 91 3.18. The 110 Statements ............................... . 93 3.19. Interprocessor Communication ...................... . 96 3.20. Contiguous Data Allocation ......................... . 98 3.21. Indirect Addressing ............................... . 99 3.22. Conclusion ...................................... . 99 Chapter 4. Elementary ASC Programs ....................... 101 4.1. Simple Arithmetic Tasks ............................ 101 4.2. Associative Stacks and Queues ....................... 108 4.3. A Dataflow Interpreter .............................. 111 4.4. Minimal Spanning Tree ............................. 117 4.5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 122 Chapter 5. Associative Data Structures ....................... 123 5.1. An Associative Program ............................ 124 5.2. Structure Codes ................................... 124 5.3. Data Structures as Extended Associations .............. 125 5.4. Simultaneous Multiple Data Organizations. . . . . . . . . . . . . . 126 5.5. Generalized Array Data Structure Codes ............... 127 5.6. Associative Data Structure References ................. 129 5.7. Data Structure Code Manipulation .................... 129 5.8. Synonymous Data Structures ........................ 132 5.9. Lists and Linked Lists .............................. 132 Contents xi 5.10. Structure-Code Functions ........................... 134 5.11. List Manipulation .................................. 135 5.12. Structure-Code Searching Functions ................... 138 5.13. Structure-Code 110 (SCIO) .......................... 139 5.14. Structure Codes for Graphs .......................... 151 5.15. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 156 Chapter 6. ASC Recursion ................................. . 159 6.1. The Recursewhile Construct ........................ . 159 6.2. A Simple Recursewhile Example .................... . 163 6.3. How to Use Recursewhile ......................... . 163 6.4. A Complex Recursewhile Example .................. . 166 6.5. Conclusion ...................................... . 170 Chapter 7. Complex Searching ............................. . 173 7.1. A Brief OPS5 Background ......................... . 174 7.2. Pattern Data Structures .......................... .. . 176 7.3. Local and Global Variables ......................... . 180 7.4. The Andif Statement .............................. . 182 7.5. The Andfor Statement ............................. . 183 7.6. Flow of Control for And Constructs .................. . 186 7.7. Conclusion 188 Chapter 8. Context-Sensitive Compilation .................... . 191 8.1. Context Sensitivity ................................ . 191 8.2. A Brief Overview ................................. . 193 8.3. Context-Sensitive Compilation ...................... . 194 8.4. Execution of a Procedural Rule ...................... . 208 8.5. Conclusion ...................................... . 211 Chapter 9. Associative Prolog ............................... 213 9.1. Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 213 9.2. Unification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 215 9.3. The Binding Association ............................ 216 9.4. Search Organization ................................ 218 9.5. Inference Engine .................................. 222 9.6. Clause Filtering ................................... 224 9.7. Binding Variables .................................. 232 9.8. Prolog 110 ........................................ 234 9.9. Example of a Prolog Program. . . . . . . . . . . . . . . . . . . . . . .. 237

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.