diff --git a/test/hello-task.c b/test/hello-task.c index b18738e0fd7f3ec5aaf7f34c9945347201009ced..6b9c8e2f7f9cd28af5ba2eadb067cd0f68e53d3c 100644 --- a/test/hello-task.c +++ b/test/hello-task.c @@ -2,27 +2,75 @@ #include <unistd.h> #include <omp.h> #include <math.h> +#include "AvailabilityMacros.h" + int array[] = { 1, 2, 3, 4}; +/* +*/ +//extern void ompt_set_task_name(const char* name ) __attribute__((weak_import)); //__attribute__((weak)); +extern void ompt_set_task_name(const char* name ); + + int main() { #pragma omp parallel #pragma omp master { printf("Hello from %i\n", omp_get_thread_num()); + if (ompt_set_task_name != NULL) + { + printf("Defined symbol\n"); + ompt_set_task_name("hello"); + } + else + printf("Undefined symbol\n"); + #pragma omp task { sleep(2); printf("Hey there\n"); + + ompt_set_task_name("sub hello"); + #pragma omp task + { + sleep(2); + printf("Hey there\n"); + } + + ompt_set_task_name("sub hello"); + #pragma omp task + { + sleep(2); + printf("Hey there\n"); + + ompt_set_task_name("sub sub hello"); + #pragma omp task + { + sleep(2); + printf("Hey there\n"); + } + ompt_set_task_name("sub sub hello"); + #pragma omp task + { + sleep(2); + printf("Hey there\n"); + } + } } + + ompt_set_task_name("Parent of other tasks"); + #pragma omp task for (int i = 0; i < 4; i++) { + ompt_set_task_name("other tasks"); #pragma omp task depend(in: array[i]) depend(inout: array[(i+1)%4]) { double d; array[(i+1)%4] = array[i]; for (int j=0; j<100000; ++j) d += sin(M_PI/j)*cos(M_PI/i); + sleep(2); printf("Hey %i\n", i); } } diff --git a/test/hello.c b/test/hello.c index 52494a01bd4d8db565464196b366a26649775ab1..f8535f075fe7d109e770df24c53b534a6ab4523c 100644 --- a/test/hello.c +++ b/test/hello.c @@ -1,15 +1,30 @@ #include <stdio.h> #include <omp.h> +#include <unistd.h> + int main() { +printf("Before parallel region 1, %i\n", omp_get_thread_num()); #pragma omp parallel { printf("Hello from %i\n", omp_get_thread_num()); + #pragma omp barrier + #pragma omp master + { + #pragma omp task + printf("%i:: Master thread\n", omp_get_thread_num()); + + #pragma omp taskwait + } } +printf("After parallel region 1, %i\n\n\n\n", omp_get_thread_num()); +sleep(10); +printf("Before parallel region 2, %i\n", omp_get_thread_num()); #pragma omp parallel { printf("Parallel 2, hello from %i\n", omp_get_thread_num()); } +printf("After parallel region 2, %i\n\n\n\n", omp_get_thread_num()); return 0; } diff --git a/tool/tool.cpp b/tool/tool.cpp index 41e2c5749e6fa6d53123aeeec0ed2c8467f7a4a1..f4d138639f7c787c8e28c55ae5144b77a249609c 100644 --- a/tool/tool.cpp +++ b/tool/tool.cpp @@ -6,6 +6,8 @@ #include <omp-tools.h> #include "kaapi_trace_lib.h" +#include "AvailabilityMacros.h" + #define CALLBACK(name, ...)\ void name##_action(__VA_ARGS__); #include "ompt_callbacks.def" @@ -27,6 +29,8 @@ extern "C" { extern void tikki_ompt_set_task_name(const char* name ); extern void tikki_ompt_set_task_data(int count, void** data, size_t* size, int* mode ); +extern void ompt_set_task_name(const char* name ) __attribute__((weak_import)); + void __tikki_ompt_set_task_name(const char* name ) { tikki_ompt_set_task_name(name); } void __tikki_ompt_set_task_data(int count, void** data, size_t* size, int* mode ) @@ -34,7 +38,7 @@ void __tikki_ompt_set_task_data(int count, void** data, size_t* size, int* mode /* Exported function as extension to be called by application */ -extern void ompt_set_task_name(const char* name ) +void ompt_set_task_name(const char* name ) __attribute__((weak_import)) { tikki_ompt_set_task_name(name); }