64 lines
2.8 KiB
Plaintext
64 lines
2.8 KiB
Plaintext
|
--- 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
|
||
|
|