Add some Nanos6 emu documentation

This commit is contained in:
David Alvarez 2022-07-20 16:20:35 +02:00 committed by Rodrigo Arias
parent 740582d650
commit da56cd6d68

63
doc/emu_nanos6.txt Normal file
View File

@ -0,0 +1,63 @@
--- Nanos6 Emulation ---
The Nanos6 emulator generates four different Paraver views, which are explained
in this document.
--- Task id ---
The task id view represents the id of the Nanos6 task instance that is currently
executing on each thread/cpu. This id is a monotonically increasing identifier
assigned on task creation. Lower ids correspond to tasks created at an earlier
point than higher ids.
--- Task type ---
Every task in Nanos6 contains a task type, which roughly corresponds to the
actual location in the code a task was declared. For example if a function fn()
is declared as a Nanos6 task, and it is called multiple times in a program,
every created task will have a different id, but the same type.
In the view, each type is shown with a label declared in the source with the
label() attribute of the task. If no label was specified, one is automatically
generated for each type.
Note that in this view, event value is a hash function of the type label, so two
distinct types (tasks declared in different parts of the code) with the same
label will share event value and will hence be indistinguishable.
--- MPI Rank ---
Represents the current MPI rank for the currently running task in a thread or cpu.
--- Subsystem ---
Represents the internal Nanos6 subsystem each thread or cpu is currently
running. Here is a summary of each possible value with its meaning:
- Null or black (value 0): Either the thread is idle (blocked because there is
no work) or the current subsystem is not instrumented
- "Scheduler: Waiting for tasks": Actively waiting for tasks inside the scheduler
subsystem, registered but not holding the scheduler lock
- "Scheduler: Serving tasks": Inside the scheduler lock, serving tasks to other
threads
- "Scheduler: Adding ready tasks": Adding tasks to the scheduler queues, but outside of
the scheduler lock
- "Task: Running": Executing user task code
- "Task: Spawning function": Registering a new spawn function (programmatically
created task)
- "Task: Creating": Creating a new task, through nanos6_create_task
- "Task: Submitting": Submitting a recently created task, through
nanos6_submit_task
- "Dependency: Registering": Registering a task's dependencies
- "Dependency: Unregistering": Releasing a task's dependencies because it has
ended
- "Blocking: Taskwait": Task is blocked while inside a taskwait
- "Blocking: Blocking current task": Task is blocked through the Nanos6
blocking API
- "Blocking: Unblocking remote task": Unblocking a different task using the
Nanos6 blocking API
- "Blocking: Wait For": Blocking a deadline task, which will be re-enqueued
when a certain amount of time has passed
- "Threading: Attached as external thread": External/Leader thread (which has
registered to Nanos6) is running