Message ID | 286e5610-98d3-68ce-7bd4-47c009d24d90@codesourcery.com |
---|---|
State | New |
Headers | show |
Series | +[RFC] AMDGCN offloading – use amdgcn-amdhsa vs. amdgcn-unknown-amdhsa | expand |
On 20/03/2020 21:08, Tobias Burnus wrote: > Dear all, > > normally, the target triplet does not play much of a role as > it is not really exposed to the user. However, for offloading, > it appears often: > * In distribution use, offloading support is compiled in, but > not enabled by default; one needs to use -foffload=… explicitly. > * Even with the default build (all offload targets are enabled by > default), one still might need to specify the host triplet – if, > e.g., NVidia and GCN are both supported — as AMDGCN needs a > -march=, i.e. -foffload=<triplet>=-march=... > > Coming to offloading: > * for Nvidia, everyone uses "nvptx-none" > * for AMDGCN is was initially "amdgcn-unknown-amdhsa" > > However, when Matthias build it for Debian, he shortened it to > "amdgcn-amdhsa" – as did Richard for SUSE. Cf > https://salsa.debian.org/toolchain-team/gcc/-/blob/master/debian/rules2 > andhttps://build.opensuse.org/package/view_file/devel:gcc/gcc10/gcc.spec.in?expand=1 > > > This shortening makes it user friendlier and I like it, but > it now causes that the offloading target is not recognized by > the testsuite – and I think one also should update the documentation. > > > OK – or do you have better/additional suggestions? The patch looks OK to me, as far as fixing the immediate problem goes. I hadn't realised this test was so fragile though. :-( Perhaps it should also recognise the standard names used in the OpenACC documentation? In this case "radeon". (I don't recall, off hand, if OpenMP uses standard device names.) Andrew
AMDGCN offloading – use amdgcn-amdhsa gcc/ * doc/install.texi (amdgcn-*-amdhsa): Renamed from amdgcn-unknown-amdhsa; change amdgcn-unknown-amdhsa to amdgcn-amdhsa. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_offload_gcn): Check for -foffload=amdgcn-amdhsa not ...=amdgcn-unknown-amdhsa. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 92961833ef6..559610802be 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -3572,22 +3572,22 @@ This is a synonym for @samp{x86_64-*-solaris2*}. @html <hr /> @end html -@anchor{amdgcn-unknown-amdhsa} -@heading amdgcn-unknown-amdhsa +@anchor{amdgcn-x-amdhsa} +@heading amdgcn-*-amdhsa AMD GCN GPU target. Instead of GNU Binutils, you will need to install LLVM 6, or later, and copy -@file{bin/llvm-mc} to @file{amdgcn-unknown-amdhsa/bin/as}, -@file{bin/lld} to @file{amdgcn-unknown-amdhsa/bin/ld}, -@file{bin/llvm-nm} to @file{amdgcn-unknown-amdhsa/bin/nm}, and -@file{bin/llvm-ar} to both @file{bin/amdgcn-unknown-amdhsa-ar} and -@file{bin/amdgcn-unknown-amdhsa-ranlib}. +@file{bin/llvm-mc} to @file{amdgcn-amdhsa/bin/as}, +@file{bin/lld} to @file{amdgcn-amdhsa/bin/ld}, +@file{bin/llvm-nm} to @file{amdgcn-amdhsa/bin/nm}, and +@file{bin/llvm-ar} to both @file{bin/amdgcn-amdhsa-ar} and +@file{bin/amdgcn-amdhsa-ranlib}. Use Newlib (2019-01-16, or newer). To run the binaries, install the HSA Runtime from the @uref{https://rocm.github.io,,ROCm Platform}, and use -@file{libexec/gcc/amdhsa-unknown-amdhsa/@var{version}/gcn-run} to launch them +@file{libexec/gcc/amdhsa-amdhsa/@var{version}/gcn-run} to launch them on the GPU. @html diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 4413c26fbc9..58919a31a00 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -9562,7 +9562,7 @@ proc check_effective_target_offload_hsa { } { proc check_effective_target_offload_gcn { } { return [check_no_compiler_messages offload_gcn assembly { int main () {return 0;} - } "-foffload=amdgcn-unknown-amdhsa" ] + } "-foffload=amdgcn-amdhsa" ] } # Return 1 if the target support -fprofile-update=atomic