AMD GCN offloading support.
This commit is contained in:
parent
41cbdc2247
commit
1362054ff7
139
gcc.spec
139
gcc.spec
@ -114,6 +114,11 @@
|
|||||||
%else
|
%else
|
||||||
%global build_offload_nvptx 0
|
%global build_offload_nvptx 0
|
||||||
%endif
|
%endif
|
||||||
|
%ifarch x86_64
|
||||||
|
%global build_offload_amdgcn 1
|
||||||
|
%else
|
||||||
|
%global build_offload_amdgcn 0
|
||||||
|
%endif
|
||||||
%if 0%{?fedora} < 32 && 0%{?rhel} < 8
|
%if 0%{?fedora} < 32 && 0%{?rhel} < 8
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
%global multilib_32_arch s390
|
%global multilib_32_arch s390
|
||||||
@ -229,6 +234,9 @@ BuildRequires: libunwind >= 0.98
|
|||||||
BuildRequires: doxygen >= 1.7.1
|
BuildRequires: doxygen >= 1.7.1
|
||||||
BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl
|
BuildRequires: graphviz, dblatex, texlive-collection-latex, docbook5-style-xsl
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_offload_amdgcn}
|
||||||
|
BuildRequires: llvm, lld
|
||||||
|
%endif
|
||||||
Requires: cpp = %{version}-%{release}
|
Requires: cpp = %{version}-%{release}
|
||||||
# Need .eh_frame ld optimizations
|
# Need .eh_frame ld optimizations
|
||||||
# Need proper visibility support
|
# Need proper visibility support
|
||||||
@ -552,6 +560,15 @@ This package contains libgomp plugin for offloading to NVidia
|
|||||||
PTX. The plugin needs libcuda.so.1 shared library that has to be
|
PTX. The plugin needs libcuda.so.1 shared library that has to be
|
||||||
installed separately.
|
installed separately.
|
||||||
|
|
||||||
|
%package -n libgomp-offload-amdgcn
|
||||||
|
Summary: GCC OpenMP v4.5 plugin for offloading to AMD GCN
|
||||||
|
Requires: libgomp = %{version}-%{release}
|
||||||
|
Requires: rocm-runtime >= 6.0.0
|
||||||
|
|
||||||
|
%description -n libgomp-offload-amdgcn
|
||||||
|
This package contains libgomp plugin for offloading to AMD ROCm capable
|
||||||
|
devices.
|
||||||
|
|
||||||
%package gdb-plugin
|
%package gdb-plugin
|
||||||
Summary: GCC plugin for GDB
|
Summary: GCC plugin for GDB
|
||||||
Requires: gcc = %{version}-%{release}
|
Requires: gcc = %{version}-%{release}
|
||||||
@ -834,6 +851,18 @@ NVidia PTX. OpenMP and OpenACC programs linked with -fopenmp will
|
|||||||
by default add PTX code into the binaries, which can be offloaded
|
by default add PTX code into the binaries, which can be offloaded
|
||||||
to NVidia PTX capable devices if available.
|
to NVidia PTX capable devices if available.
|
||||||
|
|
||||||
|
%package offload-amdgcn
|
||||||
|
Summary: Offloading compiler to AMD GCN
|
||||||
|
Requires: gcc = %{version}-%{release}
|
||||||
|
Requires: libgomp-offload-amdgcn = %{version}-%{release}
|
||||||
|
Requires: llvm, lld
|
||||||
|
|
||||||
|
%description offload-amdgcn
|
||||||
|
The gcc-offload-amdgcn package provides offloading support for
|
||||||
|
AMD GCN. OpenMP and OpenACC programs linked with -fopenmp will
|
||||||
|
by default add GCN code into the binaries, which can be offloaded
|
||||||
|
to AMD ROCm capable devices if available.
|
||||||
|
|
||||||
%package plugin-annobin
|
%package plugin-annobin
|
||||||
Summary: The annobin plugin for gcc, built by the installed version of gcc
|
Summary: The annobin plugin for gcc, built by the installed version of gcc
|
||||||
Requires: gcc = %{version}-%{release}
|
Requires: gcc = %{version}-%{release}
|
||||||
@ -976,6 +1005,42 @@ cd ..
|
|||||||
rm -f newlib
|
rm -f newlib
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{build_offload_amdgcn}
|
||||||
|
mkdir -p objia%{_prefix}/bin objia%{_prefix}/amdgcn-amdhsa/bin
|
||||||
|
IAROOT=`pwd`/objia
|
||||||
|
ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ar
|
||||||
|
ln -sf %{_prefix}/bin/llvm-ar ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ranlib
|
||||||
|
ln -sf %{_prefix}/bin/llvm-mc ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-as
|
||||||
|
ln -sf %{_prefix}/bin/llvm-nm ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-nm
|
||||||
|
ln -sf %{_prefix}/bin/lld ${IAROOT}%{_prefix}/bin/amdgcn-amdhsa-ld
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ar ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ar
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ranlib ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ranlib
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-as ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/as
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-nm ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/nm
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ld ${IAROOT}%{_prefix}/amdgcn-amdhsa/bin/ld
|
||||||
|
|
||||||
|
ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib
|
||||||
|
rm -rf obj-offload-amdgcn-amdhsa
|
||||||
|
mkdir obj-offload-amdgcn-amdhsa
|
||||||
|
|
||||||
|
cd obj-offload-amdgcn-amdhsa
|
||||||
|
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
|
||||||
|
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
|
||||||
|
| sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
|
||||||
|
XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
|
||||||
|
../configure --disable-bootstrap --disable-sjlj-exceptions \
|
||||||
|
--with-build-time-tools=${IAROOT}%{_prefix}/amdgcn-amdhsa/bin \
|
||||||
|
--target amdgcn-amdhsa --enable-as-accelerator-for=%{gcc_target_platform} \
|
||||||
|
--enable-languages=c,c++,fortran,lto \
|
||||||
|
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
||||||
|
--with-bugurl=http://bugzilla.redhat.com/bugzilla \
|
||||||
|
--enable-checking=release --with-system-zlib \
|
||||||
|
--with-gcc-major-version-only --without-isl --disable-libquadmath
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
cd ..
|
||||||
|
rm -f newlib
|
||||||
|
%endif
|
||||||
|
|
||||||
rm -rf obj-%{gcc_target_platform}
|
rm -rf obj-%{gcc_target_platform}
|
||||||
mkdir obj-%{gcc_target_platform}
|
mkdir obj-%{gcc_target_platform}
|
||||||
cd obj-%{gcc_target_platform}
|
cd obj-%{gcc_target_platform}
|
||||||
@ -1021,6 +1086,13 @@ enableld=,d
|
|||||||
%if %{build_m2}
|
%if %{build_m2}
|
||||||
enablelm2=,m2
|
enablelm2=,m2
|
||||||
%endif
|
%endif
|
||||||
|
offloadtgts=
|
||||||
|
%if %{build_offload_nvptx}
|
||||||
|
offloadtgts=nvptx-none
|
||||||
|
%endif
|
||||||
|
%if %{build_offload_amdgcn}
|
||||||
|
offloadtgts=${offloadtgts:+${offloadtgts},}amdgcn-amdhsa
|
||||||
|
%endif
|
||||||
CONFIGURE_OPTS="\
|
CONFIGURE_OPTS="\
|
||||||
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
||||||
--with-bugurl=http://bugzilla.redhat.com/bugzilla \
|
--with-bugurl=http://bugzilla.redhat.com/bugzilla \
|
||||||
@ -1053,9 +1125,11 @@ CONFIGURE_OPTS="\
|
|||||||
%else
|
%else
|
||||||
--without-isl \
|
--without-isl \
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_offload_nvptx} || %{build_offload_amdgcn}
|
||||||
|
--enable-offload-targets=$offloadtgts --enable-offload-defaulted \
|
||||||
|
%endif
|
||||||
%if %{build_offload_nvptx}
|
%if %{build_offload_nvptx}
|
||||||
--enable-offload-targets=nvptx-none \
|
--without-cuda-driver \
|
||||||
--without-cuda-driver --enable-offload-defaulted \
|
|
||||||
%endif
|
%endif
|
||||||
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
|
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
|
||||||
%if %{attr_ifunc}
|
%if %{attr_ifunc}
|
||||||
@ -1359,6 +1433,43 @@ cd ..
|
|||||||
rm -f newlib
|
rm -f newlib
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{build_offload_amdgcn}
|
||||||
|
mkdir -p %{buildroot}%{_prefix}/bin %{buildroot}%{_prefix}/amdgcn-amdhsa/bin
|
||||||
|
ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ar
|
||||||
|
ln -sf llvm-ar %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ranlib
|
||||||
|
ln -sf llvm-mc %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-as
|
||||||
|
ln -sf llvm-nm %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-nm
|
||||||
|
ln -sf lld %{buildroot}%{_prefix}/bin/amdgcn-amdhsa-ld
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ar %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ar
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ranlib %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ranlib
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-as %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/as
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-nm %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/nm
|
||||||
|
ln -sf ../../bin/amdgcn-amdhsa-ld %{buildroot}%{_prefix}/amdgcn-amdhsa/bin/ld
|
||||||
|
|
||||||
|
ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib
|
||||||
|
cd obj-offload-amdgcn-amdhsa
|
||||||
|
make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
|
||||||
|
infodir=%{buildroot}%{_infodir} install
|
||||||
|
rm -rf %{buildroot}%{_prefix}/libexec/gcc/amdgcn-amdhsa/%{gcc_major}/install-tools
|
||||||
|
rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,cc1,cc1plus,f951}
|
||||||
|
rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale
|
||||||
|
rm -rf %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/{install-tools,plugin}
|
||||||
|
rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/{install-tools,plugin,include-fixed}
|
||||||
|
rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1*
|
||||||
|
mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/
|
||||||
|
mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx906/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/
|
||||||
|
mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx908/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/
|
||||||
|
mv -f %{buildroot}%{_prefix}/amdgcn-amdhsa/lib/gfx90a/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/
|
||||||
|
mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/
|
||||||
|
mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx906/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx906/
|
||||||
|
mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx908/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx908/
|
||||||
|
mv -f %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa/%{gcc_major}/gfx90a/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa/gfx90a/
|
||||||
|
find %{buildroot}%{_prefix}/lib/gcc/amdgcn-amdhsa %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa \
|
||||||
|
%{buildroot}%{_prefix}/amdgcn-amdhsa/lib -name \*.la | xargs rm
|
||||||
|
cd ..
|
||||||
|
rm -f newlib
|
||||||
|
%endif
|
||||||
|
|
||||||
cd obj-%{gcc_target_platform}
|
cd obj-%{gcc_target_platform}
|
||||||
|
|
||||||
TARGET_PLATFORM=%{gcc_target_platform}
|
TARGET_PLATFORM=%{gcc_target_platform}
|
||||||
@ -3446,6 +3557,30 @@ end
|
|||||||
%{_prefix}/%{_lib}/libgomp-plugin-nvptx.so.*
|
%{_prefix}/%{_lib}/libgomp-plugin-nvptx.so.*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{build_offload_amdgcn}
|
||||||
|
%files offload-amdgcn
|
||||||
|
%{_prefix}/bin/amdgcn-amdhsa-*
|
||||||
|
%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-gcc
|
||||||
|
%{_prefix}/bin/%{gcc_target_platform}-accel-amdgcn-amdhsa-lto-dump
|
||||||
|
%dir %{_prefix}/lib/gcc
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||||
|
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel
|
||||||
|
%dir %{_prefix}/libexec/gcc
|
||||||
|
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
|
||||||
|
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||||
|
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel
|
||||||
|
%{_prefix}/lib/gcc/amdgcn-amdhsa
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa
|
||||||
|
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/amdgcn-amdhsa
|
||||||
|
%dir %{_prefix}/amdgcn-amdhsa
|
||||||
|
%{_prefix}/amdgcn-amdhsa/bin
|
||||||
|
%{_prefix}/amdgcn-amdhsa/include
|
||||||
|
|
||||||
|
%files -n libgomp-offload-amdgcn
|
||||||
|
%{_prefix}/%{_lib}/libgomp-plugin-gcn.so.*
|
||||||
|
%endif
|
||||||
|
|
||||||
%if %{build_annobin_plugin}
|
%if %{build_annobin_plugin}
|
||||||
%files plugin-annobin
|
%files plugin-annobin
|
||||||
%dir %{_prefix}/lib/gcc
|
%dir %{_prefix}/lib/gcc
|
||||||
|
Loading…
Reference in New Issue
Block a user