From 9d158648a29d0e50f2d713c1e4bf62a05046af49 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 6 May 2019 19:23:01 -0600 Subject: [PATCH 1/2] Add support for 'fpic' build name keyword (ATDV-151) The current SPARC CUDA shared builds actually are hard-coded to link against static libs for Trilinos. For that, you nee to add -fPIC to the Trilinos static build. The default is not to use -fPIC obviously. --- cmake/std/atdm/ATDMDevEnvSettings.cmake | 11 ++++++++++- cmake/std/atdm/README.md | 13 ++++++++++--- cmake/std/atdm/utils/set_build_options.sh | 10 +++++++++- .../utils/unset_atdm_config_vars_build_options.sh | 1 + 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/cmake/std/atdm/ATDMDevEnvSettings.cmake b/cmake/std/atdm/ATDMDevEnvSettings.cmake index 9ae638361f..f1a8275abf 100644 --- a/cmake/std/atdm/ATDMDevEnvSettings.cmake +++ b/cmake/std/atdm/ATDMDevEnvSettings.cmake @@ -53,6 +53,7 @@ ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(USE_OPENMP OFF) ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(USE_PTHREADS OFF) ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(USE_CUDA OFF) ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(CUDA_RDC OFF) +ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(FPIC OFF) ATDM_SET_ATDM_VAR_FROM_ENV_AND_DEFAULT(COMPLEX OFF) SET(ATDM_INST_SERIAL OFF) @@ -176,8 +177,16 @@ ATDM_SET_CACHE(BUILD_SHARED_LIBS "${ATDM_SHARED_LIBS}" CACHE BOOL) ATDM_SET_CACHE(CMAKE_BUILD_TYPE "${ATDM_CMAKE_BUILD_TYPE}" CACHE STRING) SET(EXTRA_EXTRA_CXX_FLAGS) +# RDC IF (ATDM_USE_CUDA AND ATDM_CUDA_RDC) - SET(EXTRA_EXTRA_CXX_FLAGS " --remove-duplicate-link-files") + SET(EXTRA_EXTRA_CXX_FLAGS "${EXTRA_EXTRA_CXX_FLAGS} --remove-duplicate-link-files") + # To get around defect in TriBITS where it will add duplicate libs if a + # downstream package add dependencies on both a subpackage and its parent + # package. +ENDIF() +# FPIC +IF (ATDM_FPIC) + SET(EXTRA_EXTRA_CXX_FLAGS "${EXTRA_EXTRA_CXX_FLAGS} -fPIC") # To get around defect in TriBITS where it will add duplicate libs if a # downstream package add dependencies on both a subpackage and its parent # package. diff --git a/cmake/std/atdm/README.md b/cmake/std/atdm/README.md index 1da28a283f..24c1664173 100644 --- a/cmake/std/atdm/README.md +++ b/cmake/std/atdm/README.md @@ -86,9 +86,9 @@ build name strings [below](#build-name-examples). Each of these keywords [``](#system_name), [``](#kokkos_arch), [``](#compiler), -[``](#kokkos_thread), [``](#rdc), [``](#complex), -[``](#shared_static), [``](#release_debug), and -[``](#pt), are described below. +[``](#kokkos_thread), [``](#rdc), [``](#fpic), +[``](#complex), [``](#shared_static), +[``](#release_debug), and [``](#pt), are described below. @@ -184,6 +184,13 @@ builds (does nothing in non-CUDA builds): NOTE: Setting `rdc` also currently adds the `nvcc_wrapper` option `--remove-duplicate-link-files` as well. + + +**``:** The following `` keyword will result in `-fPIC` +being added to `CMAKE_CXX_FLAGS`: + +* `fpic`: Add `-fPIC` to `CMAKE_CXX_FLAGS` + **``:** The following `` keywords determine if support diff --git a/cmake/std/atdm/utils/set_build_options.sh b/cmake/std/atdm/utils/set_build_options.sh index 3312f156a7..56a135771d 100644 --- a/cmake/std/atdm/utils/set_build_options.sh +++ b/cmake/std/atdm/utils/set_build_options.sh @@ -18,6 +18,7 @@ # ATDM_CONFIG_USE_CUDA # ATDM_CONFIG_USE_PTHREADS # ATDM_CONFIG_CUDA_RDC +# ATDM_CONFIG_FPIC # ATDM_CONFIG_COMPLEX # ATDM_CONFIG_SHARED_LIBS # ATDM_CONFIG_PT_PACKAGES @@ -53,7 +54,7 @@ fi ATDM_UTILS_SCRIPT_DIR=`echo $BASH_SOURCE | sed "s/\(.*\)\/.*\.sh/\1/g"` export ATDM_CONFIG_SCRIPT_DIR=`readlink -f ${ATDM_UTILS_SCRIPT_DIR}/..` -echo "Setting compiler and build options for buld name '${ATDM_CONFIG_BUILD_NAME}'" +echo "Setting compiler and build options for build-name '${ATDM_CONFIG_BUILD_NAME}'" # Set the defaults export ATDM_CONFIG_COMPILER=DEFAULT @@ -249,6 +250,13 @@ elif [[ $ATDM_CONFIG_BUILD_NAME == *"-rdc"* ]] \ export ATDM_CONFIG_CUDA_RDC=ON fi +# Use -fPIC or not +export ATDM_CONFIG_FPIC=OFF +if [[ $ATDM_CONFIG_BUILD_NAME == *"-fpic"* ]] \ + || [[ $ATDM_CONFIG_BUILD_NAME == *"_fpic"* ]]; then + export ATDM_CONFIG_FPIC=ON +fi + # Enable complex (double) data-types or not export ATDM_CONFIG_COMPLEX=OFF if [[ $ATDM_CONFIG_BUILD_NAME == *"no-complex"* ]]; then diff --git a/cmake/std/atdm/utils/unset_atdm_config_vars_build_options.sh b/cmake/std/atdm/utils/unset_atdm_config_vars_build_options.sh index bc27226d97..2433039ae5 100644 --- a/cmake/std/atdm/utils/unset_atdm_config_vars_build_options.sh +++ b/cmake/std/atdm/utils/unset_atdm_config_vars_build_options.sh @@ -11,6 +11,7 @@ unset ATDM_CONFIG_USE_OPENMP unset ATDM_CONFIG_USE_CUDA unset ATDM_CONFIG_USE_PTHREADS unset ATDM_CONFIG_CUDA_RDC +unset ATDM_CONFIG_FPIC unset ATDM_CONFIG_COMPLEX unset ATDM_CONFIG_SHARED_LIBS unset ATDM_CONFIG_PT_PACKAGES -- GitLab From a57c09cfe24329839f61e21ad24a33a5ba15f4eb Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 6 May 2019 19:36:53 -0600 Subject: [PATCH 2/2] Add driver for waterman_cuda-9.2_fpic_static_opt testing and installs for SPARC (ATDV-151) --- .../Trilinos-atdm-waterman_cuda-9.2_fpic_static_opt.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 cmake/ctest/drivers/atdm/waterman/drivers/Trilinos-atdm-waterman_cuda-9.2_fpic_static_opt.sh diff --git a/cmake/ctest/drivers/atdm/waterman/drivers/Trilinos-atdm-waterman_cuda-9.2_fpic_static_opt.sh b/cmake/ctest/drivers/atdm/waterman/drivers/Trilinos-atdm-waterman_cuda-9.2_fpic_static_opt.sh new file mode 100755 index 0000000000..28808bd626 --- /dev/null +++ b/cmake/ctest/drivers/atdm/waterman/drivers/Trilinos-atdm-waterman_cuda-9.2_fpic_static_opt.sh @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "${Trilinos_TRACK}" == "" ] ; then + export Trilinos_TRACK=Specialized +fi +$WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/waterman/local-driver.sh -- GitLab