ABSTRACT

Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 13.2.3 Using mclapply to Double Center a Matrix . . . . . . . . . . . . 430

13.3 Calling Parallel Codes in R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 13.3.1 Using RScaLAPACK to Solve Linear Algebra Problems 433 13.3.2 Using RScaLAPACK to Parallelize Dimension

Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 13.4 Creating Parallel Codes in R Using Rmpi . . . . . . . . . . . . . . . . . . . . . . . 436

13.4.1 Initialization and Termination . . . . . . . . . . . . . . . . . . . . . . . . . . 436 13.4.2 Initial Work Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 13.4.3 Point-to-point Communication . . . . . . . . . . . . . . . . . . . . . . . . . . 439 13.4.4 Collective Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 13.4.5 Parallel Graph Mining Example: PageRank . . . . . . . . . . . . 448

13.5 Practical Issues in Parallel Programming . . . . . . . . . . . . . . . . . . . . . . . . 451 13.5.1 Measuring Scalability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

13.5.1.1 Strong scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 13.5.1.2 Weak scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

13.5.2 Load Balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 13.6 Bibliographic Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

13.6.1 Explicit Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 13.6.2 Implicit Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 13.6.3 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 13.6.4 Grid-based Computing in R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 13.6.5 Integration with Existing Parallel Systems . . . . . . . . . . . . . 459

13.6.5.1 Parallel performance gains using graphical processing units (GPUs) . . . . . . . . . . . . . . . . . . . . . . 460

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .