diff mbox

[1/4] Show value of GOMP_OPENACC_DIM in libgomp nvptx plugin

Message ID 807cbe7f-c5b9-e02d-f74f-096fc0bf7cfb@mentor.com
State New
Headers show

Commit Message

Tom de Vries June 26, 2017, 11:31 a.m. UTC
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.

Thanks,
- Tom

Comments

Tom de Vries June 27, 2017, 4:43 p.m. UTC | #1
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;
>
diff mbox

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;