]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix og9 "Fix hang when running oacc exec with CUDA 9.0 nvprof"
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 25 Mar 2020 16:57:02 +0000 (17:57 +0100)
committerThomas Schwinge <thomas@codesourcery.com>
Wed, 25 Mar 2020 16:57:02 +0000 (17:57 +0100)
Compared to the original og7 version, and still-good og8 version, the og9
version of this patch did get its code altered in a way so that it no longer
resolves the problem it's meant to resolve -- the hang was back.

libgomp/
* oacc-init.c (acc_init_1): Move 'acc_init_state' logic to where
it belongs.

libgomp/ChangeLog.omp
libgomp/oacc-init.c

index 88957864a698700b19b1610c45d7351634a06924..75c459179981502c4c346fa91aea153c5e54df4e 100644 (file)
@@ -1,3 +1,8 @@
+2020-03-25  Thomas Schwinge <thomas@codesourcery.com>
+
+       * oacc-init.c (acc_init_1): Move 'acc_init_state' logic to where
+       it belongs.
+
 2019-11-22  Kwok Cheung Yeung  <kcy@codesourcery.com>
 
        * testsuite/libgomp.oacc-fortran/lib-16.f90: Fix async-safety issue.
index beeeb48c106bc1fb5518a43a44cdf53683c1fcb9..765fa2f3b9521acbd602da9f00a82160ef320c41 100644 (file)
@@ -231,6 +231,11 @@ acc_dev_num_out_of_range (acc_device_t d, int ord, int ndevs)
 static struct gomp_device_descr *
 acc_init_1 (acc_device_t d, acc_construct_t parent_construct, int implicit)
 {
+  gomp_mutex_lock (&acc_init_state_lock);
+  acc_init_state = initializing;
+  acc_init_thread = pthread_self ();
+  gomp_mutex_unlock (&acc_init_state_lock);
+
   bool check_not_nested_p;
   if (implicit)
     {
@@ -293,11 +298,6 @@ acc_init_1 (acc_device_t d, acc_construct_t parent_construct, int implicit)
   struct gomp_device_descr *base_dev, *acc_dev;
   int ndevs;
 
-  gomp_mutex_lock (&acc_init_state_lock);
-  acc_init_state = initializing;
-  acc_init_thread = pthread_self ();
-  gomp_mutex_unlock (&acc_init_state_lock);
-
   base_dev = resolve_device (d, true);
 
   ndevs = base_dev->get_num_devices_func ();