[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:
parent
18b80efb60
commit
a92defdab7
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user