Publications by Radford Neal
Two textbooks on probability using R
This fall, I’ll be teaching a second-year course on Probability with Computer Applications, which is required for Computer Science majors. I’ve taught this before, but that was five years ago, so I’ve been looking to see what new textbooks would be suitable. The course aims not just to use computer science applications as examples, but ...
9075 sym 8 img
GRIMS — General R Interface for Markov Sampling
I have released a (very) preliminary version of my new MCMC software in R, which I’m calling GRIMS, for General R Interface for Markov Sampling. You can get it here. This software differs from other more-or-less general MCMC packages in several respects, all but one of which make it, I think, a much better tool for serious MCMC applications. He...
4816 sym 4 img
Announcing pqR: A faster version of R
pqR — a “pretty quick” version of R — is now available to be downloaded, built, and installed on Linux/Unix systems. This version of R is based on R-2.15.0, but with many performance improvements, as well as some bug fixes and new features. Notable improvements in pqR include: Multiple processor cores can automatically be used to per...
4329 sym 6 img
Parallel computation with helper threads in pqR
One innovative feature of pqR (my new, faster, version of R), is that it can perform some numeric computations in “helper” threads, in parallel with other such numeric computations, and with interpretive operations performed in the “master” thread. This can potentially speed up your computations by a factor as large as the number of proc...
8254 sym 6 img
Comparing the speed of pqR with R-2.15.0 and R-3.0.1
As part of developing pqR, I wrote a suite of speed tests for R. Some of these tests were used to show how pqR speeds up simple real programs in my post announcing pqR, and to show the speed-up obtained with helper threads in pqR on systems with multiple processor cores. However, most tests in the suite are designed to measure the speed of more s...
6448 sym 4 img
How pqR makes programs faster by not doing things
One way my faster version of R, called pqR (see updated release of 2013-06-28), can speed up R programs is by not even doing some operations. This happens in statements like for (i in 1:1000000) ..., in subscripting expressions like v[i:1000], and in logical expressions like any(v>0) or all(is.na(X)). This is done using pqR’s internal “v...
5399 sym 4 img
Fixing R’s NAMED problems in pqR
In R, objects of most types are supposed to be treated as “values”, that do not change when other objects change. For instance, after doing the following: a <- c(1,2,3) b <- a a[2] <- 0 b[2] is supposed to have the value 2, not 0. Similarly, a vector passed as an argument to a function is not normally changed by the function. For exampl...
5907 sym R (167 sym/3 pcs) 4 img
Deferred evaluation in Renjin, Riposte, and pqR
The previously sleepy world of R implementation is waking up. Shortly after I announced pqR, my “pretty quick” implementation of R, the Renjin implementation was announced at UserR! 2013. Work also proceeds on Riposte, with release planned for a year from now. These three implementations differ greatly in some respects, but interestingly ...
7465 sym R (67 sym/1 pcs) 4 img
New version of pqR, now with task merging
I’ve now released pqR-2013-12-29, a new version of my speedier implementation of R. There’s a new website, pqR-project.org, as well, and a new logo, seen here. The big improvement in this version is that vector operations are sped up using task merging. With task merging, several arithmetic operations on a vector may be merged into a s...
5535 sym R (103 sym/1 pcs) 6 img 1 tbl
Inaccurate results from microbenchmark
The microbenchmark package is a popular way of comparing the time it takes to evaluate different R expressions — perhaps more popular than the alternative of just using system.time to see how long it takes to execute a loop that evaluates an expression many times. Unfortunately, when used in the usual way, microbenchmark can give inaccurate re...
7598 sym R (939 sym/4 pcs) 6 img