Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4525 + 2403 = 6928
Home Page

BIG CPU, BIG DATA
Solving the World's Toughest Computational Problems with Parallel Computing

Prof. Alan Kaminsky
Rochester Institute of Technology — Department of Computer Science


Copyright © 2016 by Alan Kaminsky.
All rights reserved.
First edition, July 2016
ISBN-13: 978-1534872288
ISBN-10: 1534872280
LCCN: 2016912153
CreateSpace Independent Publishing Platform, North Charleston, SC

In the twenty-first century, scientists and engineers are tackling the world's toughest computational problems with parallel computing. Using multiple processor cores running simultaneously, parallel computers are solving these problems in less time and with greater accuracy than ever before. Even desktop PCs nowadays are powerful parallel computers. To take full advantage of the capabilities of these machines, programmers must learn to write parallel programs.

BIG CPU, BIG DATA teaches you how to write parallel programs for multicore machines, compute clusters, GPU accelerators, and big data map-reduce jobs, in the Java language, with the free, easy-to-use, object-oriented Parallel Java 2 Library. The book also covers how to measure the performance of parallel programs and how to design the programs to run as fast as possible.

With 39 years of industrial and academic computing experience, Alan Kaminsky has been teaching parallel computing since 2004. He is a professor in the Department of Computer Science at the Rochester Institute of Technology.


Read the Preface and Table of Contents.

Order the book from CreateSpace.com. Also available from other online booksellers.

To reduce costs, the book is printed in black and white. An archive of the book's full-color illustrations in PNG format is available.

(Note: Pre-publication versions of the book dated August 2015 or earlier were free, Creative Commons licensed. The published book is not free and is not licensed under the Creative Commons license or any other license.)


Source Code Listings

Part II.  Tightly Coupled Multicore

Chapter 2.  Parallel Loops
–  Class PrimeSeq
–  Class PrimeSmp

Chapter 3.  Parallel Loop Schedules
–  Class MineCoinSeq
–  Class MineCoinSmp

Chapter 4.  Parallel Reduction
–  Class PiSeq
–  Class PiSmp
–  Class PiSmp2

Chapter 5.  Reduction Variables
–  Class StatTestSeq
–  Class StatTestSmp
–  Class Histogram
–  Class HistogramVbl

Chapter 6.  Load Balancing
–  Class TotientSeq
–  Class TotientSmp
–  Class TotientSmp2

Chapter 7.  Overlapping
–  Class MandelbrotSeq
–  Class MandelbrotSmp
–  Class MandelbrotSmp2

Chapter 8.  Sequential Dependencies
–  Class ZombieSeq
–  Class ZombieSmp

Chapter 11.  Exhaustive Search
–  Class MinVerCovSeq
–  Class MinVerCovSmp
–  Class MinVerCovSeq2
–  Class MinVerCovSmp2
–  Class RandomGraph

Chapter 12.  Heuristic Search
–  Class MinVerCovSeq3
–  Class MinVerCovSmp3
–  Class MinVerCovDist

Chapter 13.  Parallel Work Queues
–  Class HamCycSeq
–  Class HamCycSmp

Part III.  Loosely Coupled Cluster

Chapter 14.  Massively Parallel
–  Class MineCoinClu

Chapter 15.  Hybrid Parallel
–  Class MineCoinClu2

Chapter 17.  Cluster Parallel Loops
–  Class MineCoinClu3

Chapter 18.  Cluster Parallel Reduction
–  Class PiClu

Chapter 19.  Cluster Load Balancing
–  Class TotientClu

Chapter 20.  File Output on a Cluster
–  Class MandelbrotClu

Chapter 21.  Interacting Tasks
–  Class ZombieClu

Chapter 22.  Cluster Heuristic Search
–  Class MinVerCovClu3

Chapter 23.  Cluster Work Queues
–  Class HamCycClu

Part IV.  GPU Acceleration

Chapter 24.  GPU Massively Parallel
–  Class OuterProductSeq
–  Class OuterProductGpu
–  OuterProductGpu.cu kernel

Chapter 25.  GPU Parallel Reduction
–  Class PiGpu
–  PiGpu.cu kernel

Chapter 26.  Multi-GPU Programming
–  Class PiGpu2
–  PiGpu.cu kernel

Chapter 27.  GPU Sequential Dependencies
–  Class ZombieGpu
–  ZombieGpu.cu kernel

Chapter 28.  Objects on the GPU
–  Class ZombieGpu2
–  ZombieGpu2.cu kernel

Chapter 29.  GPU Heuristic Search
–  Class WV
–  WV.cu structure
–  Interface KnapsackProblem
–  Class KnapsackSC
–  Class SubsetSum
–  Class WalkSackGpu
–  WalkSackGpu.cu kernel

–  Class KnapsackExhGpu
–  KnapsackExhGpu.cu kernel
–  Class KnapsackBnbGpu
–  KnapsackBnbGpu.cu kernel

Part V.  Big Data

Chapter 30.  Basic Map-Reduce
–  Class Concordance01
–  Class Concordance02
–  Class Concordance03
–  Class Concordance04

Chapter 31.  Cluster Map-Reduce
–  Class IPAddress
–  Class WebLog01
–  Class WebLog02
–  Class WebLog03
–  Class WebLog04
–  Class WebLog05

Chapter 32.  Big Data Analysis
–  Class MaxTemp01

Chapter 33.  Map-Reduce Meets GIS
–  Class Nola911Block
–  Class Nola911

Appendices

Appendix A.  Clash of the Titans
–  PiSeq.c source
–  PiSmp.c source

Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4525 + 2403 = 6928
Home Page
Copyright © 2016 by Alan Kaminsky. All rights reserved. Last updated 30-Jul-2016. Send comments to ark­@­cs.rit.edu.