[gcc/devel/ranger] [gcn] Fix 'omp-device-properties-gcn' handling

Aldy Hernandez aldyh@gcc.gnu.org
Wed Jun 17 20:52:05 GMT 2020


https://gcc.gnu.org/g:b6a0ae1d22c9675f4374c2cb2b5c0833bb1461f1

commit b6a0ae1d22c9675f4374c2cb2b5c0833bb1461f1
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Thu Apr 23 21:45:34 2020 +0200

    [gcn] Fix 'omp-device-properties-gcn' handling
    
    Fix-up for commit 955cd057454b323419e06affa7df7d59dc3cd1fb "Add
    gcc/config/gcn/t-omp-device for OpenMP declare variant kind/arch/isa".
    
    With AMD GCN offloading configured, I'm seeing occasional GCC build hangs.
    I've now captured and analyzed one of them:
    
        $ ps -f
        UID        PID  PPID  C STIME TTY          TIME CMD
        [...]
        tschwing  5113  4508  0 20:24 pts/5    00:00:00 /bin/sh -c rm -f tmp-omp-device-properties.h; \ for kind in kind arch isa; do \   echo 'const char omp_offload_device_'${kind}'[] = ' \     >> tmp-omp-device-properties.h; \   for prop in no
        tschwing  5126  5113  0 20:24 pts/5    00:00:00 sed -n s/^kind: //p
        tschwing  5127  5113  0 20:24 pts/5    00:00:00 sed s/[[:blank:]]/ /g;s/  */ /g;s/^ //;s/ $//;s/ /\\0/g;s/^/"/;s/$/\\0\\0"/
        [...]
        $ pstree -p $$
        [...]---sh(5113)-+-sed(5126)
                         `-sed(5127)
        $ ls -lrt build-gcc/gcc/*omp-device*
        -rw-r--r-- 1 tschwing eeg  39 Apr 23 20:24 build-gcc/gcc/omp-device-properties-nvptx
        -rw-r--r-- 1 tschwing eeg 634 Apr 23 20:24 build-gcc/gcc/omp-device-properties-i386
        -rw-r--r-- 1 tschwing eeg  58 Apr 23 20:24 build-gcc/gcc/tmp-omp-device-properties.h
    
    Notably missing is the 'omp-device-properties-gcn' file...
    
        $ grep ^ build-gcc/gcc/*omp-device*
        build-gcc/gcc/omp-device-properties-i386:kind: cpu
        build-gcc/gcc/omp-device-properties-i386:arch: x86 x86_64 i386 i486 i586 i686 ia32
        build-gcc/gcc/omp-device-properties-i386:isa: sse4 cx16 [...]
        build-gcc/gcc/omp-device-properties-nvptx:kind: gpu
        build-gcc/gcc/omp-device-properties-nvptx:arch: nvptx
        build-gcc/gcc/omp-device-properties-nvptx:isa: sm_30 sm_35
        build-gcc/gcc/tmp-omp-device-properties.h:const char omp_offload_device_kind[] =
        build-gcc/gcc/tmp-omp-device-properties.h:"amdgcn-amdhsa\0"
    
    ..., which we here seem to be intending to fill into
    'tmp-omp-device-properties.h'.
    
        $ grep ^omp_device_properties\ = build-gcc/gcc/Makefile
        omp_device_properties =  amdgcn-amdhsa= nvptx-none=omp-device-properties-nvptx x86_64-intelmicemul-linux-gnu=omp-device-properties-i386
    
    Given the 's-omp-device-properties-h' Makefile rule, indeed there is an
    unescaped '$${props}', which is meant to be the filename following the equals
    sign -- but there is none for 'amdgcn-amdhsa=', so this tries to read from
    'stdin'!
    
    The real problem of course is elsewhere.
    
            gcc/
            * configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
            * configure: Regenerate.

Diff:
---
 gcc/ChangeLog    | 3 +++
 gcc/configure    | 2 +-
 gcc/configure.ac | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ef851ef8462..85d1c2b6f75 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
 
+	* configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
+	* configure: Regenerate.
+
 	PR target/94279
 	* rtlanal.c (set_noop_p): Handle non-constant selectors.
 
diff --git a/gcc/configure b/gcc/configure
index 9e22c5a286f..83101072aea 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -7924,7 +7924,7 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
 	omp_device_property=omp-device-properties-i386
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
 	;;
-      gcn*-*)
+      amdgcn*-*)
 	omp_device_property=omp-device-properties-gcn
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
 	;;
diff --git a/gcc/configure.ac b/gcc/configure.ac
index cd62312b813..b604047ae45 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1049,7 +1049,7 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
 	omp_device_property=omp-device-properties-i386
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
 	;;
-      gcn*-*)
+      amdgcn*-*)
 	omp_device_property=omp-device-properties-gcn
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
 	;;


More information about the Gcc-cvs mailing list