Rodrigo Arias
6d584c646c
When running ovniver without LD_LIBRARY_PATH set, the loader couldn't find any ovni installation and therefore was failing to start the program. With this change we set the RUNPATH (not RPATH) of ovniver to the installation libdir, so when no other libovni library is loaded via LD_LIBRARY_PATH the one provided by the same source as ovniver is used. The value of LD_LIBRARY_PATH is also printed so we can determine where it may be loading libovni. Using LD_DEBUG=libs will give more information of the search process. Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/163
6.6 KiB
6.6 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
- New function
ovni_thread_require()
to selectively enable emulation models and check their version is compatible (if not used all models will be enabled). - Support for per-thread metadata
- Store the version of libovni in the metadata
- Streams are marked as finished when
ovni_thread_free()
is called. A warning is emitted in the emulator for those streams that are not finished properly. - List the emulation models and versions with
ovniemu -h
- New
-a
ovniemu option to enable all models
Changed
- Updated process metadata to version 2 (traces generated with an older libovni are not compatible with the emulator).
- Emulation models now have a semantic version (X.Y.Z) instead of just a number.
- Install ovniver with the runpath set.
1.4.1 - 2023-11-16
Changed
- Fix emulation for level 2 or lower in nOS-V with inline tasks by allowing duplicates in the subsystem channel.
1.4.0 - 2023-11-08
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.
- Use pkg-config to locate the nOS-V library and get the version. Use
PKG_CONFIG_LIBDIR=/path/to/nosv/install/lib/pkgconfig
to use a custom installation path.
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.