mirror of https://github.com/BOINC/boinc.git
Updated Sporadic Applications (markdown)
parent
aae2ef17bd
commit
da225d408b
|
@ -2,22 +2,26 @@ BOINC was originally designed as a batch processing system:
|
|||
you submit jobs, they run (independently of each other)
|
||||
and eventually finish.
|
||||
But some potential uses of volunteer computing don't fit this model.
|
||||
They may require that their apps run simultaneously on different computers,
|
||||
They may require that apps run simultaneously on different computers,
|
||||
and perhaps that they communicate directly with each other.
|
||||
Examples include MPI-type parallel computing and distributed machine learning.
|
||||
|
||||
BOINC's 'sporadic application' mechanism is designed to support these types of systems,
|
||||
and to allow them to coexist with batch processing.
|
||||
|
||||
The jobs of a sporadic app run (i.e. are present in memory)
|
||||
all the time, like non-CPU-intensive jobs,
|
||||
but compute only some of the time.
|
||||
|
||||
Like regular apps, a sporadic app can have multiple app versions.
|
||||
Each of these app versions has a plan class,
|
||||
Each of these has a plan class,
|
||||
which determines the processor usage (CPUs and GPUs) of its jobs.
|
||||
A project's BOINC scheduler can send multiple jobs for a given sporadic app,
|
||||
using the same or different app versions.
|
||||
|
||||
A BOINC project can provide any combination of
|
||||
regular, sporadic, and non-CPU-intensive apps.
|
||||
A client can be connected to multiple projects with sporadic apps.
|
||||
|
||||
Like regular jobs, a sporadic job can compute only when
|
||||
* computing (and GPU computing if relevant) is enabled by user preferences
|
||||
* there are sufficient processing resources and RAM
|
||||
|
@ -122,5 +126,18 @@ enum SPORADIC_AC_STATE {
|
|||
|
||||
extern void boinc_sporadic_set_ac_state(SPORADIC_AC_STATE);
|
||||
extern SPORADIC_CA_STATE boinc_sporadic_get_ca_state();
|
||||
|
||||
```
|
||||
|
||||
## Prioritization of sporadic apps
|
||||
|
||||
In the initial implementation of sporadic apps (client 7.26),
|
||||
sporadic apps have strict priority over regular apps.
|
||||
Thus if a sporadic app does lots of computing
|
||||
it can starve regular app.
|
||||
If multiple sporadic apps compete for a resource (say, a GPU)
|
||||
the prioritization is fixed; one of them can starve the others.
|
||||
|
||||
In a later version, sporadic apps will be scheduled using the same
|
||||
scheme that is used for regular apps,
|
||||
in which resource share determines prioritization
|
||||
and starvation is eliminated.
|
Loading…
Reference in New Issue