Chapter 3. multicore
multicore
is a popular parallel
programming package for use on multiprocessor and multicore computers. It
was written by Simon Urbanek, and first released on CRAN in 2009. It
immediately became popular because its clever use of the fork()
system call allows it to implement a
parallel lapply()
operation that is even
easier to use than snow
’s parLapply()
.
Unfortunately, because fork()
is a
Posix system call, multicore
can’t really
be used on Windows machines.[33] Fork()
can also cause
problems for functions that use resources that were allocated or initialized
exclusively for the master, or parent process. This is particularly a
problem with graphics functions, so it isn’t generally recommended to use
multicore
with an R GUI.[34] Nevertheless, multicore
works perfectly for most R functions on Posix systems, such as Linux and Mac
OS X, and its use of fork()
makes it very
efficient and convenient, as we’ll see in this chapter.
Quick Look
Motivation: You have an R script
that spends an hour executing a function using lapply()
on your laptop.
Solution: Replace lapply()
with the mclapply()
function from the multicore
package.
Good because: It’s easy to install, easy to use, and makes use of hardware that you probably already own.
How It Works
multicore
is intended to run on Posix-based multiprocessor and multicore systems. This includes almost all modern Mac OS X and Linux desktop and laptop computers. It can also be used on single nodes of a Linux cluster, for example, but ...
Get Parallel R now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.