Add nOS-V non-blocking scheduler server events

The events are emitted when we enter the scheduler with the non-blocking
flag, which is usually the case when using the nosv_yield and
nosv_schedpoint API functions.

See: https://gitlab.bsc.es/nos-v/nos-v/-/merge_requests/155
This commit is contained in:
Rodrigo Arias 2025-03-20 13:01:34 +01:00
parent c3248cf0c4
commit a8a8a0e763
5 changed files with 20 additions and 9 deletions

View File

@ -10,10 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- OpenMP model version increased to 1.2.0.
- nOS-V model version increased to 2.5.0.
### Added
- Add support OpenMP label and task ID views.
- Add support for nOS-V non-blocking scheduler server events (`VSN` and `VSn`).
## [1.11.0] - 2024-11-08

View File

@ -1,7 +1,7 @@
# Emulator events
This is a exhaustive list of the events recognized by the emulator.
Built on Nov 13 2024.
Built on Mar 20 2025.
## Model nanos6
@ -633,7 +633,7 @@ List of events for the model *tampi* with identifier **`T`** at version `1.0.0`:
## Model nosv
List of events for the model *nosv* with identifier **`V`** at version `2.4.0`:
List of events for the model *nosv* with identifier **`V`** at version `2.5.0`:
<dl>
<dt><a id="VTc" href="#VTc"><pre>VTc(u32 taskid, u32 typeid)</pre></a></dt>
<dd>creates task %{taskid} with type %{typeid}</dd>
@ -660,9 +660,13 @@ List of events for the model *nosv* with identifier **`V`** at version `2.4.0`:
<dt><a id="VSf" href="#VSf"><pre>VSf</pre></a></dt>
<dd>is no longer hungry</dd>
<dt><a id="VS[" href="#VS["><pre>VS[</pre></a></dt>
<dd>enters scheduler server mode</dd>
<dd>enters scheduler server blocking mode</dd>
<dt><a id="VS]" href="#VS]"><pre>VS]</pre></a></dt>
<dd>leaves scheduler server mode</dd>
<dd>leaves scheduler server blocking mode</dd>
<dt><a id="VSN" href="#VSN"><pre>VSN</pre></a></dt>
<dd>enters scheduler server non-blocking mode</dd>
<dt><a id="VSn" href="#VSn"><pre>VSn</pre></a></dt>
<dd>leaves scheduler server non-blocking mode</dd>
<dt><a id="VU[" href="#VU["><pre>VU[</pre></a></dt>
<dd>starts submitting a task</dd>
<dt><a id="VU]" href="#VU]"><pre>VU]</pre></a></dt>

View File

@ -43,8 +43,10 @@ Track changes in emulator model versions.
## nOS-V
- nosv 2.5.0
- Add support for non-blocking scheduler server events `VS{Nn}`.
- nosv 2.4.0
- Add support for `nosv_cond_wait`, `nosv_cond_signal` and `nosv_cond_broadcast` events VA{oOgGkK}.
- Add support for `nosv_cond_wait`, `nosv_cond_signal` and `nosv_cond_broadcast` events `VA{oOgGkK}`.
- nosv 2.3.0
- Add `nosv.can_breakdown` attribute to metadata for breakdown checks.
- nosv 2.2.0

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2021-2024 Barcelona Supercomputing Center (BSC)
/* Copyright (c) 2021-2025 Barcelona Supercomputing Center (BSC)
* SPDX-License-Identifier: GPL-3.0-or-later */
#include "nosv_priv.h"
@ -26,6 +26,8 @@ static const int ss_table[256][256][3] = {
['f'] = { CHSS, POP, ST_SCHED_HUNGRY },
['['] = { CHSS, PUSH, ST_SCHED_SERVING },
[']'] = { CHSS, POP, ST_SCHED_SERVING },
['N'] = { CHSS, PUSH, ST_SCHED_SERVING }, /* Non-block */
['n'] = { CHSS, POP, ST_SCHED_SERVING },
['@'] = { CHSS, IGN, -1 },
['r'] = { CHSS, IGN, -1 },
['s'] = { CHSS, IGN, -1 },

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2021-2024 Barcelona Supercomputing Center (BSC)
/* Copyright (c) 2021-2025 Barcelona Supercomputing Center (BSC)
* SPDX-License-Identifier: GPL-3.0-or-later */
#include "nosv_priv.h"
@ -46,7 +46,8 @@ static struct ev_decl model_evlist[] = {
{ "VS@", "self assigns itself a task" },
{ "VSh", "enters the hungry state, waiting for work" },
{ "VSf", "is no longer hungry" },
PAIR_E("VS[", "VS]", "scheduler server mode")
PAIR_E("VS[", "VS]", "scheduler server blocking mode")
PAIR_E("VSN", "VSn", "scheduler server non-blocking mode")
PAIR_S("VU[", "VU]", "submitting a task")
PAIR_S("VMa", "VMA", "allocating memory")
@ -85,7 +86,7 @@ static struct ev_decl model_evlist[] = {
struct model_spec model_nosv = {
.name = model_name,
.version = "2.4.0",
.version = "2.5.0",
.evlist = model_evlist,
.model = model_id,
.create = model_nosv_create,