Skip to content

Commit

Permalink
Update application model and task type sections
Browse files Browse the repository at this point in the history
  • Loading branch information
oezden committed Oct 25, 2023
1 parent f297a7c commit 4b720e2
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 22 deletions.
28 changes: 14 additions & 14 deletions workload/application-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ Scheduling decisions to reconfigure a job are not applied immediately but when t

Users define phases by specifying the following properties using the JSON format:

| Property | Description | Value type | Default value | Mandatory |
|----------------------------|----------------------------------------------------------------------------------------------------------------------|------------|---------------|-----------|
| ``phases`` | Array containing all phases (top-level structure) | array | - | Yes |
| ``iterations`` | Number of iterations (i.e., repetitions) of the phase | integer | 0 | No |
| ``scheduling_point`` | Whether a scheduling point is included at the end of (each iteration of) the phase | bool | true | No |
| ``final_scheduling_point`` | Whether the final scheduling point is included | bool | true | No |
| ``barrier`` | Whether there is a barrier at the end of the phase (only considered when there is no corresponding scheduling point) | bool | true | No |
| ``tasks`` | Array holding the tasks of the phase | array | - | Yes |
| Property | Description | Value type | Default value | Mandatory |
|----------------------------|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|---------------|-----------|
| ``phases`` | Array containing all phases (top-level structure) | array | - | Yes |
| ``iterations`` | Number of iterations (i.e., repetitions) of the phase (has to be inferable at start time) | integer or string (see [Performance models](/workload/performance-models)) | 0 | No |
| ``scheduling_point`` | Whether a scheduling point is included at the end of (each iteration of) the phase | bool | true | No |
| ``final_scheduling_point`` | Whether the final scheduling point is included | bool | true | No |
| ``barrier`` | Whether there is a barrier at the end of the phase (only considered when there is no corresponding scheduling point) | bool | true | No |
| ``tasks`` | Array holding the tasks of the phase | array | - | Yes |

### Reconfiguration penalty

Expand All @@ -43,12 +43,12 @@ Reconfiguring applications during runtime can introduce additional overhead whil

Analogously, tasks are defined with the following properties:

| Property | Description | Value type | Default value | Mandatory |
|------------------|------------------------------------------------------------------------------------------------------------------------------------|------------|---------------|-----------|
| ``type`` | Task type (see [Task types](/workload/task-types)) | string | - | Yes |
| ``name`` | Name of the task (only relevant in log messages) | bool | None | No |
| ``iterations`` | Number of iterations (i.e., repetitions) of the task | integer | 0 | No |
| ``synchronized`` | Whether all resources (i.e., compute nodes) synchronize before executing the task (similar to an *MPI_Barrier()* before execution) | bool | false | No |
| Property | Description | Value type | Default value | Mandatory |
|------------------|------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|---------------|-----------|
| ``type`` | Task type (see [Task types](/workload/task-types)) | string | - | Yes |
| ``name`` | Name of the task (only relevant in log messages) | string | None | No |
| ``iterations`` | Number of iterations (i.e., repetitions) of the task | integer or string (see [Performance models](/workload/performance-models)) | 0 | No |
| ``synchronized`` | Whether all resources (i.e., compute nodes) synchronize before executing the task (similar to an *MPI_Barrier()* before execution) | bool | false | No |

## Example application model

Expand Down
16 changes: 8 additions & 8 deletions workload/task-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ ElastiSim defines two types of distribution patterns: *vector* and *matrix*. Whi

### Vector distribution patterns

| Pattern | Description |
|--------------------------------------------|---------------------------------------------------------------------------------------------------------|
| ~~``total``~~ *(deprecated)* ``all_ranks`` | The payload is evenly distributed among all resources |
| ``root_only`` | Only the first resource performs the specified payload |
| ``even_ranks`` | The payload is evenly distributed among all even-numbered resources |
| ``odd_ranks`` | The payload is evenly distributed among all odd-numbered resources |
| ``uniform`` | All assigned resources perform the specified payload *without any distribution* |
| ``vector`` | An explicit vector defining the payload for each participating resource (only applicable to rigid jobs) |
| Pattern | Description |
|----------------|---------------------------------------------------------------------------------------------------------|
| ``all_ranks`` | The payload is evenly distributed among all resources |
| ``root_only`` | Only the first resource performs the specified payload |
| ``even_ranks`` | The payload is evenly distributed among all even-numbered resources |
| ``odd_ranks`` | The payload is evenly distributed among all odd-numbered resources |
| ``uniform`` | All assigned resources perform the specified payload *without any distribution* |
| ``vector`` | An explicit vector defining the payload for each participating resource (only applicable to rigid jobs) |

{: .note }
``uniform`` is the only exception to other distribution patterns (vector and matrix), as it does not distribute the workload but describes the payload *per resource*. It is syntactic sugar for the pattern ``all_ranks`` with the performance model ``<payload size> * num_nodes`` or ``<payload size> * num_gpus``.
Expand Down

0 comments on commit 4b720e2

Please sign in to comment.