Shop Categories
More Information Buy Now
 
  • James Reinders

    Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism
    Multi-core chips from Intel and AMD offer a dramatic boost in speed and responsiveness, and plenty of opportunities for multiprocessing on ordinary desktop computers. But they also present a challenge: More than ever, multithreading is a requirement for good performance. This guide explains how to maximize the benefits of these processors through a portable C++ library that works on Windows, Linux, Macintosh, and Unix systems. With it, you'll learn how to use Intel Threading Building Blocks (TBB) effectively for parallel programming -- without having to be a threading expert. Written by James Reinders, Chief Evangelist of Intel Software Products, and based on the experience of Intel's developers and customers, this book explains the key tasks in multithreading and how to accomplish them with TBB in a portable and robust manner. With plenty of examples and full reference material, the book lays out common patterns of uses, reveals the gotchas in TBB, and gives important guidelines for choosing among alternatives in order to get the best performance. You'll learn how Intel Threading Building Blocks: Enables you to specify tasks instead of threads for better portability, easier programming, more understandable source code, and better performance and scalability in general Focuses on the goal of parallelizing computationally intensive work to deliver high-level solutions Is compatible with other threading packages, and doesn't force you to pick one package for your entire program Emphasizes scalable, data-parallel programming, which allows program performance to increase as you add processors Relies on generic programming, which enables you to write the best possible algorithms with thefewest constraints Any C++ programmer who wants to write an application to run on a multi-core system will benefit from this book. TBB is also very approachable for a C programmer or a C++ programmer without much experience with templates. Best of all, you don't need experience with parallel programming or multi-core processors to use this book.
    More Information Buy Now
     
  • Michael L. Scott

    Programming Language Pragmatics
    More Information Buy Now
     
  • Barbara Chapman, Gabriele Jost, Ruud van der Pas

    Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation)
    "I hope that readers will learn to use the full expressibility and power of OpenMP. This book should provide an excellent introduction to beginners, and the performance section should help those with some experience who want to push OpenMP to its limits."
    —from the foreword by David J. Kuck, Intel Fellow, Software and Solutions Group, and Director, Parallel and Distributed Solutions, Intel Corporation

    OpenMP, a portable programming interface for shared memory parallel computers, was adopted as an informal standard in 1997 by computer scientists who wanted a unified model on which to base programs for shared memory systems. OpenMP is now used by many software developers; it offers significant advantages over both hand-threading and MPI. Using OpenMP offers a comprehensive introduction to parallel programming concepts and a detailed overview of OpenMP.

    Using OpenMP discusses hardware developments, describes where OpenMP is applicable, and compares OpenMP to other programming interfaces for shared and distributed memory parallel architectures. It introduces the individual features of OpenMP, provides many source code examples that demonstrate the use and functionality of the language constructs, and offers tips on writing an efficient OpenMP program. It describes how to use OpenMP in full-scale applications to achieve high performance on large-scale architectures, discussing several case studies in detail, and offers in-depth troubleshooting advice. It explains how OpenMP is translated into explicitly multithreaded code, providing a valuable behind-the-scenes account of OpenMP program performance. Finally, Using OpenMP considers trends likely to influence OpenMP development, offering a glimpse of the possibilities of a future OpenMP 3.0 from the vantage point of the current OpenMP 2.5.

    With multicore computer use increasing, the need for a comprehensive introduction and overview of the standard interface is clear. Using OpenMP provides an essential reference not only for students at both undergraduate and graduate levels but also for professionals who intend to parallelize existing codes or develop new parallel programs for shared memory computer architectures.
    More Information Buy Now
     
  • William Gropp, Ewing Lusk, Anthony Skjellum

    Using MPI - 2nd Edition: Portable Parallel Programming with the Message Passing Interface (Scientific and Engineering Computation)
    The Message Passing Interface (MPI) specification is widely used for solving significant scientific and engineering problems on parallel computers. There exist more than a dozen implementations on computer platforms ranging from IBM SP-2 supercomputers to clusters of PCs running Windows NT or Linux ("Beowulf" machines). The initial MPI Standard document, MPI-1, was recently updated by the MPI Forum. The new version, MPI-2, contains both significant enhancements to the existing MPI core and new features.

    Using MPI is a completely up-to-date version of the authors' 1994 introduction to the core functions of MPI. It adds material on the new C++ and Fortran 90 bindings for MPI throughout the book. It contains greater discussion of datatype extents, the most frequently misunderstood feature of MPI-1, as well as material on the new extensions to basic MPI functionality added by the MPI-2 Forum in the area of MPI datatypes and collective operations.

    Using MPI-2 covers the new extensions to basic MPI. These include parallel I/O, remote memory access operations, and dynamic process management. The volume also includes material on tuning MPI applications for high performance on modern MPI implementations.
    More Information Buy Now
     
  • Mitchel Resnick

    Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds (Complex Adaptive Systems)
    How does a bird flock keep its movements so graceful and synchronized? Most people assume that the bird in front leads and the others follow. In fact, bird flocks don't have leaders: they are organized without an organizer, coordinated without a coordinator. And a surprising number of other systems, from termite colonies to traffic jams to economic systems, work the same decentralized way. Turtles, Termites, and Traffic Jams describes innovative new computational tools that can qhelp people (even young children) explore the workings of such systems—and help them move beyond the centralized mindset.
    More Information Buy Now
     
  • Peter Pacheco

    Parallel Programming With MPI
    A hands-on introduction to parallel programming based on the Message-Passing Interface (MPI) standard, the de-facto industry standard adopted by major vendors of commercial parallel systems. This textbook/tutorial, based on the C language, contains many fully-developed examples and exercises. The complete source code for the examples is available in both C and Fortran 77. Students and professionals will find that the portability of MPI, combined with a thorough grounding in parallel programming principles, will allow them to program any parallel system, from a network of workstations to a parallel supercomputer.

    * Proceeds from basic blocking sends and receives to the most esoteric aspects of MPI.
    * Includes extensive coverage of performance and debugging.
    * Discusses a variety of approaches to the problem of basic I/O on parallel machines.
    * Provides exercises and programming assignments.
    More Information Buy Now
     
  • Mark Jason Dominus

    Higher-Order Perl: Transforming Programs with Programs
    Most Perl programmers were originally trained as C and Unix programmers, so the Perl programs that they write bear a strong resemblance to C programs. However, Perl incorporates many features that have their roots in other languages such as Lisp. These advanced features are not well understood and are rarely used by most Perl programmers, but they are very powerful. They can automate tasks in everyday programming that are difficult to solve in any other way. One of the most powerful of these techniques is writing functions that manufacture or modify other functions. For example, instead of writing ten similar functions, a programmer can write a general pattern or framework that can then create the functions as needed according to the pattern. For several years Mark Jason Dominus has worked to apply functional programming techniques to Perl. Now Mark brings these flexible programming methods that he has successfully taught in numerous tutorials and training sessions to a wider audience.

    * Introduces powerful programming methods—new to most Perl programmers—that were previously the domain of computer scientists
    * Gradually builds up confidence by describing techniques of progressive sophistication
    * Shows how to improve everyday programs and includes numerous engaging code examples to illustrate the methods
    More Information Buy Now
     
  • Scott Oaks, Henry Wong

    Java Threads
    More Information Buy Now
     
  • Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann

    Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects
    Designing application and middleware software to run in concurrent and networked environments is a significant challenge to software developers. The patterns catalogued in this second volume of Pattern-Oriented Software Architectures (POSA) form the basis of a pattern language that addresses issues associated with concurrency and networking.

    The book presents 17 interrelated patterns ranging from idioms through architectural designs. They cover core elements of building concurrent and network systems: service access and configuration, event handling, synchronization,

    and concurrency. All patterns present extensive examples and known uses in multiple programming languages, including C++, C, and Java.

    The book can be used to tackle specific software development problems or read from cover to cover to provide a fundamental understanding of the best practices for constructing concurrent and networked applications and middleware.

    About the Authors

    This book has been written by the award winning team responsible for the first POSA volume "A System of Patterns", joined in this volume by Douglas C. Schmidt from University of California, Irvine (UCI), USA.

    Visit our Web Page
    More Information Buy Now
     
  • Rohit Chandra, Leo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, Ramesh Menon

    Parallel Programming in OpenMP
    More Information Buy Now
     
  • Douglas Lea, Doug Lea

    Concurrent Programming in Java: Design Principles and Patterns (Java Series)
    More Information Buy Now
     
  • Bradford Nichols, Dick Buttlar, Jacqueline Proulx Farrell

    Pthreads Programming: A POSIX Standard for Better Multiprocessing (O'Reilly Nutshell)
    Computers are just as busy as the rest of us nowadays. They have lots of tasks to do at once, and need some cleverness to get them all done at the same time. That's why threads are seen more and more often as a new model for programming. Threads have been available for some time. The Mach operating system, the Distributed Computer Environment (DCE), and Windows NT all feature threads. One advantage of most UNIX implementations, as well as DCE, is that they conform to a recently ratified POSIX standard (originally 1003.4a, now 1003.1c), which allows your programs to be portable between them. POSIX threads are commonly known as pthreads, after the word that starts all the names of the function calls. The standard is supported by Solaris, OSF/1, AIX, and several other UNIX-based operating systems. The idea behind threads programming is to have multiple tasks running concurrently within the same program. They can share a single CPU as processes do, or take advantage of multiple CPUs when available. In either case, they provide a clean way to divide the tasks of a program while sharing data. A window interface can read input on dozens of different buttons, each responsible for a separate task. A network server has to accept simultaneous calls from many clients, providing each with reasonable response time. A multiprocessor runs a number-crunching program on several CPUs at once, combining the results when all are done. All these kinds of applications can benefit from threads. In this book you will learn not only what the pthread calls are, but when it is a good idea to use threads and how to make them efficient (which is the whole reason for using threads in the first place). The authors delves into performance issues, comparing threads to processes, contrasting kernel threads to user threads, and showing how to measure speed. He also describes in a simple, clear manner what all the advanced features are for, and how threads interact with the rest of the UNIX system. Topics include:
    • Basic design techniques
    • Mutexes, conditions, and specialized synchronization techniques
    • Scheduling, priorities, and other real-time issues
    • Cancellation
    • UNIX libraries and re-entrant routines
    • Signals
    • Debugging tips
    • Measuring performance
    • Special considerations for the Distributed Computing Environment (DCE)
    More Information Buy Now
     
  • Steve Otto, Steven Huss-Lederman, David Walker, Jack Dongarra

    Mpi: The Complete Reference (Scientific and Engineering Computation Series)
    This volume covers issues in parallel computing and programming, such as true portability, deadlock, high-performance message passing, and libraries for distributed and parallel computing. The authors explain why certain design choices were made and how users are meant to use the MPI interface.
    More Information Buy Now
     
  • Karl Kopper

    Linux Enterprise Cluster: Build a Highly Available Cluster with Commodity Hardware and Free Software
    The Linux Enterprise Cluster explains how to take a number of inexpensive computers with limited resources, place them on a normal computer network, and install free software so that the computers act together like one powerful server. This makes it possible to build a very inexpensive and reliable business system for a small business or a large corporation. The book includes information on how to build a high-availability server pair using the Heartbeat package, how to use the Linux Virtual Server load balancing software, how to configure a reliable printing system in a Linux cluster environment, and how to build a job scheduling system in Linux with no single point of failure. The book also includes information on high availability techniques that can be used with or without a cluster, making it helpful for System Administrators even if they are not building a cluster. Anyone interested in deploying Linux in an environment where low cost computer reliability is important will find this book useful. The CD-ROM includes all of the software needed to build a Linux Enterprise Cluster, including the Linux kernel, rsync, the SystemImager package, the Heartbeat package, the Linux Virtual Server package, the Mon monitoring package, and the Ganglia package. All figures in the book are also included on the CD-ROM.
    More Information Buy Now
     
  • Michael J. Quinn

    Parallel Programming in C with MPI and OpenMP
    The era of practical parallel programming has arrived, marked by the popularity of the MPI and OpenMP software standards and the emergence of commodity clusters as the hardware platform of choice for an increasing number of organizations. This exciting new book, "Parallel Programming in C with MPI and OpenMP" addresses the needs of students and professionals who want to learn how to design, analyze, implement, and benchmark parallel programs in C using MPI and/or OpenMP. It introduces a rock-solid design methodology with coverage of the most important MPI functions and OpenMP directives. It also demonstrates, through a wide range of examples, how to develop parallel programs that will execute efficiently on today's parallel platforms.
    More Information Buy Now
     
  • Clif Flynt

    Tcl/Tk, Second Edition: A Developer's Guide (The Morgan Kaufmann Series in Software Engineering and Programming)
    Tcl/Tk (Tool Command Language/Tool Kit) makes it fast and easy to implement any type of application, from games to network analyzers. Tcl/Tk is a full-bodied, mature programming platform used by NASA rocket scientists, Wall Street database experts, Internet designers, and open source programmers around the world. Tcl/Tk's multi-faceted and extensible nature make it ideal for developing end-user GUIs, client/server middleware, Web applications, and more. You can code completely in Tcl, use any of hundreds of extensions, call C or Java subroutines from Tcl/Tk, or use Tcl to glue legacy applications together.

    Written from a programmer's perspective, Tcl/Tk: A Developer's Guide describes how to use Tcl's standard tools and the unique features that make Tcl/Tk powerful: including graphics widgets, packages, namespaces, and extensions. With this book an experienced programmer will be able to code Tcl in a few hours. In just a few chapters you will learn about Tcl features that allow you to isolate and protect your code from being damaged in large applications. You will even learn how to extend the language itself.

    Tcl/Tk: A Developer's Guide clearly discusses development tools, proven techniques, and existing extensions. It shows how to use Tcl/Tk effectively and provides many code examples. This fully revised new edition is the complete resource for computer professionals, from systems administrators to programmers. It covers versions 7.4 to 8.4 and includes a CD-ROM containing the interpreters, libraries, and tutorials to get you started quickly. Additional materials in the book include case studies and discussions of techniques for the advanced user.

    On the CD-ROM
    *Distributions for Tcl 8.3 and 8.4 for Linux, Solaris, Macintosh, and Windows.
    *A copy of ActiveTcl from ActiveState.
    *The latest release of TclTutor.
    *How-to's and tutorials as well as copies of all the tools discussed in the book.
    *The author's "Tclsh Spot" articles from :login; magazine and the "Real World" Tcl/Tk chapters from the first edition.
    *Demo copies of commercial development tools from ActiveState and NeatWare.
    *Many open source Tcl/Tk development tools.
    *Tcl/Tk design guidelines.

    *Brings beginners up to speed quickly.
    *Overview of Tcl development tools, popular extensions, and packages.
    *Tips, style guidelines, and debugging techniques for the advanced user.
    More Information Buy Now
     
  • David E. Rumelhart, James L. McClelland, the PDP Research Group

    Parallel Distributed Processing - 2 Vol. Set: Explorations in the Microstructure of Cognition
    More Information Buy Now
     
  • Marvin L. Minsky, Seymour A. Papert

    Perceptrons - Expanded Edition: An Introduction to Computational Geometry
    Perceptrons - the first systematic study of parallelism in computation - has remained a classical work on threshold automata networks for nearly two decades. It marked a historical turn in artificial intelligence, and it is required reading for anyone who wants to understand the connectionist counterrevolution that is going on today.

    Artificial-intelligence research, which for a time concentrated on the programming of ton Neumann computers, is swinging back to the idea that intelligence might emerge from the activity of networks of neuronlike entities. Minsky and Papert's book was the first example of a mathematical analysis carried far enough to show the exact limitations of a class of computing machines that could seriously be considered as models of the brain. Now the new developments in mathematical tools, the recent interest of physicists in the theory of disordered matter, the new insights into and psychological models of how the brain works, and the evolution of fast computers that can simulate networks of automata have given Perceptrons new importance.

    Witnessing the swing of the intellectual pendulum, Minsky and Papert have added a new chapter in which they discuss the current state of parallel computers, review developments since the appearance of the 1972 edition, and identify new research directions related to connectionism. They note a central theoretical challenge facing connectionism: the challenge to reach a deeper understanding of how "objects" or "agents" with individuality can emerge in a network. Progress in this area would link connectionism with what the authors have called "society theories of mind."

    Marvin L. Minsky is Donner Professor of Science in MIT's Electrical Engineering and Computer Science Department. Seymour A. Papert is Professor of Media Technology at MIT.
    More Information Buy Now