[nvptx offloading] Only 64-bit configurations are currently supported

PR libgomp/65099
	gcc/
	* config/nvptx/mkoffload.c (main): Create an offload image only in
	64-bit configurations.
	libgomp/
	* plugin/plugin-nvptx.c (nvptx_get_num_devices): Return 0 if not
	in a 64-bit configuration.
	* testsuite/libgomp.oacc-c++/c++.exp: Don't attempt nvidia
	offloading testing if no such device is available.
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.

From-SVN: r225560
This commit is contained in:
Thomas Schwinge 2015-07-08 16:59:59 +02:00 committed by Thomas Schwinge
parent 18b80efb60
commit a92defdab7
7 changed files with 70 additions and 25 deletions

View File

@ -1,3 +1,9 @@
2015-07-08 Thomas Schwinge <thomas@codesourcery.com>
PR libgomp/65099
* config/nvptx/mkoffload.c (main): Create an offload image only in
64-bit configurations.
2015-07-08 Martin Liska <mliska@suse.cz>
PR bootstrap/66744

View File

@ -993,37 +993,43 @@ main (int argc, char **argv)
obstack_ptr_grow (&argv_obstack, argv[ix]);
}
ptx_name = make_temp_file (".mkoffload");
obstack_ptr_grow (&argv_obstack, "-o");
obstack_ptr_grow (&argv_obstack, ptx_name);
obstack_ptr_grow (&argv_obstack, NULL);
const char **new_argv = XOBFINISH (&argv_obstack, const char **);
char *execpath = getenv ("GCC_EXEC_PREFIX");
char *cpath = getenv ("COMPILER_PATH");
char *lpath = getenv ("LIBRARY_PATH");
unsetenv ("GCC_EXEC_PREFIX");
unsetenv ("COMPILER_PATH");
unsetenv ("LIBRARY_PATH");
fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true);
obstack_free (&argv_obstack, NULL);
xputenv (concat ("GCC_EXEC_PREFIX=", execpath, NULL));
xputenv (concat ("COMPILER_PATH=", cpath, NULL));
xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
in = fopen (ptx_name, "r");
if (!in)
fatal_error (input_location, "cannot open intermediate ptx file");
ptx_cfile_name = make_temp_file (".c");
out = fopen (ptx_cfile_name, "w");
if (!out)
fatal_error (input_location, "cannot open '%s'", ptx_cfile_name);
process (in, out);
/* PR libgomp/65099: Currently, we only support offloading in 64-bit
configurations. */
if (!target_ilp32)
{
ptx_name = make_temp_file (".mkoffload");
obstack_ptr_grow (&argv_obstack, "-o");
obstack_ptr_grow (&argv_obstack, ptx_name);
obstack_ptr_grow (&argv_obstack, NULL);
const char **new_argv = XOBFINISH (&argv_obstack, const char **);
char *execpath = getenv ("GCC_EXEC_PREFIX");
char *cpath = getenv ("COMPILER_PATH");
char *lpath = getenv ("LIBRARY_PATH");
unsetenv ("GCC_EXEC_PREFIX");
unsetenv ("COMPILER_PATH");
unsetenv ("LIBRARY_PATH");
fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true);
obstack_free (&argv_obstack, NULL);
xputenv (concat ("GCC_EXEC_PREFIX=", execpath, NULL));
xputenv (concat ("COMPILER_PATH=", cpath, NULL));
xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
in = fopen (ptx_name, "r");
if (!in)
fatal_error (input_location, "cannot open intermediate ptx file");
process (in, out);
}
fclose (out);
compile_native (ptx_cfile_name, outname, collect_gcc);

View File

@ -1,3 +1,13 @@
2015-07-08 Thomas Schwinge <thomas@codesourcery.com>
PR libgomp/65099
* plugin/plugin-nvptx.c (nvptx_get_num_devices): Return 0 if not
in a 64-bit configuration.
* testsuite/libgomp.oacc-c++/c++.exp: Don't attempt nvidia
offloading testing if no such device is available.
* testsuite/libgomp.oacc-c/c.exp: Likewise.
* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
2015-07-08 Tom de Vries <tom@codesourcery.com>
* testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c (main): Fix

View File

@ -777,6 +777,11 @@ nvptx_get_num_devices (void)
int n;
CUresult r;
/* PR libgomp/65099: Currently, we only support offloading in 64-bit
configurations. */
if (sizeof (void *) != 8)
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

View File

@ -85,6 +85,12 @@ if { $lang_test_file_found } {
set acc_mem_shared 0
}
nvidia {
if { ![check_effective_target_openacc_nvidia_accel_present] } {
# Don't bother; execution testing is going to FAIL.
untested "$subdir $offload_target_openacc offloading"
continue
}
# Copy ptx file (TEMPORARY)
remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx

View File

@ -48,6 +48,12 @@ foreach offload_target_openacc $offload_targets_s_openacc {
set acc_mem_shared 0
}
nvidia {
if { ![check_effective_target_openacc_nvidia_accel_present] } {
# Don't bother; execution testing is going to FAIL.
untested "$subdir $offload_target_openacc offloading"
continue
}
# Copy ptx file (TEMPORARY)
remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx

View File

@ -77,6 +77,12 @@ if { $lang_test_file_found } {
set acc_mem_shared 0
}
nvidia {
if { ![check_effective_target_openacc_nvidia_accel_present] } {
# Don't bother; execution testing is going to FAIL.
untested "$subdir $offload_target_openacc offloading"
continue
}
set acc_mem_shared 0
}
default {