Rodrigo Arias
4b4f1bd218
In nOS-V, when a task was paused via the VTp event, two things were happening: 1) the task state was set to pause and 2) the subsystem state "Task: Running" was being popped. This causes a problem when a task calls nosv_submit() in blocking mode, as it will call nosv_pause() which will emit a VTp event from a subsystem different than "Task: Running". To solve this conflict, we handle the subsystems state and the task state separately with the VTp and VTr events. The subsystem state "Task: Running" no longer is connected to the state of the task and only shows if we entered the body of the task or not. It has now been renamed to "Task: In body". The new state "Task: In body" represents that the task body has begun the execution and is still in the stack, but the task may be paused. The subsystem is not changed by the VTp (pause) or VTr (resume) events. Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/128
5.4 KiB
5.4 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Add
OVNI_TRACEDIR
envar to change the trace directory (default isovni
).
Changed
- Don't modify nOS-V subsystem state on task pause. The "Task: Running" state is now renamed to "Task: In body" to reflect the change.
1.3.0 - 2023-09-07
Added
- Add
ovni_version_get()
function. - Add the
ovniver
program to report the libovni version and commit. - Add nOS-V API subsystem events for
nosv_create()
andnosv_destroy()
. - Add TAMPI model with
T
code. - Add subsytem events and cfgs for TAMPI model.
- Add MPI model with
M
code. - Add function events and cfgs for MPI model.
1.2.2 - 2022-07-26
Added
- Add this CHANGELOG.md file to keep track of changes.
Fixed
- Don't rely on /tmp or $TMPDIR in tests.
- Fix misleading message in version check.
- Fix error message when opening missing trace directories
1.2.1 - 2022-07-25
Fixed
- Set default visibility to hidden to prevent clashes with other functions such as the verr() in the glibc.
- Don't hardcore destination directory names like lib, to use the ones in the destination host (like lib64).
- Add support in ovnisort for cases where in the sorting region there are flush events.
- Remove CI nix roots from the builds to allow the garbage collector to remove the build.
- Fix the detection of the -fompss-2 flag in cmake by setting the flag at link time too.
- Fix spawn task test by waiting for the task to finish before exiting.
1.2.0 - 2022-05-02
This version adds the initial support for the breakdown view and some fixes.
Added
- Add the initial breakdown view showing the task type, the subsystem or the idle state.
- Added the sort module for channels to support the breakdown view.
- Add the -b option in ovniemu to enable the breakdown trace.
- Add support for sponge CPUs in Nanos6.
- Add the cmake option
-DUSE_MPI=OFF
to build ovni without MPI. - Add a test for two nOS-V shared memory segments.
Fixed
- Sort the timeline rows in MPI rank order if given.
- Skip duplicated entries when ovnisync to runs multiple times in the same node.
- Allow tasks to be re-executed to support the taskiter in the nOS-V model.
- Use the signed
int64_t
type for clock offsets, so they can be negative. - Avoid fmemopen() due to a bug in old glibc versions.
- Fix clang format for braced list
- Fix buffer overflow in
sort_replace()
of the sort module. - Set the size of the channel property arrays to prevent a buffer overflow.
1.1.0 - 2022-03-24
This version introduces the patch bay and a big redesign in the way the channels are used along with some other changes.
Changed
- The channels are now connected using the patch bay, where they must be registered using an unique name.
- The tracking modes are implemented by using a mux, and an arbitrary way of tracking other channels is now possible, as it is required for the breakdown model.
- The channels don't have visibility with other parts of the code, they interact with a callback only.
- The emulator code has been split into smaller modules which are independent of each other, so we can unit test them separately.
- The models are now implemented following the model spec functions.
- Updated the ovni and Nanos6 models
- Model data is now stored by the
extend_set
/get
methods, so it is kept separate between models. - The CPU and thread channels have been moved to the emulator while the ones specific to the user space tracing with libovni.so are controlled by the ovni model. This allows other thread/CPU tracing mechanisms (kernel events) to update the emulator channels while the other models are not affected.
- The trace streams are now independent of the hierarchy loom/proc/thread, and end with the suffix .obs, so we can add other types of traces in the future.
- Models can register any arbitrary number of channels on runtime, so we can add load hardware counters in one channel each.
- Channels have a user friendly name so debugging is easier
- The die() abort mechanism has been transformed into if() + return -1, so we can do unit testing and check the errors and also finish the PRV traces when the emulator encounters an error and open them in Paraver with the last processed event.
- The emulator can be stopped with ^C, producing a valid Paraver trace.
- Prevents leaving threads in the running state by adding a check at the end of emulation
- The Paraver configurations files are copied into the trace directory.
Removed
- The TAMPI and OpenMP models have been removed as they are not maintained.
- Punctual events are not implemented for now.
- No error states, when more than one thread is running in the virtual CPU, no subsystem is shown in the CPU view.
1.0.0 - 2022-12-16
Added
- First ovni release.