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
|
|
|