aboutsummaryrefslogtreecommitdiff
path: root/final/runtime/src/ompt-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'final/runtime/src/ompt-internal.h')
-rw-r--r--final/runtime/src/ompt-internal.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/final/runtime/src/ompt-internal.h b/final/runtime/src/ompt-internal.h
new file mode 100644
index 0000000..170a9ec
--- /dev/null
+++ b/final/runtime/src/ompt-internal.h
@@ -0,0 +1,129 @@
+/*
+ * ompt-internal.h - header of OMPT internal data structures
+ */
+
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.txt for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef __OMPT_INTERNAL_H__
+#define __OMPT_INTERNAL_H__
+
+#include "ompt-event-specific.h"
+#include "omp-tools.h"
+
+#define OMPT_VERSION 1
+
+#define _OMP_EXTERN extern "C"
+
+#define OMPT_INVOKER(x) \
+ ((x == fork_context_gnu) ? ompt_parallel_invoker_program \
+ : ompt_parallel_invoker_runtime)
+
+#define ompt_callback(e) e##_callback
+
+typedef struct ompt_callbacks_internal_s {
+#define ompt_event_macro(event, callback, eventid) \
+ callback ompt_callback(event);
+
+ FOREACH_OMPT_EVENT(ompt_event_macro)
+
+#undef ompt_event_macro
+} ompt_callbacks_internal_t;
+
+typedef struct ompt_callbacks_active_s {
+ unsigned int enabled : 1;
+#define ompt_event_macro(event, callback, eventid) unsigned int event : 1;
+
+ FOREACH_OMPT_EVENT(ompt_event_macro)
+
+#undef ompt_event_macro
+} ompt_callbacks_active_t;
+
+#define TASK_TYPE_DETAILS_FORMAT(info) \
+ ((info->td_flags.task_serial || info->td_flags.tasking_ser) \
+ ? ompt_task_undeferred \
+ : 0x0) | \
+ ((!(info->td_flags.tiedness)) ? ompt_task_untied : 0x0) | \
+ (info->td_flags.final ? ompt_task_final : 0x0) | \
+ (info->td_flags.merged_if0 ? ompt_task_mergeable : 0x0)
+
+typedef struct {
+ ompt_frame_t frame;
+ ompt_data_t task_data;
+ struct kmp_taskdata *scheduling_parent;
+ int thread_num;
+#if OMP_40_ENABLED
+ int ndeps;
+ ompt_dependence_t *deps;
+#endif /* OMP_40_ENABLED */
+} ompt_task_info_t;
+
+typedef struct {
+ ompt_data_t parallel_data;
+ void *master_return_address;
+} ompt_team_info_t;
+
+typedef struct ompt_lw_taskteam_s {
+ ompt_team_info_t ompt_team_info;
+ ompt_task_info_t ompt_task_info;
+ int heap;
+ struct ompt_lw_taskteam_s *parent;
+} ompt_lw_taskteam_t;
+
+typedef struct {
+ ompt_data_t thread_data;
+ ompt_data_t task_data; /* stored here from implicit barrier-begin until
+ implicit-task-end */
+ void *return_address; /* stored here on entry of runtime */
+ ompt_state_t state;
+ ompt_wait_id_t wait_id;
+ int ompt_task_yielded;
+ void *idle_frame;
+} ompt_thread_info_t;
+
+extern ompt_callbacks_internal_t ompt_callbacks;
+
+#if OMP_40_ENABLED && OMPT_SUPPORT && OMPT_OPTIONAL
+#if USE_FAST_MEMORY
+#define KMP_OMPT_DEPS_ALLOC __kmp_fast_allocate
+#define KMP_OMPT_DEPS_FREE __kmp_fast_free
+#else
+#define KMP_OMPT_DEPS_ALLOC __kmp_thread_malloc
+#define KMP_OMPT_DEPS_FREE __kmp_thread_free
+#endif
+#endif /* OMP_40_ENABLED && OMPT_SUPPORT && OMPT_OPTIONAL */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ompt_pre_init(void);
+void ompt_post_init(void);
+void ompt_fini(void);
+
+#define OMPT_GET_RETURN_ADDRESS(level) __builtin_return_address(level)
+#define OMPT_GET_FRAME_ADDRESS(level) __builtin_frame_address(level)
+
+int __kmp_control_tool(uint64_t command, uint64_t modifier, void *arg);
+
+extern ompt_callbacks_active_t ompt_enabled;
+
+#if KMP_OS_WINDOWS
+#define UNLIKELY(x) (x)
+#define OMPT_NOINLINE __declspec(noinline)
+#else
+#define UNLIKELY(x) __builtin_expect(!!(x), 0)
+#define OMPT_NOINLINE __attribute__((noinline))
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif