diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e24cd0b..457b227 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -19,30 +19,8 @@ set(OVNI_TEST_BUILD_DIR "${CMAKE_BINARY_DIR}/test")
include(macros.cmake)
-# Only run performance sensitive tests on Release builds
-if(CMAKE_BUILD_TYPE STREQUAL "Release")
- ovni_test(NAME flush-overhead)
-endif()
+add_subdirectory(manual)
-ovni_test(NAME flush)
-ovni_test(NAME mp-simple MP)
-ovni_test(NAME mp-rank MP)
-
-ovni_test(NAME nosv-nested-tasks)
-ovni_test(NAME nosv-nested-tasks-bad SHOULD_FAIL
- REGEX "fatal: cannot execute task 1: state is not created")
-ovni_test(NAME nosv-task-types MP)
-ovni_test(NAME nosv-pause MP)
-
-ovni_test(NAME nanos6-nested-tasks)
-ovni_test(NAME nanos6-nested-tasks-bad SHOULD_FAIL
- REGEX "fatal: cannot execute task 1: state is not created")
-ovni_test(NAME nanos6-task-types MP)
-ovni_test(NAME nanos6-blocking MP)
-ovni_test(NAME nanos6-subsystems MP)
-ovni_test(NAME nanos6-ss-mismatch MP SHOULD_FAIL
- REGEX "fatal: thread 0 has left 1 state(s) in the subsystem channel, top state=2")
-
-if(BUILD_RT_TESTING)
+if(ENABLE_TEST_RT)
add_subdirectory(rt)
endif()
diff --git a/test/manual/CMakeLists.txt b/test/manual/CMakeLists.txt
new file mode 100644
index 0000000..e6930bb
--- /dev/null
+++ b/test/manual/CMakeLists.txt
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+add_subdirectory(ovni)
+add_subdirectory(nosv)
+add_subdirectory(nanos6)
diff --git a/test/instr.h b/test/manual/instr.h
similarity index 97%
rename from test/instr.h
rename to test/manual/instr.h
index c0b34f6..6bf1d2a 100644
--- a/test/instr.h
+++ b/test/manual/instr.h
@@ -15,8 +15,8 @@
* along with this program. If not, see .
*/
-#ifndef OVNI_TEST_INSTR_H
-#define OVNI_TEST_INSTR_H
+#ifndef INSTR_H
+#define INSTR_H
#define _GNU_SOURCE /* For gethostname() */
@@ -123,4 +123,4 @@ instr_end(void)
ovni_proc_fini();
}
-#endif /* OVNI_TEST_INSTR_H */
+#endif /* INSTR_H */
diff --git a/test/manual/nanos6/CMakeLists.txt b/test/manual/nanos6/CMakeLists.txt
new file mode 100644
index 0000000..9870642
--- /dev/null
+++ b/test/manual/nanos6/CMakeLists.txt
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+ovni_test(NAME nanos6-nested-tasks)
+ovni_test(NAME nanos6-nested-tasks-bad SHOULD_FAIL
+ REGEX "fatal: cannot execute task 1: state is not created")
+ovni_test(NAME nanos6-task-types MP)
+ovni_test(NAME nanos6-blocking MP)
+ovni_test(NAME nanos6-subsystems MP)
+ovni_test(NAME nanos6-ss-mismatch SHOULD_FAIL
+ REGEX "thread [0-9]\\+ ended with 1 extra stacked nanos6 subsystems, top=ST_NANOS6_SCHED_HUNGRY")
diff --git a/test/instr_nanos6.h b/test/manual/nanos6/instr_nanos6.h
similarity index 96%
rename from test/instr_nanos6.h
rename to test/manual/nanos6/instr_nanos6.h
index 231509e..28f5863 100644
--- a/test/instr_nanos6.h
+++ b/test/manual/nanos6/instr_nanos6.h
@@ -15,10 +15,10 @@
* along with this program. If not, see .
*/
-#ifndef OVNI_TEST_INSTR_NANOS6_H
-#define OVNI_TEST_INSTR_NANOS6_H
+#ifndef INSTR_NANOS6_H
+#define INSTR_NANOS6_H
-#include "test/instr.h"
+#include "../instr.h"
#include "compat.h"
static inline void
@@ -114,4 +114,4 @@ INSTR_0ARG(instr_nanos6_exit_create_task, "6TC")
INSTR_0ARG(instr_nanos6_spawn_function_enter, "6Hs")
INSTR_0ARG(instr_nanos6_spawn_function_exit, "6HS")
-#endif /* OVNI_TEST_INSTR_NANOS6_H */
+#endif /* INSTR_NANOS6_H */
diff --git a/test/nanos6-blocking.c b/test/manual/nanos6/nanos6-blocking.c
similarity index 97%
rename from test/nanos6-blocking.c
rename to test/manual/nanos6/nanos6-blocking.c
index 5ca229b..d5dd5ba 100644
--- a/test/nanos6-blocking.c
+++ b/test/manual/nanos6/nanos6-blocking.c
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-#include "test/instr_nanos6.h"
+#include "instr_nanos6.h"
int
main(void)
diff --git a/test/nanos6-nested-tasks-bad.c b/test/manual/nanos6/nanos6-nested-tasks-bad.c
similarity index 97%
rename from test/nanos6-nested-tasks-bad.c
rename to test/manual/nanos6/nanos6-nested-tasks-bad.c
index 6d814c6..b5d8cc4 100644
--- a/test/nanos6-nested-tasks-bad.c
+++ b/test/manual/nanos6/nanos6-nested-tasks-bad.c
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-#include "test/instr_nanos6.h"
+#include "instr_nanos6.h"
int
main(void)
diff --git a/test/nanos6-nested-tasks.c b/test/manual/nanos6/nanos6-nested-tasks.c
similarity index 97%
rename from test/nanos6-nested-tasks.c
rename to test/manual/nanos6/nanos6-nested-tasks.c
index 9b5d13a..7b49a3b 100644
--- a/test/nanos6-nested-tasks.c
+++ b/test/manual/nanos6/nanos6-nested-tasks.c
@@ -15,7 +15,7 @@
* along with this program. If not, see .
*/
-#include "test/instr_nanos6.h"
+#include "instr_nanos6.h"
int
main(void)
diff --git a/test/nanos6-ss-mismatch.c b/test/manual/nanos6/nanos6-ss-mismatch.c
similarity index 88%
rename from test/nanos6-ss-mismatch.c
rename to test/manual/nanos6/nanos6-ss-mismatch.c
index d10678f..92008fa 100644
--- a/test/nanos6-ss-mismatch.c
+++ b/test/manual/nanos6/nanos6-ss-mismatch.c
@@ -20,9 +20,7 @@
int
main(void)
{
- int rank = atoi(getenv("OVNI_RANK"));
- int nranks = atoi(getenv("OVNI_NRANKS"));
- instr_start(rank, nranks);
+ instr_start(0, 1);
instr_nanos6_sched_hungry();
/* The thread is left in the hungry state (should fail) */
diff --git a/test/nanos6-subsystems.c b/test/manual/nanos6/nanos6-subsystems.c
similarity index 100%
rename from test/nanos6-subsystems.c
rename to test/manual/nanos6/nanos6-subsystems.c
diff --git a/test/nanos6-task-types.c b/test/manual/nanos6/nanos6-task-types.c
similarity index 100%
rename from test/nanos6-task-types.c
rename to test/manual/nanos6/nanos6-task-types.c
diff --git a/test/manual/nosv/CMakeLists.txt b/test/manual/nosv/CMakeLists.txt
new file mode 100644
index 0000000..abbf47d
--- /dev/null
+++ b/test/manual/nosv/CMakeLists.txt
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+ovni_test(NAME nosv-nested-tasks)
+ovni_test(NAME nosv-nested-tasks-bad SHOULD_FAIL
+ REGEX "fatal: cannot execute task 1: state is not created")
+ovni_test(NAME nosv-task-types MP)
+ovni_test(NAME nosv-pause MP)
diff --git a/test/instr_nosv.h b/test/manual/nosv/instr_nosv.h
similarity index 92%
rename from test/instr_nosv.h
rename to test/manual/nosv/instr_nosv.h
index 10fe994..c2dbb3c 100644
--- a/test/instr_nosv.h
+++ b/test/manual/nosv/instr_nosv.h
@@ -15,10 +15,10 @@
* along with this program. If not, see .
*/
-#ifndef OVNI_TEST_INSTR_NOSV_H
-#define OVNI_TEST_INSTR_NOSV_H
+#ifndef INSTR_NOSV_H
+#define INSTR_NOSV_H
-#include "test/instr.h"
+#include "../instr.h"
#include "compat.h"
static inline void
@@ -49,4 +49,4 @@ INSTR_1ARG(instr_nosv_task_resume, "VTr", int32_t, id)
INSTR_1ARG(instr_nosv_task_end, "VTe", int32_t, id)
-#endif /* OVNI_TEST_INSTR_NOSV_H */
+#endif /* INSTR_NOSV_H */
diff --git a/test/nosv-nested-tasks-bad.c b/test/manual/nosv/nosv-nested-tasks-bad.c
similarity index 100%
rename from test/nosv-nested-tasks-bad.c
rename to test/manual/nosv/nosv-nested-tasks-bad.c
diff --git a/test/nosv-nested-tasks.c b/test/manual/nosv/nosv-nested-tasks.c
similarity index 100%
rename from test/nosv-nested-tasks.c
rename to test/manual/nosv/nosv-nested-tasks.c
diff --git a/test/nosv-pause.c b/test/manual/nosv/nosv-pause.c
similarity index 100%
rename from test/nosv-pause.c
rename to test/manual/nosv/nosv-pause.c
diff --git a/test/nosv-task-types.c b/test/manual/nosv/nosv-task-types.c
similarity index 100%
rename from test/nosv-task-types.c
rename to test/manual/nosv/nosv-task-types.c
diff --git a/test/manual/ovni/CMakeLists.txt b/test/manual/ovni/CMakeLists.txt
new file mode 100644
index 0000000..c03c5fb
--- /dev/null
+++ b/test/manual/ovni/CMakeLists.txt
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# Only run performance sensitive tests on Release builds
+if(CMAKE_BUILD_TYPE STREQUAL "Release")
+ ovni_test(NAME flush-overhead)
+endif()
+
+ovni_test(NAME flush)
+ovni_test(NAME mp-simple MP)
+ovni_test(NAME mp-rank MP)
diff --git a/test/flush-overhead.c b/test/manual/ovni/flush-overhead.c
similarity index 100%
rename from test/flush-overhead.c
rename to test/manual/ovni/flush-overhead.c
diff --git a/test/flush.c b/test/manual/ovni/flush.c
similarity index 100%
rename from test/flush.c
rename to test/manual/ovni/flush.c
diff --git a/test/manual/ovni/instr_ovni.h b/test/manual/ovni/instr_ovni.h
new file mode 100644
index 0000000..6a8d1cb
--- /dev/null
+++ b/test/manual/ovni/instr_ovni.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2022 Barcelona Supercomputing Center (BSC)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef INSTR_OVNI_H
+#define INSTR_OVNI_H
+
+#include "../instr.h"
+
+#endif /* INSTR_OVNI_H */
diff --git a/test/mp-rank.c b/test/manual/ovni/mp-rank.c
similarity index 96%
rename from test/mp-rank.c
rename to test/manual/ovni/mp-rank.c
index e065a24..443c45c 100644
--- a/test/mp-rank.c
+++ b/test/manual/ovni/mp-rank.c
@@ -35,15 +35,6 @@ static void fail(const char *msg)
abort();
}
-static inline void emit_ev(char *mcv)
-{
- struct ovni_ev ev = { 0 };
-
- ovni_ev_set_mcv(&ev, mcv);
- ovni_ev_set_clock(&ev, ovni_clock_now());
- ovni_ev_emit(&ev);
-}
-
#define INSTR_3ARG(name, mcv, ta, a, tb, b, tc, c) \
static inline void name(ta a, tb b, tc c) \
{ \
diff --git a/test/mp-simple.c b/test/manual/ovni/mp-simple.c
similarity index 94%
rename from test/mp-simple.c
rename to test/manual/ovni/mp-simple.c
index 9a06a96..ac962e6 100644
--- a/test/mp-simple.c
+++ b/test/manual/ovni/mp-simple.c
@@ -36,15 +36,6 @@ static void fail(const char *msg)
abort();
}
-static inline void emit_ev(char *mcv)
-{
- struct ovni_ev ev = { 0 };
-
- ovni_ev_set_mcv(&ev, mcv);
- ovni_ev_set_clock(&ev, ovni_clock_now());
- ovni_ev_emit(&ev);
-}
-
#define INSTR_3ARG(name, mcv, ta, a, tb, b, tc, c) \
static inline void name(ta a, tb b, tc c) \
{ \
diff --git a/test/rt/CMakeLists.txt b/test/rt/CMakeLists.txt
index 1c610ff..61af077 100644
--- a/test/rt/CMakeLists.txt
+++ b/test/rt/CMakeLists.txt
@@ -24,7 +24,9 @@ function(nosv_test)
PUBLIC ${NOSV_INCLUDE_DIR})
set_property(TEST "${OVNI_TEST_NAME}" APPEND
PROPERTY
- ENVIRONMENT "NOSV_CONFIG=${OVNI_TEST_SOURCE_DIR}/rt/nosv.toml")
+ ENVIRONMENT "NOSV_CONFIG=${OVNI_TEST_SOURCE_DIR}/rt/nosv/nosv.toml")
endfunction()
nosv_test(NAME nosv-attach SOURCE nosv/attach.c)
+
+add_subdirectory(nanos6)
diff --git a/test/rt/nanos6/CMakeLists.txt b/test/rt/nanos6/CMakeLists.txt
new file mode 100644
index 0000000..9f4d991
--- /dev/null
+++ b/test/rt/nanos6/CMakeLists.txt
@@ -0,0 +1,10 @@
+function(nanos6_rt_test)
+ ovni_test(${ARGN})
+ target_compile_options("${OVNI_TEST_NAME}" PUBLIC "-fompss-2")
+ target_link_options("${OVNI_TEST_NAME}" PUBLIC "-fompss-2")
+ set_property(TEST "${OVNI_TEST_NAME}" APPEND PROPERTY
+ ENVIRONMENT "NANOS6_CONFIG=${OVNI_TEST_SOURCE_DIR}/rt/nanos6/nanos6.toml")
+endfunction()
+
+nanos6_rt_test(NAME rt-nanos6-simple-task SOURCE simple-task.c)
+nanos6_rt_test(NAME rt-nanos6-nested-task SOURCE nested-task.c)
diff --git a/test/rt/nanos6/nanos6.toml b/test/rt/nanos6/nanos6.toml
new file mode 100644
index 0000000..8937e0f
--- /dev/null
+++ b/test/rt/nanos6/nanos6.toml
@@ -0,0 +1,231 @@
+# This file is part of Nanos6 and is licensed under the terms contained in the COPYING file
+#
+# Copyright (C) 2020-2021 Barcelona Supercomputing Center (BSC)
+
+# The Nanos6 default configuration file. More details about the configuration options and the possible
+# values are available on the OmpSs-2 User Guide (https://pm.bsc.es/ftp/ompss-2/doc/user-guide/) or on
+# the README.md in the Nanos6 repository (https://github.com/bsc-pm/nanos6)
+
+[version]
+ # Choose whether the runtime runs with debug symbols and internal asserts. Enabling this option
+ # may produce significant overheads, so production or performance executions should disable this
+ # option. Default is false
+ debug = false
+ # Choose the dependency system implementation. Default is "discrete"
+ # Possible values: "discrete", "regions"
+ dependencies = "discrete"
+ # Choose the instrumentation variant to run. Default is "none"
+ # Possible values: "none", "ctf", "extrae", "graph", "lint", "stats", "verbose"
+ instrument = "ovni"
+
+[turbo]
+ # Choose whether enabling floating-point unit optimizations in all Nanos6 threads. Enabling this
+ # option can speedup the floating-point computations in user tasks, but may produce imprecise
+ # results. It enables flush-to-zero (FZ) and denormals are zero (DAZ) optimizations in Intel®
+ # processors. Default is false
+ enabled = false
+
+[scheduler]
+ # Choose the task scheduling policy. Default is "fifo"
+ # Possible values: "fifo", "lifo"
+ policy = "fifo"
+ # Enable the immediate successor feature to improve cache data reutilization between successor
+ # tasks. If enabled, when a CPU finishes a task it starts executing the successor task (computed
+ # through their data dependencies). Default is true
+ immediate_successor = true
+ # Indicate whether the scheduler should consider task priorities defined by the user in the
+ # task's priority clause. Default is true
+ priority = true
+
+[cpumanager]
+ # The underlying policy of the CPU manager for the handling of CPUs. Default is "default", which
+ # corresponds to "hybrid"
+ # Possible values: "default", "idle", "busy", "hybrid", "lewi", "greedy"
+ policy = "default"
+ # The maximum number of iterations to busy wait for before idling. Default is "240000". Only
+ # works for the 'hybrid' policy. This number will be divided by the number of active CPUs to
+ # obtain a "busy_iters per CPU" metric for each individual CPU to busy-wait for
+ busy_iters = 240000
+
+[taskfor]
+ # Choose the total number of CPU groups that will execute the worksharing tasks (taskfors). Default
+ # is none (not set), which means that the runtime will create one taskfor group per NUMA node
+ # groups = 1
+ # Indicate whether should print the taskfor groups information
+ report = false
+
+[throttle]
+ # Enable throttle to stop creating tasks when certain conditions are met. Default is false
+ enabled = false
+ # Maximum number of child tasks that can be created before throttling. Default is 5000000
+ tasks = 5000000
+ # Maximum memory pressure (percent of max_memory) before throttling. Default is 70 (%)
+ pressure = 70 # %
+ # Maximum memory that can be used by the runtime. Default is "0", which equals half of system memory
+ max_memory = "0"
+ # Evaluation interval (us). Each time this amount of time is elapsed, the throttle system queries
+ # the memory allocator statistics and evaluates the current memory pressure. A higher interval
+ # results in less accurate pressure estimation, but a lower interval introduces noticeable overhead,
+ # as reading memory statistics requires a global lock on the allocator to aggregate per-thread
+ # statistics. Default is 1000
+ polling_period_us = 1000
+
+[numa]
+ # Enable NUMA tracking of task data. NUMA tracking consists of annotating the NUMA location
+ # of data to be later scheduled based on this information. When using "auto" this feature is
+ # enabled in the first allocation done using the Nanos6 NUMA API. Default is "auto"
+ # Possible values: "auto", "on", "off"
+ tracking = "auto"
+ # Indicate whether should print the NUMA bitmask of each NUMA wildcards
+ report = false
+ # Use the page auto-discovery mechanism to detect the system's page size
+ # Default is true, which is useful in systems with THP enabled
+ # Set to false will use the default page size, which is arch-dependent
+ discover_pagesize = true
+
+[hardware_counters]
+ # Enable the verbose mode of hardware counters, printing a small summary of metrics at the
+ # end of the execution. Default is false
+ verbose = false
+ # The verbose file's name. Default is "nanos6-output-hwcounters.txt"
+ verbose_file = "nanos6-output-hwcounters.txt"
+ [hardware_counters.papi]
+ # Enable the PAPI backend of the hardware counters module. Default is false
+ enabled = false
+ # The list of PAPI counters to read. Default is "PAPI_TOT_INS" and "PAPI_TOT_CYC"
+ counters = [
+ "PAPI_TOT_INS",
+ "PAPI_TOT_CYC"
+ ]
+ [hardware_counters.rapl]
+ # Enable the RAPL backend of the hardware counters module for runtime-wise energy
+ # metrics. Default is false
+ enabled = false
+
+[monitoring]
+ # Indicate whether enabling the Monitoring of tasks and CPUs, which allows the usage of
+ # prediction-based policies. Disabled by default
+ enabled = false
+ # Indicate whether enabling the "Wisdom" mechanism of Monitoring, saving normalized metrics for
+ # future executions and loading previously saved metrics when the runtime initializes. Default
+ # is false
+ wisdom = false
+ # Enable the verbose mode of Monitoring, which prints a detailed summary of task type metrics
+ # at the end of the execution. Default is true
+ verbose = true
+ # The verbose file's name. Default is "output-monitoring.txt"
+ verbose_file = "output-monitoring.txt"
+ # The prediction rate at which CPU usage predictions are infered. Default is once every 100µs
+ cpuusage_prediction_rate = 100 # µs
+ # The number of samples (window) of the normalized exponential moving average for predictions
+ # Default is 20
+ rolling_window = 20
+
+[devices]
+
+[instrument]
+ [instrument.ctf]
+ # Choose the temporary directory where to store intermediate CTF files. Default is none
+ # (not set), which means that $TMPDIR will be used if present, or /tmp otherwise
+ # tmpdir = "/tmp"
+ [instrument.ctf.converter]
+ # Indicate whether the trace converter should automatically generate the trace after
+ # executing a program with CTF instrumentation. Default is true
+ enabled = true
+ # Use the fast converter. This feature is experimental and generates a trace compatible
+ # with just a subset of Paraver cfgs. Default is false
+ fast = false
+ # Indicate the location of the ctf2prv converter script. Default is none (not set),
+ # which means that the $CTF2PRV will be used if present, or ctf2prv in $PATH
+ # otherwise
+ # location = "path/to/ctf2prv"
+ # Choose the events that will be traced
+ [instrument.ctf.events]
+ # Linux Kernel events options. Nanos6 can collect Linux kernel internal events using the
+ # perf_event_open system call. This requires to set /proc/sys/kernel/perf_event_paranoid
+ # to -1 and read permissions for either /sys/kernel/tracing or /sys/kernel/debug/tracing.
+ # Events can be selected individually and/or using Nanos6-defined presets
+ [instrument.ctf.events.kernel]
+ # Select one or more predefined sets of events. Available options are:
+ # - preemption: Trace context switches and interrupts
+ # - context_switch: Trace context switches
+ # - syscall: Trace all kernel syscalls entry and exit
+ # presets = [
+ # "preemption"
+ # ]
+ # Provide a file with a list of individual events to enable, one event per line.
+ # Lines starting with "#" are omitted.
+ # file = "./nanos6_kernel_events"
+ # Exclude selected events. Disable events even if enabled in a preset or the
+ # user provided file.
+ # exclude = [
+ # "sys_enter_gettimeofday",
+ # "sys_exit_gettimeofday"
+ # ]
+ [instrument.extrae]
+ # Indicate whether the trace should show the activity of the threads instead of the CPUs'
+ # activity. Default is false, which shows the activity of CPUs
+ as_threads = false
+ # Choose the detail level of the information generated in extrae traces. Default is 1
+ detail_level = 1
+ [instrument.graph]
+ # Indicate whether the resulting PDF should be opened automatically with the display
+ # command. Default is false
+ display = false
+ # Choose the command to be used to automatically display the resulting PDF
+ display_command = "xdg-open"
+ # Indicate whether the graph nodes should remove the directories from the source code
+ # file names. Default is false
+ shorten_filenames = false
+ # Indicate whether should show the internal data structures that determine when tasks
+ # are ready. Default is false
+ show_dependency_structures = false
+ # Include the information about the range of data or region that is covered when showing
+ # internal data structures. Default is false
+ show_regions = false
+ # Indicate whether should show the internal data structures that do not determine dependencies
+ # or that are redundant by transitivity. Default is false
+ show_spurious_dependency_structures = false
+ # Choose whether should force future and previous dependencies to be shown with different
+ # graphical attributes. Default is false
+ show_dead_dependencies = false
+ # Include the internal data structures after they are no longer relevant. Default is false
+ show_dead_dependency_structures = false
+ # Instead of trying to collapse in one step as many related changes as possible, show one
+ # at a time. Default is false
+ show_all_steps = false
+ # Show superaccess links. Default is true
+ show_superaccess_links = true
+ # Choose whether to emit a table next to the graph with a description of the changes in
+ # each frame. Default is false
+ show_log = false
+ [instrument.stats]
+ # The outfile file for emitting the statistics. Default is the standard error
+ output_file = "/dev/stderr"
+ [instrument.verbose]
+ # Output device or file for verbose log. Default is "/dev/stderr"
+ output_file = "/dev/stderr"
+ # Print timestamps on log. Default is true
+ timestamps = true
+ # Delay verbose output to prevent mixing with application output. Default is false
+ dump_only_on_exit = false
+ # Verbose log concepts to display. Possible values on README.md
+ areas = ["all", "!ComputePlaceManagement", "!DependenciesByAccess", "!DependenciesByAccessLinks",
+ "!DependenciesByGroup", "!LeaderThread", "!TaskStatus", "!ThreadManagement"]
+
+[memory]
+
+[misc]
+ # Stack size of threads created by the runtime. Default is 8M
+ stack_size = "8M"
+
+[loader]
+ # Enable verbose output of the loader, to debug dynamic linking problems. Default is false
+ verbose = false
+ # Choose whether to print a warning when there is any invalid NANOS6 environment variables
+ # defined when running a program. Default is true
+ warn_envars = true
+ # Path to the nanos6 libraries. Default is none
+ # library_path = "path/to/nanos6/lib"
+ # Prefix for the report printing all the runtime variables. Default is none
+ # report_prefix = "#"
diff --git a/test/rt/nanos6/nested-task.c b/test/rt/nanos6/nested-task.c
new file mode 100644
index 0000000..9836a4f
--- /dev/null
+++ b/test/rt/nanos6/nested-task.c
@@ -0,0 +1,11 @@
+int main(void)
+{
+ #pragma oss task
+ {
+ #pragma oss task
+ {
+ }
+ #pragma oss taskwait
+ }
+ return 0;
+}
diff --git a/test/rt/nanos6/simple-task.c b/test/rt/nanos6/simple-task.c
new file mode 100644
index 0000000..2cd8b16
--- /dev/null
+++ b/test/rt/nanos6/simple-task.c
@@ -0,0 +1,7 @@
+int main(void)
+{
+ #pragma oss task
+ {
+ }
+ return 0;
+}
diff --git a/test/rt/nosv.toml b/test/rt/nosv/nosv.toml
similarity index 100%
rename from test/rt/nosv.toml
rename to test/rt/nosv/nosv.toml