

> system.time(b <- solve( crossprod(X), crossprod(X, y))) user system elapsed 0.854 0.002 0.448 It is possible to do more traditional parallel computing via the network-of-workstations style of computing, but we will not discuss that here. In particular, we will focus on functions that can be used on multi-core computers, which these days is almost all computers. In this chapter, we will discuss some of the basic funtionality in R for executing parallel computations. Getting access to a “cluster” of CPUs, in this case all built into the same computer, is much easier than it used to be and this has opened the door to parallel computing for a wide range of people. Even Apple’s iPhone 6S comes with a dual-core CPU as part of its A9 system-on-a-chip. These days though, almost all computers contain multiple processors or cores on them. Parallel computing in that setting was a highly tuned, and carefully customized operation and not something you could just saunter into.
#PARALLEL PROCESSING OPERATING SYSTEM SOFTWARE#
In those kinds of settings, it was important to have sophisticated software to manage the communication of data between different computers in the cluster. It used to be that parallel computation was squarely in the domain of “high-performance computing”, where expensive machines were linked together via high-speed networking to create large clusters of computers. Such a speed-up is generally not possible because of overhead and various barriers to splitting up a problem into \(n\) pieces, but it is often possible to come close in simple problems. The basic idea is that if you can execute a computation in \(X\) seconds on a single processor, then you should be able to execute it in \(X/n\) seconds on \(n\) processors. Generally, parallel computation is the simultaneous execution of different pieces of a larger computation across multiple computing processors or cores. Many computations in R can be made faster by the use of parallel computation.


