Dear Ivo Welch,

Sorry for not answering the question you asked (I don't know such a
vendor), but here are a few comments that may help:

On Tue, 29 Apr 2025 17:20:25 -0700
ivo welch <ivo.we...@ucla.edu> wrote:

> These computers are mostly idle overnight.  We have no interest in
> bitmining and SETI@home doesn't seem so very active any more, either.
> Alas, it's 2025 now, so maybe there is something better we could do
> with all this idle compute power when it comes to our own statistical
> analyses. Maybe we could cluster them overnight.

The state of the art in volunteer computing is still BOINC, the same
system that powers most of the "@home" projects. It lets the user
control when to run the jobs and when to stop (e.g. run jobs overnight
but only if the system is not under load by something else) and doesn't
require the job submitter to be able to log in to the worker nodes or
even rely on the nodes being able to accept incoming connections.

It's possible to run a BOINC server yourself [1], although the server
side will take some work to set up, and the jobs need to be specially
packaged. In theory, one could package R as a BOINC app and arrange for
it to run jobs serialized into *.rds files, but it's a lot of
infrastructure work to place all the moving parts in correct positions
(package versions alone are a serious problem with no easy solution).

> Ideally, we would then have a frontend R (controller) that could run
> `mclapply` statements on this Franken-computer, and be smart enough
> about how to distribute the load.

One problem with parLapply() is that it expects the cluster object to
be a list containing a fixed number of node objects. I've experimented
with a similar problem: I needed to distribute jobs between my
colleagues' workstations when they could spare some CPU power, letting
computers leave and rejoin the cluster at will. In the end, I had to
pretend that my 'parallel' cluster always contained an excessive number
of nodes (128) and distribute the larger number of smaller sub-tasks
dynamically.

A general-purpose interface for a volunteer cluster will probably not
work as a drop-in replacement for mclapply(). You might be able to
achieve part of what you want using 'mirai', telling every worker node
to connect to the client node for tasks. BOINC can set memory and CPU
core limits, but it might be unable to save you from inefficient job
plans. See 'future.batchtools' for an example of an R interface for
cluster job submission systems.

-- 
Best regards,
Ivan

[1] https://github.com/BOINC/boinc/wiki/BOINC-apps-(introduction)

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to