summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoachim Protze <protze@itc.rwth-aachen.de>2017-12-21 14:36:30 +0000
committerJoachim Protze <protze@itc.rwth-aachen.de>2017-12-21 14:36:30 +0000
commitf375f4b49a72cf11e512aeaf25c2944d3d0b0a67 (patch)
tree8e7c9c02c338cb1b355ada3d6217bb1767de2526
parent636510a702ca5bdf938942e1b59f840c23435265 (diff)
downloadbcm5719-llvm-f375f4b49a72cf11e512aeaf25c2944d3d0b0a67.tar.gz
bcm5719-llvm-f375f4b49a72cf11e512aeaf25c2944d3d0b0a67.zip
[OMPT] Add missing ompt_get_num_procs function
This function is defined in OpenMP-TR6 section 4.1.5.1.6 The functions was not implemented yet. Since ompt-functions can only be called after the runtime was initialized and has loaded a tool, it can assume the runtime to be initialized. In contrast to omp_get_num_procs which needs to check whether the runtime is initialized. Differential Revision: https://reviews.llvm.org/D40949 llvm-svn: 321269
-rw-r--r--openmp/runtime/src/include/50/ompt.h.var4
-rw-r--r--openmp/runtime/src/ompt-general.cpp9
-rwxr-xr-xopenmp/runtime/test/ompt/callback.h2
-rw-r--r--openmp/runtime/test/ompt/misc/api_calls.c6
4 files changed, 21 insertions, 0 deletions
diff --git a/openmp/runtime/src/include/50/ompt.h.var b/openmp/runtime/src/include/50/ompt.h.var
index 0cae6a0f69d..930822d2269 100644
--- a/openmp/runtime/src/include/50/ompt.h.var
+++ b/openmp/runtime/src/include/50/ompt.h.var
@@ -32,6 +32,7 @@
macro (ompt_get_thread_data) \
macro (ompt_get_unique_id) \
\
+ macro(ompt_get_num_procs) \
macro(ompt_get_num_places) \
macro(ompt_get_place_proc_ids) \
macro(ompt_get_place_num) \
@@ -582,6 +583,9 @@ OMPT_API_FUNCTION(int, ompt_get_task_info, (
int *thread_num
));
+/* procs */
+OMPT_API_FUNCTION(int, ompt_get_num_procs, (void));
+
/* places */
OMPT_API_FUNCTION(int, ompt_get_num_places, (void));
diff --git a/openmp/runtime/src/ompt-general.cpp b/openmp/runtime/src/ompt-general.cpp
index 9f21214f808..7e1c67a7c26 100644
--- a/openmp/runtime/src/ompt-general.cpp
+++ b/openmp/runtime/src/ompt-general.cpp
@@ -491,6 +491,15 @@ OMPT_API_ROUTINE int ompt_get_task_info(int ancestor_level, int *type,
}
/*****************************************************************************
+ * num_procs
+ ****************************************************************************/
+
+OMPT_API_ROUTINE int ompt_get_num_procs(void) {
+// copied from kmp_ftn_entry.h (but modified: OMPT can only be called when runtime is initialized)
+ return __kmp_avail_proc;
+}
+
+/*****************************************************************************
* places
****************************************************************************/
diff --git a/openmp/runtime/test/ompt/callback.h b/openmp/runtime/test/ompt/callback.h
index b013e897f01..6dc8834cffd 100755
--- a/openmp/runtime/test/ompt/callback.h
+++ b/openmp/runtime/test/ompt/callback.h
@@ -37,6 +37,7 @@ static ompt_get_task_info_t ompt_get_task_info;
static ompt_get_thread_data_t ompt_get_thread_data;
static ompt_get_parallel_info_t ompt_get_parallel_info;
static ompt_get_unique_id_t ompt_get_unique_id;
+static ompt_get_num_procs_t ompt_get_num_procs;
static ompt_get_num_places_t ompt_get_num_places;
static ompt_get_place_proc_ids_t ompt_get_place_proc_ids;
static ompt_get_place_num_t ompt_get_place_num;
@@ -684,6 +685,7 @@ int ompt_initialize(
ompt_get_parallel_info = (ompt_get_parallel_info_t) lookup("ompt_get_parallel_info");
ompt_get_unique_id = (ompt_get_unique_id_t) lookup("ompt_get_unique_id");
+ ompt_get_num_procs = (ompt_get_num_procs_t) lookup("ompt_get_num_procs");
ompt_get_num_places = (ompt_get_num_places_t) lookup("ompt_get_num_places");
ompt_get_place_proc_ids = (ompt_get_place_proc_ids_t) lookup("ompt_get_place_proc_ids");
ompt_get_place_num = (ompt_get_place_num_t) lookup("ompt_get_place_num");
diff --git a/openmp/runtime/test/ompt/misc/api_calls.c b/openmp/runtime/test/ompt/misc/api_calls.c
index f7f1e16aa6d..a41de086316 100644
--- a/openmp/runtime/test/ompt/misc/api_calls.c
+++ b/openmp/runtime/test/ompt/misc/api_calls.c
@@ -43,6 +43,9 @@ int main()
printf("%" PRIu64 ": sched_getcpu()=%d\n", ompt_get_thread_data()->value, sched_getcpu());
printf("%" PRIu64 ": ompt_get_proc_id()=%d\n", ompt_get_thread_data()->value, ompt_get_proc_id());
+
+ printf("%" PRIu64 ": omp_get_num_procs()=%d\n", ompt_get_thread_data()->value, omp_get_num_procs());
+ printf("%" PRIu64 ": ompt_get_num_procs()=%d\n", ompt_get_thread_data()->value, ompt_get_num_procs());
}
// Check if libomp supports the callbacks for this test.
@@ -61,6 +64,9 @@ int main()
// CHECK: {{^}}[[MASTER_ID]]: sched_getcpu()=[[CPU_ID:[0-9]+]]
// CHECK: {{^}}[[MASTER_ID]]: ompt_get_proc_id()=[[CPU_ID]]
+ // CHECK: {{^}}[[MASTER_ID]]: omp_get_num_procs()=[[NUM_PROCS:[-]?[0-9]+]]
+ // CHECK: {{^}}[[MASTER_ID]]: ompt_get_num_procs()=[[NUM_PROCS]]
+
return 0;
}
OpenPOWER on IntegriCloud