From d64ae6140f40859c0e73df7ca597cdf08eb31bd2 Mon Sep 17 00:00:00 2001 From: Andrey Turetskiy Date: Thu, 13 Nov 2014 14:07:09 +0000 Subject: [PATCH] [PATCH 4/4] OpenMP 4.0 offloading to Intel MIC: non-fallback testing. libgomp/ * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac: Set up offload_additional_options, offload_additional_lib_paths and offload_targets. * testsuite/Makefile.am: Export environment variables: OFFLOAD_TARGETS, OFFLOAD_ADDITIONAL_OPTIONS, OFFLOAD_ADDITIONAL_LIB_PATHS. * testsuite/Makefile.in: Regenerate. * testsuite/lib/libgomp.exp (libgomp_init): Append offload_additional_lib_paths to LD_LIBRARY_PATH. Append offload_additional_options to ALWAYS_CFLAGS. Append liboffloadmic build directory to LD_LIBRARY_PATH for intelmic offload targets. Co-Authored-By: Ilya Verbin From-SVN: r217500 --- libgomp/ChangeLog | 15 +++++++++++++++ libgomp/Makefile.in | 3 +++ libgomp/configure | 21 +++++++++++++++++++-- libgomp/configure.ac | 14 ++++++++++++++ libgomp/testsuite/Makefile.am | 5 +++++ libgomp/testsuite/Makefile.in | 8 ++++++++ libgomp/testsuite/lib/libgomp.exp | 25 +++++++++++++++++++++++++ 7 files changed, 89 insertions(+), 2 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index e5522cf2ddc..0662415f255 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,18 @@ +2014-11-13 Andrey Turetskiy + Ilya Verbin + + * Makefile.in: Regenerate. + * configure: Regenerate. + * configure.ac: Set up offload_additional_options, + offload_additional_lib_paths and offload_targets. + * testsuite/Makefile.am: Export environment variables: OFFLOAD_TARGETS, + OFFLOAD_ADDITIONAL_OPTIONS, OFFLOAD_ADDITIONAL_LIB_PATHS. + * testsuite/Makefile.in: Regenerate. + * testsuite/lib/libgomp.exp (libgomp_init): Append + offload_additional_lib_paths to LD_LIBRARY_PATH. Append + offload_additional_options to ALWAYS_CFLAGS. Append liboffloadmic + build directory to LD_LIBRARY_PATH for intelmic offload targets. + 2014-11-13 Andrey Turetskiy Ilya Verbin Kirill Yukhin diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in index 5cd666f8ec6..8e4774f6c0e 100644 --- a/libgomp/Makefile.in +++ b/libgomp/Makefile.in @@ -268,6 +268,9 @@ lt_host_flags = @lt_host_flags@ mandir = @mandir@ mkdir_p = @mkdir_p@ multi_basedir = @multi_basedir@ +offload_additional_lib_paths = @offload_additional_lib_paths@ +offload_additional_options = @offload_additional_options@ +offload_targets = @offload_targets@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ diff --git a/libgomp/configure b/libgomp/configure index 7cd20b1bca1..19f36c6db0c 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -616,6 +616,9 @@ OMP_LOCK_SIZE USE_FORTRAN_FALSE USE_FORTRAN_TRUE link_gomp +offload_additional_lib_paths +offload_additional_options +offload_targets XLDFLAGS XCFLAGS config_path @@ -11094,7 +11097,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11097 "configure" +#line 11100 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11200,7 +11203,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11203 "configure" +#line 11206 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -16207,9 +16210,13 @@ else multilib_arg= fi +# Get accel target and path to install tree of accel compiler +offload_additional_options= +offload_additional_lib_paths= offload_targets= if test x"$enable_offload_targets" != x; then for tgt in `echo $enable_offload_targets | sed -e 's#,# #g'`; do + tgt_dir=`echo $tgt | grep '=' | sed 's/.*=//'` tgt=`echo $tgt | sed 's/=.*//'` case $tgt in *-intelmic-* | *-intelmicemul-*) @@ -16222,6 +16229,13 @@ if test x"$enable_offload_targets" != x; then else offload_targets=$offload_targets,$tgt_name fi + if test x"$tgt_dir" != x; then + offload_additional_options="$offload_additional_options -B$tgt_dir/libexec/gcc/\$(target_alias)/\$(gcc_version) -B$tgt_dir/bin" + offload_additional_lib_paths="$offload_additional_lib_paths:$tgt_dir/lib64:$tgt_dir/lib" + else + offload_additional_options="$offload_additional_options -B\$(libexecdir)/gcc/\$(target_alias)/\$(gcc_version) -B\$(bindir)" + offload_additional_lib_paths="$offload_additional_lib_paths:$toolexeclibdir" + fi done fi @@ -16230,6 +16244,9 @@ cat >>confdefs.h <<_ACEOF _ACEOF + + + # Set up the set of libraries that we need to link against for libgomp. # Note that the GOMP_SELF_SPEC in gcc.c may force -pthread, # which will force linkage against -lpthread (or equivalent for the system). diff --git a/libgomp/configure.ac b/libgomp/configure.ac index 3f34ff8ee5f..cea63660c5a 100644 --- a/libgomp/configure.ac +++ b/libgomp/configure.ac @@ -280,9 +280,13 @@ else multilib_arg= fi +# Get accel target and path to install tree of accel compiler +offload_additional_options= +offload_additional_lib_paths= offload_targets= if test x"$enable_offload_targets" != x; then for tgt in `echo $enable_offload_targets | sed -e 's#,# #g'`; do + tgt_dir=`echo $tgt | grep '=' | sed 's/.*=//'` tgt=`echo $tgt | sed 's/=.*//'` case $tgt in *-intelmic-* | *-intelmicemul-*) @@ -295,10 +299,20 @@ if test x"$enable_offload_targets" != x; then else offload_targets=$offload_targets,$tgt_name fi + if test x"$tgt_dir" != x; then + offload_additional_options="$offload_additional_options -B$tgt_dir/libexec/gcc/\$(target_alias)/\$(gcc_version) -B$tgt_dir/bin" + offload_additional_lib_paths="$offload_additional_lib_paths:$tgt_dir/lib64:$tgt_dir/lib" + else + offload_additional_options="$offload_additional_options -B\$(libexecdir)/gcc/\$(target_alias)/\$(gcc_version) -B\$(bindir)" + offload_additional_lib_paths="$offload_additional_lib_paths:$toolexeclibdir" + fi done fi AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets", [Define to hold the list of target names suitable for offloading.]) +AC_SUBST(offload_targets) +AC_SUBST(offload_additional_options) +AC_SUBST(offload_additional_lib_paths) # Set up the set of libraries that we need to link against for libgomp. # Note that the GOMP_SELF_SPEC in gcc.c may force -pthread, diff --git a/libgomp/testsuite/Makefile.am b/libgomp/testsuite/Makefile.am index 561b7e25448..9cc103a1c4d 100644 --- a/libgomp/testsuite/Makefile.am +++ b/libgomp/testsuite/Makefile.am @@ -11,3 +11,8 @@ EXPECT = $(shell if test -f $(top_builddir)/../expect/expect; then \ _RUNTEST = $(shell if test -f $(top_srcdir)/../dejagnu/runtest; then \ echo $(top_srcdir)/../dejagnu/runtest; else echo runtest; fi) RUNTEST = "$(_RUNTEST) $(AM_RUNTESTFLAGS)" + +# Used for support non-fallback offloading. +export OFFLOAD_TARGETS = $(offload_targets) +export OFFLOAD_ADDITIONAL_OPTIONS = $(offload_additional_options) +export OFFLOAD_ADDITIONAL_LIB_PATHS = $(offload_additional_lib_paths) diff --git a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in index 5273eaa2b35..2f845f0c7cb 100644 --- a/libgomp/testsuite/Makefile.in +++ b/libgomp/testsuite/Makefile.in @@ -184,6 +184,9 @@ lt_host_flags = @lt_host_flags@ mandir = @mandir@ mkdir_p = @mkdir_p@ multi_basedir = @multi_basedir@ +offload_additional_lib_paths = @offload_additional_lib_paths@ +offload_additional_options = @offload_additional_options@ +offload_targets = @offload_targets@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ @@ -408,6 +411,11 @@ uninstall-am: uninstall uninstall-am +# Used for support non-fallback offloading. +export OFFLOAD_TARGETS = $(offload_targets) +export OFFLOAD_ADDITIONAL_OPTIONS = $(offload_additional_options) +export OFFLOAD_ADDITIONAL_LIB_PATHS = $(offload_additional_lib_paths) + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp index 071e22fbf30..a1546847323 100644 --- a/libgomp/testsuite/lib/libgomp.exp +++ b/libgomp/testsuite/lib/libgomp.exp @@ -107,6 +107,25 @@ proc libgomp_init { args } { # Compute what needs to be put into LD_LIBRARY_PATH set always_ld_library_path ".:${blddir}/.libs" + # Get offload-related variables from environment (exported by Makefile) + set offload_targets [getenv OFFLOAD_TARGETS] + set offload_additional_options [getenv OFFLOAD_ADDITIONAL_OPTIONS] + set offload_additional_lib_paths [getenv OFFLOAD_ADDITIONAL_LIB_PATHS] + + # Add liboffloadmic build directory in LD_LIBRARY_PATH to support + # non-fallback testing for Intel MIC targets + if { [string match "*-intelmic-*" $offload_targets] + || [string match "*-intelmicemul-*" $offload_targets] } { + append always_ld_library_path ":${blddir}/../liboffloadmic/.libs" + append always_ld_library_path ":${blddir}/../liboffloadmic/plugin/.libs" + # libstdc++ is required by liboffloadmic + append always_ld_library_path ":${blddir}/../libstdc++-v3/src/.libs" + } + + if { $offload_additional_lib_paths != "" } { + append always_ld_library_path "${offload_additional_lib_paths}" + } + # Compute what needs to be added to the existing LD_LIBRARY_PATH. if {$gccdir != ""} { # Add AIX pthread directory first. @@ -169,6 +188,12 @@ proc libgomp_init { args } { # Disable color diagnostics lappend ALWAYS_CFLAGS "additional_flags=-fdiagnostics-color=never" + + # Used for support non-fallback offloading. + # Help GCC to find target mkoffload. + if { $offload_additional_options != "" } { + lappend ALWAYS_CFLAGS "additional_flags=${offload_additional_options}" + } } #