Commit a92defda by Thomas Schwinge Committed by Thomas Schwinge

[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
parent 18b80efb
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> 2015-07-08 Martin Liska <mliska@suse.cz>
PR bootstrap/66744 PR bootstrap/66744
......
...@@ -993,37 +993,43 @@ main (int argc, char **argv) ...@@ -993,37 +993,43 @@ main (int argc, char **argv)
obstack_ptr_grow (&argv_obstack, argv[ix]); 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"); ptx_cfile_name = make_temp_file (".c");
out = fopen (ptx_cfile_name, "w"); out = fopen (ptx_cfile_name, "w");
if (!out) if (!out)
fatal_error (input_location, "cannot open '%s'", ptx_cfile_name); 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); fclose (out);
compile_native (ptx_cfile_name, outname, collect_gcc); compile_native (ptx_cfile_name, outname, collect_gcc);
......
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> 2015-07-08 Tom de Vries <tom@codesourcery.com>
* testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c (main): Fix * testsuite/libgomp.c/parloops-exit-first-loop-alt-3.c (main): Fix
......
...@@ -777,6 +777,11 @@ nvptx_get_num_devices (void) ...@@ -777,6 +777,11 @@ nvptx_get_num_devices (void)
int n; int n;
CUresult r; 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 /* 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 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 until cuInit has been called. Just call it now (but don't yet do any
......
...@@ -85,6 +85,12 @@ if { $lang_test_file_found } { ...@@ -85,6 +85,12 @@ if { $lang_test_file_found } {
set acc_mem_shared 0 set acc_mem_shared 0
} }
nvidia { 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) # Copy ptx file (TEMPORARY)
remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx
......
...@@ -48,6 +48,12 @@ foreach offload_target_openacc $offload_targets_s_openacc { ...@@ -48,6 +48,12 @@ foreach offload_target_openacc $offload_targets_s_openacc {
set acc_mem_shared 0 set acc_mem_shared 0
} }
nvidia { 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) # Copy ptx file (TEMPORARY)
remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx remote_download host $srcdir/libgomp.oacc-c-c++-common/subr.ptx
......
...@@ -77,6 +77,12 @@ if { $lang_test_file_found } { ...@@ -77,6 +77,12 @@ if { $lang_test_file_found } {
set acc_mem_shared 0 set acc_mem_shared 0
} }
nvidia { 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 set acc_mem_shared 0
} }
default { default {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment