Message ID | 807cbe7f-c5b9-e02d-f74f-096fc0bf7cfb@mentor.com |
---|---|
State | New |
Headers | show |
On 06/26/2017 01:31 PM, Tom de Vries wrote: > On 06/26/2017 01:24 PM, Tom de Vries wrote: >> Hi, >> >> I've written a patch series to facilitate debugging libgomp openacc >> testcase failures on the nvptx accelerator. >> >> >> When running an openacc test-case on an nvptx accelerator, the >> following happens: >> - the plugin obtains the ptx assembly for the acceleration kernels >> - it calls the cuda jit to compile and link the ptx into a module >> - it loads the module >> - it starts an acceleration kernel >> >> The patch series adds these environment variables: >> - GOMP_OPENACC_NVPTX_SAVE_TEMPS: a means to save the resulting module >> such that it can be investigated using nvdisasm and cuobjdump. >> - GOMP_OPENACC_NVPTX_DISASM: a means to see the resulting module in >> the debug output, by writing it into a file and calling nvdisasm on >> it >> - GOMP_OPENACC_NVPTX_JIT: a means to set parameters of the >> compilation/linking process, currently supporting: >> * -O[0-4], mapping onto CU_JIT_OPTIMIZATION_LEVEL >> * -ori, mapping onto CU_JIT_NEW_SM3X_OPT >> >> >> The patch series consists of these patches: >> >> 1. Show value of GOMP_OPENACC_DIM in libgomp nvptx plugin > > This patch adds a debug message (for GOMP_DEBUG=1) about the value of > the GOMP_OPENACC_DIM variable read from the environment. > Committed as trivial. Thanks, - Tom > Thanks, > - Tom > > 0001-Show-value-of-GOMP_OPENACC_DIM-in-libgomp-nvptx-plugin.patch > > > Show value of GOMP_OPENACC_DIM in libgomp nvptx plugin > > 2017-06-26 Tom de Vries <tom@codesourcery.com> > > * plugin/plugin-nvptx.c (notify_var): New function. > (nvptx_exec): Use notify_var for GOMP_OPENACC_DIM. > > --- > libgomp/plugin/plugin-nvptx.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c > index 0e1b3e2..71630b5 100644 > --- a/libgomp/plugin/plugin-nvptx.c > +++ b/libgomp/plugin/plugin-nvptx.c > @@ -867,6 +867,14 @@ nvptx_get_num_devices (void) > return n; > } > > +static void > +notify_var (const char *var_name, const char *env_var) > +{ > + if (env_var == NULL) > + GOMP_PLUGIN_debug (0, "%s: <Not defined>\n", var_name); > + else > + GOMP_PLUGIN_debug (0, "%s: '%s'\n", var_name, env_var); > +} > > static bool > link_ptx (CUmodule *module, const struct targ_ptx_obj *ptx_objs, > @@ -1089,10 +1097,12 @@ nvptx_exec (void (*fn), size_t mapnum, void **hostaddrs, void **devaddrs, > pthread_mutex_lock (&ptx_dev_lock); > if (!default_dims[0]) > { > + const char *var_name = "GOMP_OPENACC_DIM"; > /* We only read the environment variable once. You can't > change it in the middle of execution. The syntax is > the same as for the -fopenacc-dim compilation option. */ > - const char *env_var = getenv ("GOMP_OPENACC_DIM"); > + const char *env_var = getenv (var_name); > + notify_var (var_name, env_var); > if (env_var) > { > const char *pos = env_var; >
Show value of GOMP_OPENACC_DIM in libgomp nvptx plugin 2017-06-26 Tom de Vries <tom@codesourcery.com> * plugin/plugin-nvptx.c (notify_var): New function. (nvptx_exec): Use notify_var for GOMP_OPENACC_DIM. --- libgomp/plugin/plugin-nvptx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index 0e1b3e2..71630b5 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -867,6 +867,14 @@ nvptx_get_num_devices (void) return n; } +static void +notify_var (const char *var_name, const char *env_var) +{ + if (env_var == NULL) + GOMP_PLUGIN_debug (0, "%s: <Not defined>\n", var_name); + else + GOMP_PLUGIN_debug (0, "%s: '%s'\n", var_name, env_var); +} static bool link_ptx (CUmodule *module, const struct targ_ptx_obj *ptx_objs, @@ -1089,10 +1097,12 @@ nvptx_exec (void (*fn), size_t mapnum, void **hostaddrs, void **devaddrs, pthread_mutex_lock (&ptx_dev_lock); if (!default_dims[0]) { + const char *var_name = "GOMP_OPENACC_DIM"; /* We only read the environment variable once. You can't change it in the middle of execution. The syntax is the same as for the -fopenacc-dim compilation option. */ - const char *env_var = getenv ("GOMP_OPENACC_DIM"); + const char *env_var = getenv (var_name); + notify_var (var_name, env_var); if (env_var) { const char *pos = env_var;