Bug 96265 - offloading to nvptx-none from aarch64-linux-gnu (and riscv*-linux-gnu) does not work
Summary: offloading to nvptx-none from aarch64-linux-gnu (and riscv*-linux-gnu) does n...
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: ipa (show other bugs)
Version: 11.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: ice-on-valid-code, lto, openacc, openmp
: 114174 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-07-21 11:55 UTC by Matthias Klose
Modified: 2024-04-10 02:59 UTC (History)
8 users (show)

See Also:
Host: aarch64-linux
Target: nvptx
Build:
Known to work:
Known to fail:
Last reconfirmed: 2024-04-09 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Klose 2020-07-21 11:55:22 UTC
The nvptx-target usually is built on x86_64-linux-gnu, but searching the web you'll see that these GPUs are also used in aarch64-linux-gnu and powerpc64le-linux-gnu systems.

building the nvptx offload compiler on powerpc64le, you see reasonable test results for libgomp,  and I see at last one powerpc64le related commit:

2015-10-09  James Norris  <jnorris@codesourcery.com>

        * config/rs6000/rs6000.c (rs6000_offload_options): New.
        (TARGET_OFFLOAD_OPTIONS): New.

However adding an aarch64_offload_options hook doesn't look that well for AArch64, there are still two type of issues triggered in the testsuite:

FAIL: libgomp.c/../libgomp.c-c++-common/for-11.c (test for excess errors)
Excess errors:
lto1: fatal error: nvptx-none - 0-bit integer numbers unsupported (mode 'SI')


and:

NRESOLVED: libgomp.c/../libgomp.c-c++-common/for-9.c compilation failed to produce executable
UNSUPPORTED: libgomp.c/../libgomp.c-c++-common/function-not-offloaded-aux.c

spawn -ignore SIGHUP /home/ubuntu/gcc-10-10.1.0/build/./gcc/xgcc -B/home/ubuntu/gcc-10-10.1.0/build/./gcc/ -B/usr/aarch64-linux-gnu/b
in/ -B/usr/aarch64-linux-gnu/lib/ -isystem /usr/aarch64-linux-gnu/include -isystem /usr/aarch64-linux-gnu/sys-include -isystem /home/
ubuntu/gcc-10-10.1.0/build/sys-include -fchecking=1 offload_device_nonshared_as411951.c -B/home/ubuntu/gcc-10-10.1.0/build/aarch64-li
nux-gnu/./libgomp/ -B/home/ubuntu/gcc-10-10.1.0/build/aarch64-linux-gnu/./libgomp/.libs -I/home/ubuntu/gcc-10-10.1.0/build/aarch64-li
nux-gnu/./libgomp -I../../../../src/libgomp/testsuite/../../include -I../../../../src/libgomp/testsuite/.. -Lno -fmessage-length=0 -f
no-diagnostics-show-caret -Wno-hsa -fdiagnostics-color=never -B/home/ubuntu/gcc-10-10.1.0/debian/tmp-nvptx/usr/libexec/gcc/aarch64-li
nux-gnu/10 -B/home/ubuntu/gcc-10-10.1.0/debian/tmp-nvptx/usr/bin -fopenmp -L/home/ubuntu/gcc-10-10.1.0/build/aarch64-linux-gnu/./libg
omp/.libs -lm -o offload_device_nonshared_as411951.exe
lto1: internal compiler error: bytecode stream: string too long for the string table
0x62559f string_for_index
        ../../src-nvptx/gcc/data-streamer-in.c:53
0x62559f bp_unpack_indexed_string(data_in*, bitpack_d*, unsigned int*)
        ../../src-nvptx/gcc/data-streamer-in.c:97
0x87a39b lto_input_mode_table(lto_file_decl_data*)
        ../../src-nvptx/gcc/lto-streamer-in.c:1685
0x5a076f lto_file_finalize
        ../../src-nvptx/gcc/lto/lto-common.c:2217
0x5a076f lto_create_files_from_ids
        ../../src-nvptx/gcc/lto/lto-common.c:2240
0x5a076f lto_file_read
        ../../src-nvptx/gcc/lto/lto-common.c:2295
0x5a076f read_cgraph_and_symbols(unsigned int, char const**)
        ../../src-nvptx/gcc/lto/lto-common.c:2747
0x58f523 lto_main()
        ../../src-nvptx/gcc/lto/lto.c:625
Please submit a full bug report,
with preprocessed source if appropriate.
Comment 1 Matthias Klose 2020-07-23 13:58:57 UTC
patch for the target hook posted at
https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550534.html
Comment 2 Tobias Burnus 2020-11-13 09:12:18 UTC
(Remove powerpc64le-linux-gnu from the summary as this PR is only about aarch64-linux and GCC is known to work on powerpc64le-linux-gnu.)

(In reply to Matthias Klose from comment #1)
> patch for the target hook posted at
> https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550534.html

This patch has been committed on Fri Jul 24 16:17:44 2020 +0200 as
https://gcc.gnu.org/g:29a14a1a907947fe9e43bce62d3468559f17da97
Comment 3 Xiao Ma 2023-10-23 14:30:38 UTC
I think this issue and #111937 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111937) have the same root cause: 
aarch64 also sets NUM_POLY_INT_COEFFS to 2, which makes it incompatible with the default value for nvptx (which is 1).
Comment 4 Andrew Pinski 2024-02-29 17:50:26 UTC
*** Bug 114174 has been marked as a duplicate of this bug. ***
Comment 5 Andrew Pinski 2024-04-09 01:14:25 UTC
Confirmed.
Comment 6 Andrew Pinski 2024-04-09 01:14:50 UTC
*** Bug 111937 has been marked as a duplicate of this bug. ***