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)
|
you submit jobs, they run (independently of each other)
|
||||||
and eventually finish.
|
and eventually finish.
|
||||||
But some potential uses of volunteer computing don't fit this model.
|
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.
|
and perhaps that they communicate directly with each other.
|
||||||
Examples include MPI-type parallel computing and distributed machine learning.
|
Examples include MPI-type parallel computing and distributed machine learning.
|
||||||
|
|
||||||
BOINC's 'sporadic application' mechanism is designed to support these types of systems,
|
BOINC's 'sporadic application' mechanism is designed to support these types of systems,
|
||||||
and to allow them to coexist with batch processing.
|
and to allow them to coexist with batch processing.
|
||||||
|
|
||||||
The jobs of a sporadic app run (i.e. are present in memory)
|
The jobs of a sporadic app run (i.e. are present in memory)
|
||||||
all the time, like non-CPU-intensive jobs,
|
all the time, like non-CPU-intensive jobs,
|
||||||
but compute only some of the time.
|
but compute only some of the time.
|
||||||
|
|
||||||
Like regular apps, a sporadic app can have multiple app versions.
|
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.
|
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,
|
A project's BOINC scheduler can send multiple jobs for a given sporadic app,
|
||||||
using the same or different app versions.
|
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
|
Like regular jobs, a sporadic job can compute only when
|
||||||
* computing (and GPU computing if relevant) is enabled by user preferences
|
* computing (and GPU computing if relevant) is enabled by user preferences
|
||||||
* there are sufficient processing resources and RAM
|
* 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 void boinc_sporadic_set_ac_state(SPORADIC_AC_STATE);
|
||||||
extern SPORADIC_CA_STATE boinc_sporadic_get_ca_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