mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 17:37:03 +00:00

This patch adds support for pause resource with a new enumerator omp_pause_stop_tool. The expected behavior of this enumerator is * omp_pause_resource: not allowed * omp_pause_resource_all: equivalent to omp_pause_hard
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
// RUN: %libomp-compile-and-run | FileCheck %s
|
|
// REQUIRES: ompt
|
|
#include "callback.h"
|
|
#include <omp.h>
|
|
int main() {
|
|
int x = 0;
|
|
int ret = 0;
|
|
#pragma omp parallel
|
|
#pragma omp single
|
|
x++;
|
|
// Expected to fail; omp_pause_stop_tool must not be specified
|
|
ret = omp_pause_resource(omp_pause_stop_tool, omp_get_initial_device());
|
|
printf("omp_pause_resource %s\n", ret ? "failed" : "succeeded");
|
|
#pragma omp parallel
|
|
#pragma omp single
|
|
x++;
|
|
// Expected to succeed
|
|
ret = omp_pause_resource_all(omp_pause_stop_tool);
|
|
printf("omp_pause_resource_all %s\n", ret ? "failed" : "succeeded");
|
|
#pragma omp parallel
|
|
#pragma omp single
|
|
x++;
|
|
printf("x = %d\n", x);
|
|
return 0;
|
|
|
|
// Check if
|
|
// -- omp_pause_resource/resource_all returns expected code
|
|
// -- OMPT interface is shut down as expected
|
|
|
|
// CHECK-NOT: {{^}}0: Could not register callback
|
|
// CHECK: 0: NULL_POINTER=[[NULL:.*$]]
|
|
|
|
// CHECK: ompt_event_parallel_begin
|
|
// CHECK: ompt_event_parallel_end
|
|
|
|
// CHECK: omp_pause_resource failed
|
|
|
|
// CHECK: ompt_event_parallel_begin
|
|
// CHECK: ompt_event_parallel_end
|
|
|
|
// CHECK: omp_pause_resource_all succeeded
|
|
|
|
// CHECK-NOT: ompt_event
|
|
}
|