[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
This commit is contained in:
parent
636510a702
commit
f375f4b49a
|
@ -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));
|
||||
|
||||
|
|
|
@ -490,6 +490,15 @@ OMPT_API_ROUTINE int ompt_get_task_info(int ancestor_level, int *type,
|
|||
task_frame, parallel_data, thread_num);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* 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
|
||||
****************************************************************************/
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue