Implement OpenMP 5.1 section 3.15: omp_display_env
This is a new interface which is easily implemented using the already existing code for the handling of the OMP_DISPLAY_ENV environment variable. libgomp/ * env.c (wait_policy, stacksize): New static variables, move out of handle_omp_display_env. (omp_display_env): New function. The meat of the old handle_omp_display_env function. (handle_omp_display_env): Change to not take parameters and instead use the global variables. Only perform parsing, defer to omp_display_env for the implementation. (initialize_env): Remove local variables wait_policy and stacksize. Don't pass parameters to handle_omp_display_env. * fortran.c: Add ialias_redirect for omp_display_env. (omp_display_env_, omp_display_env_8_): New functions. * libgomp.map (OMP_5.1): New version. Add omp_display_env, omp_display_env_, and omp_display_env_8_. * omp.h.in: Declare omp_display_env. * omp_lib.f90.in: Likewise. * omp_lib.h.in: Likewise.
This commit is contained in:
parent
0853f392a2
commit
7123ae2455
@ -99,6 +99,9 @@ int goacc_default_dims[GOMP_DIM_MAX];
|
||||
|
||||
#ifndef LIBGOMP_OFFLOADED_ONLY
|
||||
|
||||
static int wait_policy;
|
||||
static unsigned long stacksize = GOMP_DEFAULT_STACKSIZE;
|
||||
|
||||
/* Parse the OMP_SCHEDULE environment variable. */
|
||||
|
||||
static void
|
||||
@ -1210,46 +1213,11 @@ parse_gomp_openacc_dim (void)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
handle_omp_display_env (unsigned long stacksize, int wait_policy)
|
||||
void
|
||||
omp_display_env (int verbose)
|
||||
{
|
||||
const char *env;
|
||||
bool display = false;
|
||||
bool verbose = false;
|
||||
int i;
|
||||
|
||||
env = getenv ("OMP_DISPLAY_ENV");
|
||||
if (env == NULL)
|
||||
return;
|
||||
|
||||
while (isspace ((unsigned char) *env))
|
||||
++env;
|
||||
if (strncasecmp (env, "true", 4) == 0)
|
||||
{
|
||||
display = true;
|
||||
env += 4;
|
||||
}
|
||||
else if (strncasecmp (env, "false", 5) == 0)
|
||||
{
|
||||
display = false;
|
||||
env += 5;
|
||||
}
|
||||
else if (strncasecmp (env, "verbose", 7) == 0)
|
||||
{
|
||||
display = true;
|
||||
verbose = true;
|
||||
env += 7;
|
||||
}
|
||||
else
|
||||
env = "X";
|
||||
while (isspace ((unsigned char) *env))
|
||||
++env;
|
||||
if (*env != '\0')
|
||||
gomp_error ("Invalid value for environment variable OMP_DISPLAY_ENV");
|
||||
|
||||
if (!display)
|
||||
return;
|
||||
|
||||
fputs ("\nOPENMP DISPLAY ENVIRONMENT BEGIN\n", stderr);
|
||||
|
||||
fputs (" _OPENMP = '201511'\n", stderr);
|
||||
@ -1408,14 +1376,54 @@ handle_omp_display_env (unsigned long stacksize, int wait_policy)
|
||||
|
||||
fputs ("OPENMP DISPLAY ENVIRONMENT END\n", stderr);
|
||||
}
|
||||
ialias (omp_display_env)
|
||||
|
||||
static void
|
||||
handle_omp_display_env (void)
|
||||
{
|
||||
const char *env;
|
||||
bool display = false;
|
||||
bool verbose = false;
|
||||
|
||||
env = getenv ("OMP_DISPLAY_ENV");
|
||||
if (env == NULL)
|
||||
return;
|
||||
|
||||
while (isspace ((unsigned char) *env))
|
||||
++env;
|
||||
if (strncasecmp (env, "true", 4) == 0)
|
||||
{
|
||||
display = true;
|
||||
env += 4;
|
||||
}
|
||||
else if (strncasecmp (env, "false", 5) == 0)
|
||||
{
|
||||
display = false;
|
||||
env += 5;
|
||||
}
|
||||
else if (strncasecmp (env, "verbose", 7) == 0)
|
||||
{
|
||||
display = true;
|
||||
verbose = true;
|
||||
env += 7;
|
||||
}
|
||||
else
|
||||
env = "X";
|
||||
while (isspace ((unsigned char) *env))
|
||||
++env;
|
||||
if (*env != '\0')
|
||||
gomp_error ("Invalid value for environment variable OMP_DISPLAY_ENV");
|
||||
|
||||
if (display)
|
||||
omp_display_env (verbose);
|
||||
}
|
||||
|
||||
|
||||
static void __attribute__((constructor))
|
||||
initialize_env (void)
|
||||
{
|
||||
unsigned long thread_limit_var, stacksize = GOMP_DEFAULT_STACKSIZE;
|
||||
unsigned long thread_limit_var;
|
||||
unsigned long max_active_levels_var;
|
||||
int wait_policy;
|
||||
|
||||
/* Do a compile time check that mkomp_h.pl did good job. */
|
||||
omp_check_defines ();
|
||||
@ -1546,7 +1554,7 @@ initialize_env (void)
|
||||
gomp_error ("Stack size change failed: %s", strerror (err));
|
||||
}
|
||||
|
||||
handle_omp_display_env (stacksize, wait_policy);
|
||||
handle_omp_display_env ();
|
||||
|
||||
/* OpenACC. */
|
||||
|
||||
|
@ -94,6 +94,7 @@ ialias_redirect (omp_init_allocator)
|
||||
ialias_redirect (omp_destroy_allocator)
|
||||
ialias_redirect (omp_set_default_allocator)
|
||||
ialias_redirect (omp_get_default_allocator)
|
||||
ialias_redirect (omp_display_env)
|
||||
#endif
|
||||
|
||||
#ifndef LIBGOMP_GNU_SYMBOL_VERSIONING
|
||||
@ -736,3 +737,15 @@ omp_get_default_allocator_ ()
|
||||
{
|
||||
return (intptr_t) omp_get_default_allocator ();
|
||||
}
|
||||
|
||||
void
|
||||
omp_display_env_ (const int32_t *verbose)
|
||||
{
|
||||
omp_display_env (*verbose);
|
||||
}
|
||||
|
||||
void
|
||||
omp_display_env_8_ (const int64_t *verbose)
|
||||
{
|
||||
omp_display_env (!!*verbose);
|
||||
}
|
||||
|
@ -199,6 +199,13 @@ OMP_5.0.1 {
|
||||
omp_fulfill_event_;
|
||||
} OMP_5.0;
|
||||
|
||||
OMP_5.1 {
|
||||
global:
|
||||
omp_display_env;
|
||||
omp_display_env_;
|
||||
omp_display_env_8_;
|
||||
} OMP_5.0.1;
|
||||
|
||||
GOMP_1.0 {
|
||||
global:
|
||||
GOMP_atomic_end;
|
||||
|
@ -293,6 +293,8 @@ extern void omp_free (void *,
|
||||
omp_allocator_handle_t __GOMP_DEFAULT_NULL_ALLOCATOR)
|
||||
__GOMP_NOTHROW;
|
||||
|
||||
extern void omp_display_env (int) __GOMP_NOTHROW;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -653,6 +653,15 @@
|
||||
end function
|
||||
end interface
|
||||
|
||||
interface omp_display_env
|
||||
subroutine omp_display_env (verbose)
|
||||
logical (4),intent (in) :: verbose
|
||||
end subroutine omp_display_env
|
||||
subroutine omp_display_env_8 (verbose)
|
||||
logical (8),intent (in) :: verbose
|
||||
end subroutine omp_display_env_8
|
||||
end interface
|
||||
|
||||
#if _OPENMP >= 201811
|
||||
!GCC$ ATTRIBUTES DEPRECATED :: omp_get_nested, omp_set_nested
|
||||
#endif
|
||||
|
@ -264,3 +264,5 @@
|
||||
external omp_set_default_allocator
|
||||
external omp_get_default_allocator
|
||||
integer (omp_allocator_handle_kind) omp_get_default_allocator
|
||||
|
||||
external omp_display_env
|
||||
|
Loading…
Reference in New Issue
Block a user