[PATCH, og9] Port OpenACC profiling interface to OG9

Kwok Cheung Yeung kcy@codesourcery.com
Sat Jul 27 05:26:00 GMT 2019


On 24/07/2019 11:45 am, Thomas Schwinge wrote:
>> +2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
>> +
>> +	[...]
>> +	* oacc-parallel.c (GOACC_parallel_keyed_internal): Set device_api for
>> +	profiling.
> 
>> --- a/libgomp/oacc-parallel.c
>> +++ b/libgomp/oacc-parallel.c
>> @@ -275,6 +275,8 @@ GOACC_parallel_keyed_internal (int flags_m, int params, void (*fn) (void *),
>>         goacc_call_host_fn (fn, mapnum, hostaddrs, params);
>>         goto out_prof;
>>       }
>> +  else if (profiling_p)
>> +    api_info.device_api = acc_device_api_cuda;
> 
> That change is not quite right, and I'm pretty sure it wasn't me who
> introduced that code ;-P -- but that can be resolved later.
> 

git blame shows that that fragment was introduced in commit 
fef820dc593f3ee87dd79532701ed709e249eca4 (on the OG8 branch) named 'OpenACC 
async re-work'.

>> --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
>> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
>> @@ -41,6 +41,7 @@ static int state = -1;
>>   static acc_device_t acc_device_type;
>>   static int acc_device_num;
>>   static int num_gangs, num_workers, vector_length;
>> +static int async;
> 
> All these 'async' changes in this file logically belong into the
> respective commit of the OpenACC 'kernels' changes.  It's not a problem
> to have them included here; we shall just try to remember to include them
> in the OpenACC 'kernels' trunk changes.  (I've made a note; no need for
> you to re-test/re-post.)
> 

This is because in OG8, the kernel changes came after the introduction of the 
profiling interface code, while on OG9 it is the other way around.

>> @@ -165,6 +166,15 @@ int main()
>>         for (int i = 0; i < N; ++i)
>>   	x[i] = i * i;
>>       }
>> +#ifdef __OPTIMIZE__
>> +    /* TODO.  With -O2 optimizations enabled, the compiler believes that here
>> +       "state == 0" still holds.  It's not yet clear what's going on.
>> +       Mis-optimization across the GOMP function call boundary?  Per its
>> +       gcc/omp-builtins.def definition, BUILT_IN_GOACC_PARALLEL
>> +       "GOACC_parallel_keyed" doesn't have a "leaf" attribute, so the compiler
>> +       must expect calls back into this compilation unit?  */
>> +    asm volatile ("" : : : "memory");
>> +#endif
> 
> That workaround is no longer needed given the more specific workaround
> that I've added, marked with "TODO PR90488".
> 

Removed.

> In 'libgomp.oacc-c-c++-common/acc_prof-version-1.c:main', we should also
> remove the explicit call to 'acc_register_library'.
> 

Removed.
The patches have now been pushed to the openacc-gcc-9-branch git-only branch.

Kwok



More information about the Gcc-patches mailing list