wiki:AndroidBoinc

Version 2 (modified by davea, 12 years ago) (diff)

--

BOINC on Android

History and people

Jeff Eastlack (then of Freescale) has been working on getting SETI@home (and other scientific programs) to run fast on ARM processors since 2007. As of 2011 he had SETI@home doing about 1 GFLOPS on the latest Freescale processor.

In 2008 a team led by Oded Ben-Dov ported SETI@home and a simplified BOINC client to Java on Android. This was a proof of concept but is not the right long-term approach, as Android is now able to run native-mode programs.

At about the same time, Peter Hanappe from Sony Research wrote, in C++, a simplified BOINC client called BOINCLite, which is able to handle only 1 project attachment and 1 job at a time. We considered this as a basis for BOINC on Android but decided it was too limited.

At the 2011 BOINC Workshop, Keith Uplinger, Peter Hanappe and Michael Tarantino experimented with Android and wrote up instructions for building Android apps on Windows.

In 2011, Carl Christensen and Peter Hanappe independently built the BOINC client (and the various libraries it uses) on Android.

In 2012 Janus Kristensen wrote a [wiki:BOINConPhones document about the battery and energy impacts of computing on phones].

Architecture

As of now, the preferred architecture is based on the standard BOINC client, so that we can allow multiple attachments, multiple jobs running in parallel, and queued jobs.

On Win/Mac/Linux, the GUI and the client are separate processes that communicate over a TCP connection. However (as proposed by Peter Hanappe) for Android it's probably better to bundle them in the same program. The BOINC client would be included as a library, and would run in a separate thread.

What about the GUI?

The current BOINC GUI (the Manager) is implemented using WxWidgets?, for which no port to Android exists. Also, though the Manager's "simple view" is similar to what we might want on Android, it's not quite right.

So the plan is to implement a new GUI, in Java, using the Android toolkit, which will communicate with the client using the existing GUI RPC mechanism. (Note: this mechanism currently uses a TCP connection, but it could be modified to use Unix pipes or some other IPC mechanism).

Note: someone (I'm not sure who) has already implemented a BOINC GUI for Android:

http://code.google.com/p/androboinc/

This is intended to control BOINC clients running on remote hosts, but in principle it could control a local client. I haven't looked at it.

Project plan

To be determined