e4b87609e7
Allow OpenMP tasks to run again
2025-05-07 16:39:37 +02:00
7275413370
Bump nOS-V model version to 2.5.1
...
See: https://gitlab.bsc.es/nos-v/nos-v/-/merge_requests/165
2025-05-02 13:46:01 +02:00
81c137a65e
Add OpenMP simple breakdown support
...
For now we only show the breakdown of the label and subsystem, without
the idle information.
2025-04-25 11:47:40 +02:00
a1a2941b64
Allow -b flag without nosv.can_breakdown
...
As we now have OpenMP and nOS-V models for breakdown, we may have the
situation in which nOS-V traces don't have enough events to enable the
breakdown model, but we do on OpenMP. Rather than stopping, disable the
nOS-V model with a warning and continue.
2025-04-23 15:32:52 +02:00
a8a8a0e763
Add nOS-V non-blocking scheduler server events
...
The events are emitted when we enter the scheduler with the non-blocking
flag, which is usually the case when using the nosv_yield and
nosv_schedpoint API functions.
See: https://gitlab.bsc.es/nos-v/nos-v/-/merge_requests/155
2025-03-21 16:57:44 +01:00
c3248cf0c4
Fix cast from pointer to integer in armv7
...
A pointer may not fit in a off_t type, so we first cast it to intptr_t
which must be able to hold it, then compute the diff which should fit in
a off_t and perform the cast.
Reported-by: Miquel Vidal Piñol <miquel.vidal@bsc.es>
2025-03-18 12:40:46 +01:00
Raúl Peñacoba Veigas
9826879bcd
Add OpenMP support for labels and taskID views
...
CI / build:rt (push) Failing after 15s
CI / build:debug (push) Successful in 13s
CI / build:asan (push) Failing after 13s
CI / build:nompi (push) Successful in 13s
CI / build:compilers (push) Successful in 13s
CI / build:local (push) Successful in 23s
Co-authored-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-12-09 16:41:16 +01:00
b5fd438ce0
Add nosv_cond API events (nosv 3.1.0)
2024-11-08 10:13:00 +01:00
31e8802803
Allow partial CPUs in thread metadata
2024-11-05 10:56:51 +01:00
04d984d4fc
Make cpu index check more strict
2024-10-25 14:22:37 +02:00
05c4ed4963
Remove info() call leftover in libovni
2024-10-25 14:22:37 +02:00
4c5e3ae151
Make all atomic operations explicit
2024-10-25 13:41:15 +02:00
bf8c609dbd
Remove trailing slashes from tracedir
2024-10-25 13:41:15 +02:00
c9bbd542c5
Store rank information in the libovni thread
...
Prevents threads from finishing while another thread is being
initializing the rank information, causing a race to read the rank and
nranks.
2024-10-25 13:41:15 +02:00
6e99d91dae
Use atomics to protect libovni process state
...
Multiple threads may attempt to initialize or finalize the process, so
we keep the state stored in an atomic integer to protect against bad
usage.
2024-10-25 13:41:15 +02:00
b49671d530
Always require the current ovni model
2024-10-25 13:41:15 +02:00
5c11c469f2
Make ovni.require a mandatory attribute
...
We no longer accept streams that don't have the ovni.require attribute.
2024-10-25 13:41:15 +02:00
361290e24f
Parse metadata from proc and loom directly
...
All the metadata keys are known to proc and loom only, making it
self-contained. The metadata.c module is no longer needed.
2024-10-25 13:41:15 +02:00
05c1724234
Move thread streams in ovni_thread_free()
...
The process metadata in metadata.json is no longer needed.
2024-10-25 13:41:15 +02:00
4180300e87
Reject incomplete thread streams
2024-10-25 13:41:15 +02:00
c61f5a8772
Ensure the thread is ready before adding cpus
2024-10-25 13:41:15 +02:00
72e60e97ea
Store .obs and .json paths in stream struct
2024-10-25 13:41:15 +02:00
132b2fd536
Store loom CPUs in thread metadata
2024-10-25 13:41:15 +02:00
12835ad23a
Store process information in thread metadata
2024-10-25 13:41:15 +02:00
06a2262db9
Load thread tid from metadata
2024-10-25 13:41:15 +02:00
cc5578e306
Store loom name in metadata instead of path
2024-10-25 13:41:15 +02:00
8765588667
Store ovni.part in stream metadata
...
Allows multiple types of streams for different system parts: thread,
process, cpu, node...
2024-10-25 13:41:15 +02:00
9a8dc382a2
Store stream metadata in stream.json
...
Place all stream files in its own stream directory.
2024-10-25 13:41:15 +02:00
85859a488d
Add more path utility functions
2024-10-25 13:41:15 +02:00
e54e3e684e
Store TID and PID in thread metadata
2024-10-25 13:41:15 +02:00
36cf3121d1
Fix implicit signed conversions
CI / build:rt (push) Failing after 12s
CI / build:asan (push) Failing after 12s
CI / build:nompi (push) Successful in 59s
CI / build:debug (push) Successful in 1m50s
CI / build:local (push) Successful in 2m2s
CI / build:compilers (push) Successful in 2m27s
2024-09-09 13:44:05 +02:00
c8b95313ff
Fix unaligned access to 64 bits payload
2024-09-09 13:44:05 +02:00
e5448af6d8
Rebuild ring buffer pointers after injecting events
...
The ring buffer pointers are no longer valid as we may have displaced
events around. The pointers of the affected region are reconstructed by
reading the events again, following their size.
2024-09-09 13:43:59 +02:00
49149e452c
Check ring buffer order after injecting events
...
Ensure that we are not reading garbage.
2024-09-09 09:10:04 +02:00
7496a6a866
Fix easy cases of unneeded casts
2024-09-09 08:28:08 +02:00
c8750b9dfd
Enable -Wconversion and -Wsign-conversion
...
Prevents implicit conversions to go undetected, as they will have to be
explicit now.
2024-09-09 08:28:02 +02:00
d98ca97624
Fix unaligned load of 4 bytes for typeid
...
Use memcpy() to move the typeid to an aligned address.
2024-07-29 13:17:37 +02:00
2457e50712
Use always base 10 integer formats with scanf()
...
The %i printf variant tries to autodetect the base, so 010 becomes 8.
2024-07-24 16:36:54 +02:00
439b716a71
Use int64_t printf formats for mark channels
2024-07-24 16:09:47 +02:00
093c91521a
Fix error format strings in mark API
2024-07-24 16:09:44 +02:00
3d8c84e17c
Fix heap when size_t is not unsigned long long
...
When the width of size_t doesn't match the width of the unsigned long
long type, the number of leading zeros doesn't match, making the
heap_get_move() function return incorrect values. This is the case on
ARMv7 with 32 bits, where size_t is 32 bits but unsigned long long is 64
bits.
We check the size of size_t to select which builtin we need. The sizeof
operator cannot be used at preprocessing, so we rely on the
optimizations to only leave the proper assembly instruction.
Fixes: https://pm.bsc.es/gitlab/rarias/ovni/-/issues/193
2024-07-24 15:12:09 +02:00
129020e1c5
Fix format errors in printf-like functions
2024-07-24 15:12:09 +02:00
d03fe10be8
Protect printf-like calls against format errors
2024-07-24 15:12:09 +02:00
3fdbb95080
Fix remaining problems for 32 bits architectures
2024-07-24 15:12:09 +02:00
Miquel Vidal i Pinyol
3103018404
Use format macro constants for fprintf and fscanf family functions
2024-07-24 15:12:09 +02:00
Miquel Vidal i Pinyol
478ed1f5d0
Use proper format specifiers
...
Allows compiling for architectures with different data type sizes
2024-07-24 15:12:09 +02:00
5448b5c0ec
Check duplicated mark channel types are the same
...
Ensure that two threads cannot define the same mark type with different
channel types.
2024-07-23 10:35:08 +02:00
be45235d15
Improve documentation of the mark API
2024-07-23 10:35:08 +02:00
87e4b829c5
Switch the mark tracking for threads to active
...
In the thread view, the values will still be visible when the thread
goes to Warming or Cooling states, instead of being removed like when
the thread enters the Paused state. The CPU view will continue to track
the running thread (only in the Running state).
2024-07-23 10:35:02 +02:00
fbb78ae22d
Avoid initialization of mark channels without types
...
There is no need to create any channel or connect any channel to the PRV
output.
2024-07-22 16:42:23 +02:00