ovni/test/emu/openmp/mix-task-ws.c
Raúl Peñacoba Veigas 9826879bcd
Some checks failed
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
Add OpenMP support for labels and taskID views
Co-authored-by: Rodrigo Arias Mallo <rodrigo.arias@bsc.es>
2024-12-09 16:41:16 +01:00

48 lines
969 B
C

/* Copyright (c) 2024 Barcelona Supercomputing Center (BSC)
* SPDX-License-Identifier: GPL-3.0-or-later */
#include <stdlib.h>
#include "compat.h"
#include "instr.h"
#include "instr_openmp.h"
int
main(void)
{
instr_start(0, 1);
instr_openmp_init();
enum { TASK=1, WS1=2, WS2=3 };
instr_openmp_type_create(TASK, "main task");
instr_openmp_type_create(WS1, "outer for");
instr_openmp_type_create(WS2, "inner for");
instr_openmp_task_create(1, TASK);
instr_openmp_task_execute(1);
sleep_us(100);
for (int i = 0; i < 3; i++) {
instr_openmp_ws_enter(WS1);
sleep_us(10);
{
instr_openmp_ws_enter(WS2);
sleep_us(10);
instr_openmp_ws_exit(WS2);
}
sleep_us(10);
instr_openmp_ws_exit(WS1);
sleep_us(10);
}
sleep_us(10);
instr_openmp_task_end(1);
sleep_us(10);
/* Another task from the same type */
instr_openmp_task_create(2, TASK);
instr_openmp_task_execute(2);
sleep_us(100);
instr_openmp_task_end(2);
instr_end();
return 0;
}