Multicore
-
Bioinformatics: High Performance Parallel Computer Architectures (Embedded Multi-Core Systems)
Jul 2010 — By Bertil Schmidt and Editor
New sequencing technologies have broken many experimental barriers to genome scale sequencing, leading to the extraction of huge quantities of sequence data. This expansion of biological databases established the need for new ways to harness and apply the astounding amount of available genomic information and convert it into substantive biological understanding.
A complilation of recent approaches from prominent researchers, Bioinformatics: High Performance Parallel Computer Architectures discusses how to take advantage of bioinformatics applications and algorithms on a variety of modern parallel architectures. Two factors continue to drive the increasing use of modern parallel computer architectures to address problems in computational biology and bioinformatics: high-throughput techniques for DNA sequencing and gene expression analysis—which have led to an exponential growth in the amount of digital biological data—and the multi- and many-core revolution within computer architecture.
Presenting key information about how to make optimal use of parallel architectures, this book:
Describes algorithms and tools including pairwise sequence alignment, multiple sequence alignment, BLAST, motif finding, pattern matching, sequence assembly, hidden Markov models, proteomics, and evolutionary tree reconstruction
Addresses GPGPU technology and the associated massively threaded CUDA programming model
Reviews FPGA architecture and programming
Presents several parallel algorithms for computing alignments on the Cell/BE architecture, including linear-space pairwise alignment, syntenic alignment, and spliced alignment
Assesses underlying concepts and advances in orchestrating the phylogenetic likelihood function on parallel computer architectures (ranging from FPGAs upto the IBM BlueGene/L supercomputer)
Covers several effective techniques to fully exploit the computing capability of many-core CUDA-enabled GPUs to accelerate protein sequence database searching, multiple sequence alignment, and motif finding
Explains a parallel CUDA-based method for correcting sequencing base-pair errors in HTSR data
Because the amount of publicly available sequence data is growing faster than single processor core performance speed, modern bioinformatics tools need to take advantage of parallel computer architectures. Now that the era of the many-core processor has begun, it is expected that future mainstream processors will be parallel systems. Beneficial to anyone actively involved in research and applications, this book helps you to get the most out of these tools and create optimal HPC solutions for bioinformatics.
-
The Art of Multiprocessor Programming
Mar 2008 — By Maurice Herlihy and Nir Shavit
As the computer industry changes from single-processor to multiprocessor architectures, this revolution requires a fundamental change in how programs are written. To leverage the performance and power of multiprocessor programming, also known as multicore programming, you need to learn the new principles, algorithms, and tools presented in this book. It includes fully-developed Java examples detailing data structures, synchronization techniques, transactional memory, and more.
Prof. Maurice Herlihy, who coined the phrase "transactional memory," is on the faculty of Brown University. He is the recipient of the 2003 Dijkstra Prize in distributed computing. Prof. Nir Shavit is on the faculty of Tel-Aviv University and a member of the technical staff at Sun Microsystems Laboratories. In 2004 they shared the Gödel Prize, the highest award in theoretical computer science.
* THE book on multicore programming, the new paradigm of computer science
* Written by the world's most revered experts in multiprocessor programming and performance
* Includes examples, models, exercises, PowerPoint slides, and sample Java programs -
Intel Threading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism
Jul 2007 — By James Reinders
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.
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 the fewest 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.
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:
-
Software Pipelines and SOA: Releasing the Power of Multi-Core Processing
Jan 2009 — By Cory Isaacson
Build Breakthrough Performance into Any SOA or Advanced Computing Application
To meet unprecedented demand, IT organizations must improve application performance by an order of magnitude. Improving performance is even more crucial in SOA environments, which demand far more computing power than older architectures. Today’s multi-core servers can deliver the performance businesses require, but few applications take full advantage of them. Now, software innovator Cory Isaacson introduces an easier, more flexible approach to parallel processing—one that any IT organization can use to attain unprecedented levels of performance. Isaacson shows how Software Pipeline models can help you scale applications to any level required, maximize resources, deliver on challenging objectives, and achieve unprecedented ROI. He illuminates these techniques with real-life business scenarios and proven design patterns—everything architects, analysts, and developers need to start using them immediately.
This book’s in-depth coverage includes
How Software Pipelines work, what they can accomplish, and how you can apply them using the Software Pipelines Optimization Cycle (SPOC) Scaling applications via parallel processing while guaranteeing order of processing in mission-critical applications Solving performance problems in existing applications, and resolving bottlenecks in existing processes A complete, easy-to-adapt Pipelines Reference Framework Detailed code examples reflecting proven Pipelines Patterns Techniques that can be applied in any industry, with any programming language Specific architectural and design solutions for common business and technical challenges The future of Software Pipelines: emerging opportunities for “greenfield” development Tools, sample templates, source code, and up-to-date information at SoftwarePipelines.org
-
Parallel MATLAB for Multicore and Multinode Computers (Software, Environments and Tools)
Jun 2009 — By Jeremy Kepner
This is the first book on parallel MATLAB and the first parallel computing book focused on the design, code, debug, and test techniques required to quickly produce well-performing parallel programs.MATLAB is currently the dominant language of technical computing with one million users worldwide, many of whom can benefit from the increased power offered by inexpensive multicore and multinode parallel computers. MATLAB is an ideal environment for learning about parallel computing, allowing the user to focus on parallel algorithms instead of the details of implementation.
Parallel MATLAB for Multicore and Multinode Computers covers more parallel algorithms and parallel programming models than any other parallel programming book due to the succinctness of MATLAB. It presents a hands-on approach with numerous example programs; wherever possible, the examples are drawn from widely known and well-documented parallel benchmark codes that are representative of many real applications across the field of technical computing.
Audience: Intended for professional scientists and engineers, as well as undergraduate or graduate students, who use MATLAB. It is suitable as either the primary book in a parallel computing class or as a supplementary text in a numerical computing class or a computer science algorithms class.
Contents: List of Figures; List of Tables; List of Algorithms; Preface; Acknowledgments; Part I: Fundamentals: Chapter 1: Primer: Notation and Interfaces; Chapter 2: Introduction to pMatlab; Chapter 3: Interacting with Distributed Arrays; Part II: Advanced Techniques: Chapter 4: Parallel Programming Models; Chapter 5: Advanced Distributed Array Programming; Chapter 6: Performance Metrics and Software Architecture; Part III: Case Studies: Chapter 7: Parallel Application Analysis; Chapter 8: Stream; Chapter 9: RandomAccess; Chapter 10: Fast Fourier Transform; Chapter 11: High Performance Linpack; Appendix: Notation for Hierarchical Parallel Multicore Algorithms; Index
-
A Practical Programming Model for the Multi-Core Era: International Workshop on OpenMP, IWOMP 2007 Beijing, China, June 3-7, 2007, Proceedings
Jul 2008 — By Barbara Chapman, Editor; Weimin Zheng, Editor; Guang R. Gao, Editor; Mitsuhisa Sato, Editor; Eduard Ayguadé, Editor; and Dongsheng Wang, Editor
This book constitutes the thoroughly refereed post-workshop proceedings of the Third International Workshop on OpenMP, IWOMP 2007, held in Beijing, China, in June 2007. The 14 revised full papers and 8 revised short papers presented were carefully reviewed and selected from 28 submissions. The papers address all topics related to OpenMP, such as OpenMP performance analysis and modeling, OpenMP performance and correctness tools and proposed OpenMP extensions, as well as applications in various domains, e.g., scientific computation, video games, computer graphics, multimedia, information retrieval, optimization, text processing, data mining, finance, signal and image processing, and numerical solvers. -
Understanding Buildings: A Multidisciplinary Approach
Apr 1988 — By Esmond Reid
Understanding Buildings provides students in architecture and other allied disciplines with a basic introduction to building technology in all its aspects. This general, multidisciplinary text provides an overall explanation of the building process through an examination of underlying principles as well as design examples.In seven chapters, the book discusses structure, enclosure, climate services, utility services, lighting, acoustics, fire safety, and future needs. It is generously illustrated with 400 diagrams, tables, charts, and construction details.Esmond Reid is an architectural writer and consultant.
-
Parallel Programming: for Multicore and Cluster Systems
Mar 2010 — By Thomas Rauber and Gudula Rünger
Innovations in hardware architecture, like hyper-threading or multicore processors, mean that parallel computing resources are available for inexpensive desktop computers. In only a few years, many standard software products will be based on concepts of parallel programming implemented on such hardware, and the range of applications will be much broader than that of scientific computing, up to now the main application area for parallel computing. Rauber and Rünger take up these recent developments in processor architecture by giving detailed descriptions of parallel programming techniques that are necessary for developing efficient programs for multicore processors as well as for parallel cluster systems and supercomputers. Their book is structured in three main parts, covering all areas of parallel computing: the architecture of parallel systems, parallel programming models and environments, and the implementation of efficient application algorithms. The emphasis lies on parallel programming techniques needed for different architectures. The main goal of the book is to present parallel programming techniques that can be used in many situations for many application areas and which enable the reader to develop correct and efficient parallel programs. Many examples and exercises are provided to show how to apply the techniques. The book can be used as both a textbook for students and a reference book for professionals. The presented material has been used for courses in parallel programming at different universities for many years. -
Software Development for Embedded Multi-core Systems: A Practical Guide Using Embedded Intel Architecture
Apr 2008 — By Max Domeika
The multicore revolution has reached the deployment stage in embedded systems ranging from small ultramobile devices to large telecommunication servers. The transition from single to multicore processors, motivated by the need to increase performance while conserving power, has placed great responsibility on the shoulders of software engineers. In this new embedded multicore era, the toughest task is the development of code to support more sophisticated systems. This book provides embedded engineers with solid grounding in the skills required to develop software targeting multicore processors. Within the text, the author undertakes an in-depth exploration of performance analysis, and a close-up look at the tools of the trade. Both general multicore design principles and processor-specific optimization techniques are revealed. Detailed coverage of critical issues for multicore employment within embedded systems is provided, including the Threading Development Cycle, with discussions of analysis, design, development, debugging, and performance tuning of threaded applications. Software development techniques engendering optimal mobility and energy efficiency are highlighted through multiple case studies, which provide practical "how-to” advice on implementing the latest multicore processors. Finally, future trends are discussed, including terascale, speculative multithreading, transactional memory, interconnects, and the software-specific implications of these looming architectural developments.
Table of Contents
Chapter 1 - Introduction
Chapter 2 - Basic System and Processor Architecture
Chapter 3 - Multi-core Processors & Embedded
Chapter 4 -Moving To Multi-core Intel Architecture
Chapter 5 - Scalar Optimization & Usability
Chapter 6 - Parallel Optimization Using Threads
Chapter 7 - Case Study: Data Decomposition
Chapter 8 - Case Study: Functional Decomposition
Chapter 9 - Virtualization & Partitioning
Chapter 10 - Getting Ready For Low Power Intel Architecture
Chapter 11 - Summary, Trends, and Conclusions
Appendix I
Glossary
References
* Get up to speed on multicore design! This is the only book to explain software optimization for embedded multicore systems
* Helpful tips, tricks and design secrets from an Intel programming expert, with detailed examples using the popular X86 architecture
* Covers hot topics including ultramobile devices, low-power designs, Pthreads vs. OpenMP, and heterogeneous cores

