Add some Nanos6 emu documentation
This commit is contained in:
parent
740582d650
commit
da56cd6d68
63
doc/emu_nanos6.txt
Normal file
63
doc/emu_nanos6.txt
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user