[R-SIG-Mac] CRAN package checks on M1 Mac
Prof Brian Ripley
r|p|ey @end|ng |rom @t@t@@ox@@c@uk
Sun Dec 13 06:45:25 CET 2020
We have managed a fairly complete check run with natively-compiled R and
packages, and a full one with x86_64 R and packages running under
Rosetta (mainly using CRAN binary distributions).
The bottom line is that running under Rosetta works really well.
Although relative speeds vary widely, using the native build was
1.3-1.5x faster for the central 50% of the distribution. And a MacBook
Air is remarkably capable for a lightweight laptop.
x86_64 tests
------------
I compared the check output to that from my 2012 iMac: typically this
was 1.7x faster than the iMac (and benchmarks have current iMac/MacMini
about that much faster than mine).
A couple of packages ran much slower than on the iMac and hit their
check limits, and one fails because it checks elapsed time (and was
slower than on the iMac).
10 packages segfaulted in their checks (but most of those are known to
segfault intermittently on other platforms).
There were issues with packages attempting to work with Python, which
may be Big Sur differences.
Given that I have 58 packages failing their checks on the iMac under
High Sierra this was a very small amount of degradation.
native tests
------------
Currently I have 57 CRAN packages failing to install, but 650 others
require those or BioC packages which fail to install (the most commonly
required being rgl and V8 [*]). And ca 120 packages are not using
conditionally Suggests packages which fail to install.
There are segfaults from ca 150 packages using minpack.lm::nls.lm,
deSolve::lsoda, rootSolve::stode ... all of which use Fortran.
That platform does not have long doubles nor extended precision but the
CRAN checking on Linux and Sparc with --disable-long-doubles has paid
off: only a handful of check results show numerical differences.
Quite a lot of external software and several packages have had to be
patched, and it is early days for the former (and the Fortran compiler)
- for example I was able to build v8, but V8 segfaulted in its checks.
Currently ca 400 packages which install fail their checks.
Note that all these checks were done with enough parallelism to have the
machine 80-90% loaded, which it managed for days at a time without even
getting warm. However (not just on this machine) running multiple tasks
in parallel takes more CPU time for each. To illustrate that, I re-ran
the native Matrix check on its own: the CPU time decreased from 185s to
120s.
[*] But many of the packages requiring them to install do not actually
use them in their checks so fake installs would do. The results
reported here were without fake installs.
--
Brian D. Ripley, ripley using stats.ox.ac.uk
Emeritus Professor of Applied Statistics, University of Oxford
More information about the R-SIG-Mac
mailing list