[nvptx libgomp plugin] Build only in supported configurations

As recently again discussed in <https://gcc.gnu.org/PR97436> "[nvptx] -m32
support", nvptx offloading other than for 64-bit host has never been
implemented, tested, supported.  So we simply should buildn't the nvptx libgomp
plugin in this case.

This avoids build problems if, for example, in a (standard) bi-arch
x86_64-pc-linux-gnu '-m64'/'-m32' build, libcuda is available only in a 64-bit
variant but not in a 32-bit one, which, for example, is the case if you build
GCC against the CUDA toolkit's 'stubs/libcuda.so' (see
<https://stackoverflow.com/a/52784819>).

This amends PR65099 commit a92defdab7 (r225560)
"[nvptx offloading] Only 64-bit configurations are currently supported" to
match the way we're doing this for the HSA/GCN plugins.

	libgomp/
	PR libgomp/65099
	* plugin/configfrag.ac (PLUGIN_NVPTX): Restrict to supported
	configurations.
	* configure: Regenerate.
	* plugin/plugin-nvptx.c (nvptx_get_num_devices): Remove 64-bit
	check.
This commit is contained in:
Thomas Schwinge 2020-11-30 15:15:20 +01:00
parent 57a4f5e4ea
commit 6106dfb9f7
3 changed files with 104 additions and 81 deletions

18
libgomp/configure vendored
View File

@ -15272,6 +15272,15 @@ if test x"$enable_offload_targets" != x; then
tgt_plugin=intelmic
;;
nvptx*)
case "${target}" in
aarch64*-*-* | powerpc64le-*-* | x86_64-*-*)
case " ${CC} ${CFLAGS} " in
*" -m32 "* | *" -mx32 "*)
# PR libgomp/65099: Currently, we only support offloading in
# 64-bit configurations.
PLUGIN_NVPTX=0
;;
*)
tgt_plugin=nvptx
PLUGIN_NVPTX=$tgt
if test "x$CUDA_DRIVER_LIB" != xno \
@ -15323,7 +15332,14 @@ rm -f core conftest.err conftest.$ac_objext \
;;
esac
;;
esac
;;
*-*-*)
# Target architecture not supported.
PLUGIN_NVPTX=0
;;
esac
;;
amdgcn*)
case "${target}" in
x86_64-*-*)

View File

@ -158,6 +158,15 @@ if test x"$enable_offload_targets" != x; then
tgt_plugin=intelmic
;;
nvptx*)
case "${target}" in
aarch64*-*-* | powerpc64le-*-* | x86_64-*-*)
case " ${CC} ${CFLAGS} " in
*" -m32 "* | *" -mx32 "*)
# PR libgomp/65099: Currently, we only support offloading in
# 64-bit configurations.
PLUGIN_NVPTX=0
;;
*)
tgt_plugin=nvptx
PLUGIN_NVPTX=$tgt
if test "x$CUDA_DRIVER_LIB" != xno \
@ -198,7 +207,14 @@ if test x"$enable_offload_targets" != x; then
;;
esac
;;
esac
;;
*-*-*)
# Target architecture not supported.
PLUGIN_NVPTX=0
;;
esac
;;
amdgcn*)
case "${target}" in
x86_64-*-*)

View File

@ -572,15 +572,6 @@ nvptx_get_num_devices (void)
{
int n;
/* PR libgomp/65099: Currently, we only support offloading in 64-bit
configurations. */
if (sizeof (void *) != 8)
{
GOMP_PLUGIN_debug (0, "Disabling nvptx offloading;"
" only 64-bit configurations are supported\n");
return 0;
}
/* This function will be called before the plugin has been initialized in
order to enumerate available devices, but CUDA API routines can't be used
until cuInit has been called. Just call it now (but don't yet do any