Skip to content

Commit

Permalink
[OMPT] Add api_calls_misc.c testcase and rename api_calls.c testcase
Browse files Browse the repository at this point in the history
The api_calls_misc.c testcase tests the following api calls:

ompt_get_callback()
ompt_get_state()
ompt_enumerate_states()
ompt_enumerate_mutex_impls()
These have not been tested previously.

The api_calls.c testcase has been renamed to api_calls_places.c because it only tests api calls that are related to places.

Differential Revision: https://reviews.llvm.org/D42523

llvm-svn: 331631
  • Loading branch information
jprotze committed May 7, 2018
1 parent ce7f318 commit 8fc39f6
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
4 changes: 4 additions & 0 deletions openmp/runtime/test/ompt/callback.h
Expand Up @@ -56,6 +56,8 @@ static void format_task_type(int type, char *buffer) {
}

static ompt_set_callback_t ompt_set_callback;
static ompt_get_callback_t ompt_get_callback;
static ompt_get_state_t ompt_get_state;
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;
Expand Down Expand Up @@ -697,6 +699,8 @@ int ompt_initialize(
ompt_data_t *tool_data)
{
ompt_set_callback = (ompt_set_callback_t) lookup("ompt_set_callback");
ompt_get_callback = (ompt_get_callback_t) lookup("ompt_get_callback");
ompt_get_state = (ompt_get_state_t) lookup("ompt_get_state");
ompt_get_task_info = (ompt_get_task_info_t) lookup("ompt_get_task_info");
ompt_get_thread_data = (ompt_get_thread_data_t) lookup("ompt_get_thread_data");
ompt_get_parallel_info = (ompt_get_parallel_info_t) lookup("ompt_get_parallel_info");
Expand Down
72 changes: 72 additions & 0 deletions openmp/runtime/test/ompt/misc/api_calls_misc.c
@@ -0,0 +1,72 @@
// RUN: %libomp-compile && %libomp-run | FileCheck %s
// REQUIRES: ompt
#include "callback.h"
#include <omp.h>

int main() {
#pragma omp parallel num_threads(1)
{
// ompt_get_callback()
ompt_callback_t callback;
ompt_get_callback(ompt_callback_thread_begin, &callback);
printf("%" PRIu64 ": &on_ompt_callback_thread_begin=%p\n",
ompt_get_thread_data()->value, &on_ompt_callback_thread_begin);
printf("%" PRIu64 ": ompt_get_callback() result=%p\n",
ompt_get_thread_data()->value, callback);

// ompt_get_state()
printf("%" PRIu64 ": ompt_get_state()=%d\n", ompt_get_thread_data()->value,
ompt_get_state(NULL));

// ompt_enumerate_states()
int state = omp_state_undefined;
const char *state_name;
int steps = 0;
while (ompt_enumerate_states(state, &state, &state_name) && steps < 1000) {
steps++;
if (!state_name)
printf("%" PRIu64 ": state_name is NULL\n",
ompt_get_thread_data()->value);
}
if (steps >= 1000) {
// enumeration did not end after 1000 steps
printf("%" PRIu64 ": states enumeration did not end\n",
ompt_get_thread_data()->value);
}

// ompt_enumerate_mutex_impls()
int impl = ompt_mutex_impl_unknown;
const char *impl_name;
steps = 0;
while (ompt_enumerate_mutex_impls(impl, &impl, &impl_name) &&
steps < 1000) {
steps++;
if (!impl_name)
printf("%" PRIu64 ": impl_name is NULL\n",
ompt_get_thread_data()->value);
}
if (steps >= 1000) {
// enumeration did not end after 1000 steps
printf("%" PRIu64 ": mutex_impls enumeration did not end\n",
ompt_get_thread_data()->value);
}
}

// Check if libomp supports the callbacks for this test.

// CHECK: 0: NULL_POINTER=[[NULL:.*$]]

// CHECK: {{^}}[[THREAD_ID:[0-9]+]]: &on_ompt_callback_thread_begin
// CHECK-SAME: =[[FUNCTION_POINTER:0x[0-f]+]]
// CHECK: {{^}}[[THREAD_ID]]: ompt_get_callback() result=[[FUNCTION_POINTER]]

// CHECK: {{^}}[[THREAD_ID]]: ompt_get_state()=1

// CHECK-NOT: {{^}}[[THREAD_ID]]: state_name is NULL
// CHECK-NOT: {{^}}[[THREAD_ID]]: states enumeration did not end

// CHECK-NOT: {{^}}[[THREAD_ID]]: impl_name is NULL
// CHECK-NOT: {{^}}[[THREAD_ID]]: mutex_impls enumeration did not end

return 0;
}
File renamed without changes.

0 comments on commit 8fc39f6

Please sign in to comment.