From 489cef167fdecee667596d5cecd71f4108436fce Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Fri, 1 Feb 2019 16:52:55 +0000 Subject: [PATCH 1/2] hipcc defaults to HIP-Clang if built with HIP-Clang Add HIP_COMPILER to hipConfig, so that HIP packages built with HIP_COMPILER for HIP-Clang will be known during runtime by hipcc. Also add default locations to check for llvm and device-libs. --- CMakeLists.txt | 1 + bin/hipcc | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3db80f9e7e..7a0d3e70dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ if(NOT (HIP_COMPILER STREQUAL "hcc" OR HIP_COMPILER STREQUAL "clang")) message(FATAL_ERROR "Must use HIP_COMPILER as hcc or clang") endif() message(STATUS "HIP Compiler: " ${HIP_COMPILER}) +add_to_config(_buildInfo HIP_COMPILER) # If HIP_PLATFORM is hcc, we need HCC_HOME and HSA_PATH to be defined diff --git a/bin/hipcc b/bin/hipcc index a717a0bf92..bc47287f4a 100755 --- a/bin/hipcc +++ b/bin/hipcc @@ -58,8 +58,8 @@ $HIPCC_LINK_FLAGS_APPEND=$ENV{'HIPCC_LINK_FLAGS_APPEND'}; $HIP_PATH=$ENV{'HIP_PATH'} // dirname (dirname $0); # use parent directory of hipcc $HIP_VDI_HOME=$ENV{'HIP_VDI_HOME'}; -$HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'}; -$DEVICE_LIB_PATH=$ENV{'DEVICE_LIB_PATH'}; +$HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'} // "/opt/rocm/llvm/bin"; +$DEVICE_LIB_PATH=$ENV{'DEVICE_LIB_PATH'} // "/opt/rocm/lib"; $HIP_CLANG_HCC_COMPAT_MODE=$ENV{'HIP_CLANG_HCC_COMPAT_MODE'}; # HCC compatibility mode #--- @@ -93,6 +93,7 @@ sub delete_temp_dirs { $HIP_PLATFORM= `$HIP_PATH/bin/hipconfig --platform` // "hcc"; $HIP_VERSION= `$HIP_PATH/bin/hipconfig --version`; ($HIP_VERSION_MAJOR, $HIP_VERSION_MINOR, $HIP_VERSION_PATCH) = split(/\./, $HIP_VERSION); +$HIP_COMPILER=$hipConfig{'HIP_COMPILER'}; if (defined $HIP_VDI_HOME) { my $bits = ""; @@ -110,7 +111,7 @@ if (defined $HIP_VDI_HOME) { $HIP_LIB_PATH = "$HIP_VDI_HOME/lib" . $bits; } -if (defined $HIP_CLANG_PATH) { +if ($HIP_COMPILER eq "clang") { $HIP_PLATFORM = "clang" } From 479d2d093fd5d7e8c0b0d9c50ca4e2f36a8751d1 Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Fri, 1 Feb 2019 19:44:26 +0000 Subject: [PATCH 2/2] Add HIP_RUNTIME for HCC or VDI --- CMakeLists.txt | 9 +++++++++ bin/hipcc | 20 ++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a0d3e70dc..c826c1a782 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,15 @@ endif() message(STATUS "HIP Compiler: " ${HIP_COMPILER}) add_to_config(_buildInfo HIP_COMPILER) +# Determine HIP_RUNTIME +# Either HCC or VDI; default is HCC +if(NOT DEFINED ENV{HIP_RUNTIME}) + set(HIP_RUNTIME "HCC" CACHE STRING "HIP Runtime") +else() + set(HIP_RUNTIME $ENV{HIP_RUNTIME} CACHE STRING "HIP Runtime") +endif() +add_to_config(_buildInfo HIP_RUNTIME) + # If HIP_PLATFORM is hcc, we need HCC_HOME and HSA_PATH to be defined if(HIP_PLATFORM STREQUAL "hcc") diff --git a/bin/hipcc b/bin/hipcc index bc47287f4a..6557a2e04f 100755 --- a/bin/hipcc +++ b/bin/hipcc @@ -58,8 +58,8 @@ $HIPCC_LINK_FLAGS_APPEND=$ENV{'HIPCC_LINK_FLAGS_APPEND'}; $HIP_PATH=$ENV{'HIP_PATH'} // dirname (dirname $0); # use parent directory of hipcc $HIP_VDI_HOME=$ENV{'HIP_VDI_HOME'}; -$HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'} // "/opt/rocm/llvm/bin"; -$DEVICE_LIB_PATH=$ENV{'DEVICE_LIB_PATH'} // "/opt/rocm/lib"; +$HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'}; +$DEVICE_LIB_PATH=$ENV{'DEVICE_LIB_PATH'}; $HIP_CLANG_HCC_COMPAT_MODE=$ENV{'HIP_CLANG_HCC_COMPAT_MODE'}; # HCC compatibility mode #--- @@ -93,7 +93,13 @@ sub delete_temp_dirs { $HIP_PLATFORM= `$HIP_PATH/bin/hipconfig --platform` // "hcc"; $HIP_VERSION= `$HIP_PATH/bin/hipconfig --version`; ($HIP_VERSION_MAJOR, $HIP_VERSION_MINOR, $HIP_VERSION_PATCH) = split(/\./, $HIP_VERSION); -$HIP_COMPILER=$hipConfig{'HIP_COMPILER'}; +$HIP_COMPILER= $hipConfig{'HIP_COMPILER'}; +$HIP_RUNTIME= $hipConfig{'HIP_RUNTIME'}; + +# If using VDI runtime, need to find HIP_VDI_HOME +if ($HIP_RUNTIME eq "VDI" and !defined $HIP_VDI_HOME) { + $HIP_VDI_HOME = "/opt/rocm/hip" +} if (defined $HIP_VDI_HOME) { my $bits = ""; @@ -112,7 +118,13 @@ if (defined $HIP_VDI_HOME) { } if ($HIP_COMPILER eq "clang") { - $HIP_PLATFORM = "clang" + $HIP_PLATFORM = "clang"; + if (!defined $HIP_CLANG_PATH) { + $HIP_CLANG_PATH = "/opt/rocm/llvm/bin"; + } + if (!defined $DEVICE_LIB_PATH) { + $DEVICE_LIB_PATH = "/opt/rocm/lib"; + } } if ($verbose & 0x2) {