Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4572 + 2433 = 7005
Home Page

Solving the World's Toughest Computational Problems with Parallel Computing
Second Edition

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

Source Code Listings
This is the page for the Second Edition.
The page for the out-of-print First Edition is still available.


Copyright © 2019 by Alan Kaminsky.
All rights reserved.
Second edition, January 2019
ISBN: 9781987019742
Barnes & Noble Press

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 popular 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 42 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 Barnes & Noble.

(Note: A prepublication draft of the book dated July 2018 was 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 6.  Parallel Loops
–  Class PrimeSeq
–  Class PrimeSmp

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

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

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

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

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

Chapter 12.  Sequential Dependencies
–  Class ZombieSeq
–  Class ZombieSmp

Chapter 15.  Exhaustive Search
–  Interface GraphSpec
–  Class RandomGraph
–  Class AMGraph64
–  Class MinVerCovSeq
–  Class MinVerCovSmp
–  Class MinVerCovSeq2
–  Class MinVerCovSmp2

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

Chapter 17.  Parallel Work Queues
–  Class HamCycState
–  Class HamCycStateSmp
–  Class HamCycSeq
–  Class HamCycSmp

Part III.  Loosely Coupled Cluster

Chapter 18.  Massively Parallel
–  Class MineCoinClu

Chapter 19.  Hybrid Parallel
–  Class MineCoinClu2

Chapter 21.  Cluster Parallel Loops
–  Class MineCoinClu3

Chapter 22.  Cluster Parallel Reduction
–  Class PiClu

Chapter 23.  Cluster Load Balancing
–  Class TotientClu

Chapter 24.  File Output on a Cluster
–  Class MandelbrotClu

Chapter 25.  Interacting Tasks
–  Class ZombieClu

Chapter 26.  Cluster Heuristic Search
–  Class MinVerCovClu3

Chapter 27.  Cluster Work Queues
–  Class HamCycStateClu
–  Class HamCycClu

Chapter 28.  On-Demand Tasks
–  Class OddPrimeList
–  Class BigPrimeClu

Part IV.  GPU Acceleration

Chapter 29.  GPU Massively Parallel
–  Class OuterProductSeq
–  Class OuterProductGpu
– kernel

Chapter 30.  GPU Parallel Reduction
–  Class PiGpu
– kernel

Chapter 31.  Multi-GPU Programming
–  Class PiGpu2
– kernel

Chapter 32.  GPU Sequential Dependencies
–  Class ZombieGpu
– kernel

Chapter 33.  Objects on the GPU
–  Class ZombieGpu2
– kernel

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

–  Class KnapsackExhGpu
– kernel
–  Class KnapsackBnbGpu
– kernel

Part V.  Big Data

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

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

Chapter 37.  Big Data Analysis
–  Class MaxTemp01

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


Appendix A.  Clash of the Titans: C vs. Java
–  PiSeq.c source
–  PiSmp.c source


An archive is available containing all the illustrations in the book in PNG format.

Alan Kaminsky Department of Computer Science Rochester Institute of Technology 4572 + 2433 = 7005
Home Page
Copyright © 2019 by Alan Kaminsky. All rights reserved. Last updated 13-May-2019. Send comments to ark­@­