diff --git a/projects/clr/hipamd/bin/hipcc b/projects/clr/hipamd/bin/hipcc index 32f1411a77..ac52b1fde3 100755 --- a/projects/clr/hipamd/bin/hipcc +++ b/projects/clr/hipamd/bin/hipcc @@ -54,8 +54,6 @@ if(scalar @ARGV == 0){ $verbose = $ENV{'HIPCC_VERBOSE'} // 0; # Verbose: 0x1=commands, 0x2=paths, 0x4=hipcc args -$isWindows = $^O eq 'MSWin32'; - $HIPCC_COMPILE_FLAGS_APPEND=$ENV{'HIPCC_COMPILE_FLAGS_APPEND'}; $HIPCC_LINK_FLAGS_APPEND=$ENV{'HIPCC_LINK_FLAGS_APPEND'}; @@ -100,6 +98,7 @@ BEGIN { use lib "$base_dir/"; use hipvars; +$isWindows = $hipvars::isWindows; $HIP_RUNTIME = $hipvars::HIP_RUNTIME; $HIP_PLATFORM = $hipvars::HIP_PLATFORM; $HIP_COMPILER = $hipvars::HIP_COMPILER; @@ -147,11 +146,11 @@ $setStdLib = 0; # TODO - set to 0 $default_amdgpu_target = 1; if ($HIP_PLATFORM eq "amd") { - $HIPCC="$HIP_CLANG_PATH/clang++"; + $HIPCC="\"$HIP_CLANG_PATH/clang++\""; # If $HIPCC clang++ is not compiled, use clang instead if ( ! -e $HIPCC ) { - $HIPCC="$HIP_CLANG_PATH/clang"; + $HIPCC="\"$HIP_CLANG_PATH/clang\""; $HIPLDFLAGS = "--driver-mode=g++"; } @@ -185,9 +184,9 @@ if ($HIP_PLATFORM eq "amd") { } else { $HIPCXXFLAGS .= " -std=c++11"; } - $HIPCXXFLAGS .= " -isystem $HIP_CLANG_INCLUDE_PATH/.."; - $HIPCFLAGS .= " -isystem $HIP_CLANG_INCLUDE_PATH/.."; - $HIPLDFLAGS .= " -L$HIP_LIB_PATH"; + $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; + $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; + $HIPLDFLAGS .= " -L\"$HIP_LIB_PATH\""; if ($isWindows) { $HIPLDFLAGS .= " -lamdhip64"; } @@ -196,9 +195,11 @@ if ($HIP_PLATFORM eq "amd") { $HIPCXXFLAGS .= " -Xclang -fallow-half-arguments-and-returns -D__HIP_HCC_COMPAT_MODE__=1"; } - $HSA_PATH=$ENV{'HSA_PATH'} // "$ROCM_PATH/hsa"; - $HIPCXXFLAGS .= " -isystem $HSA_PATH/include"; - $HIPCFLAGS .= " -isystem $HSA_PATH/include"; + if (not $isWindows) { + $HSA_PATH=$ENV{'HSA_PATH'} // "$ROCM_PATH/hsa"; + $HIPCXXFLAGS .= " -isystem $HSA_PATH/include"; + $HIPCFLAGS .= " -isystem $HSA_PATH/include"; + } } elsif ($HIP_PLATFORM eq "nvidia") { $CUDA_PATH=$ENV{'CUDA_PATH'} // '/usr/local/cuda'; @@ -220,8 +221,8 @@ if ($HIP_PLATFORM eq "amd") { } # Add paths to common HIP includes: -$HIPCXXFLAGS .= " -isystem $HIP_INCLUDE_PATH" ; -$HIPCFLAGS .= " -isystem $HIP_INCLUDE_PATH" ; +$HIPCXXFLAGS .= " -isystem \"$HIP_INCLUDE_PATH\"" ; +$HIPCFLAGS .= " -isystem \"$HIP_INCLUDE_PATH\"" ; my $compileOnly = 0; my $needCXXFLAGS = 0; # need to add CXX flags to compile step @@ -585,7 +586,7 @@ if($HIP_PLATFORM eq "amd"){ if($default_amdgpu_target eq 1) { if (defined $ENV{HCC_AMDGPU_TARGET}) { $targetsStr = $ENV{HCC_AMDGPU_TARGET}; - } else { + } elsif (not $isWindows) { # Else try using rocm_agent_enumerator $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator"; $targetsStr = `${ROCM_AGENT_ENUM} -t GPU`; diff --git a/projects/clr/hipamd/bin/hipconfig b/projects/clr/hipamd/bin/hipconfig index 2e75fd7706..88b657e21f 100755 --- a/projects/clr/hipamd/bin/hipconfig +++ b/projects/clr/hipamd/bin/hipconfig @@ -17,6 +17,7 @@ BEGIN { use lib "$base_dir/"; use hipvars; +$isWindows = $hipvars::isWindows; $HIP_RUNTIME = $hipvars::HIP_RUNTIME; $HIP_PLATFORM = $hipvars::HIP_PLATFORM; $HIP_COMPILER = $hipvars::HIP_COMPILER; @@ -44,13 +45,17 @@ GetOptions( ); if ($HIP_COMPILER eq "clang") { - $HIP_CLANG_VERSION = `$HIP_CLANG_PATH/clang++ --version`; + $HIP_CLANG_VERSION = `\"$HIP_CLANG_PATH/clang++\" --version`; $HIP_CLANG_VERSION=~/.*clang version (\S+).*/; $HIP_CLANG_VERSION=$1; - $CPP_CONFIG = " -D__HIP_PLATFORM_HCC__= -D__HIP_PLATFORM_AMD__= -I$HIP_PATH/include -I$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION -I$HSA_PATH/include"; -} + $CPP_CONFIG = " -D__HIP_PLATFORM_HCC__= -D__HIP_PLATFORM_AMD__= -I\"$HIP_PATH/include\" -I\"$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION\""; + # HIP on Windows does not need HSA_PATH + if (not $isWindows) { + $CPP_CONFIG .= " -I$HSA_PATH/include"; + } +} if ($HIP_PLATFORM eq "nvidia") { $CPP_CONFIG = " -D__HIP_PLATFORM_NVCC__= -D__HIP_PLATFORM_NVIDIA__= -I$HIP_PATH/include -I$CUDA_PATH/include"; }; @@ -129,16 +134,27 @@ if (!$printed or $p_full) { if ($HIP_COMPILER eq "clang") { print "== hip-clang\n"; - print ("HSA_PATH : $HSA_PATH\n"); + if (not $isWindows) { + print ("HSA_PATH : $HSA_PATH\n"); + } print ("HIP_CLANG_PATH : $HIP_CLANG_PATH\n"); - system("$HIP_CLANG_PATH/clang++ --version"); - system("$HIP_CLANG_PATH/llc --version"); - print ("hip-clang-cxxflags : "); - system("$HIP_PATH/bin/hipcc --cxxflags"); - printf("\n"); - print ("hip-clang-ldflags : "); - system("$HIP_PATH/bin/hipcc --ldflags"); - printf("\n"); + system("\"$HIP_CLANG_PATH/clang++\" --version"); + system("\"$HIP_CLANG_PATH/llc\" --version"); + if ($isWindows) { + printf("hip-clang-cxxflags : "); + $win_output = `perl \"$HIP_PATH/bin/hipcc\" --cxxflags`; + printf("$win_output \n"); + printf("hip-clang-ldflags : "); + $win_output = `perl \"$HIP_PATH/bin/hipcc\" --ldflags`; + printf("$win_output \n"); + } else { + print ("hip-clang-cxxflags : "); + system("$HIP_PATH/bin/hipcc --cxxflags"); + printf("\n"); + print ("hip-clang-ldflags : "); + system("$HIP_PATH/bin/hipcc --ldflags"); + printf("\n"); + } } else { print ("Unexpected HIP_COMPILER: $HIP_COMPILER\n"); } @@ -153,14 +169,25 @@ if (!$printed or $p_full) { print "\n" ; print "=== Environment Variables\n"; - system("echo PATH=\$PATH"); - system("env | egrep '^HIP|^HSA|^CUDA|^LD_LIBRARY_PATH'"); + if ($isWindows) { + print ("PATH=$ENV{PATH}\n"); + system("set | findstr /B /C:\"HIP\" /C:\"HSA\" /C:\"CUDA\" /C:\"LD_LIBRARY_PATH\""); + } else { + system("echo PATH=\$PATH"); + system("env | egrep '^HIP|^HSA|^CUDA|^LD_LIBRARY_PATH'"); + } print "\n" ; - print "== Linux Kernel\n"; - print "Hostname : "; system ("hostname"); - system ("uname -a"); + if ($isWindows) { + print "== Windows Display Drivers\n"; + print "Hostname : "; system ("hostname"); + system ("wmic path win32_VideoController get AdapterCompatibility,InstalledDisplayDrivers,Name | findstr /B /C:\"Advanced Micro Devices\""); + } else { + print "== Linux Kernel\n"; + print "Hostname : "; system ("hostname"); + system ("uname -a"); + } if (-e "/usr/bin/lsb_release") { system ("/usr/bin/lsb_release -a"); diff --git a/projects/clr/hipamd/bin/hipvars.pm b/projects/clr/hipamd/bin/hipvars.pm index 5ab99909eb..b919f16232 100644 --- a/projects/clr/hipamd/bin/hipvars.pm +++ b/projects/clr/hipamd/bin/hipvars.pm @@ -38,6 +38,8 @@ sub can_run { } } +$isWindows = $^O eq 'MSWin32'; + # # TODO: Fix rpath LDFLAGS settings # @@ -57,7 +59,13 @@ if (-e "$HIP_PATH/../bin/rocm_agent_enumerator") { } $CUDA_PATH=$ENV{'CUDA_PATH'} // '/usr/local/cuda'; $HSA_PATH=$ENV{'HSA_PATH'} // "$ROCM_PATH/hsa"; -$HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'} // "$ROCM_PATH/llvm/bin"; + +# Windows has a different structure, all binaries are inside hip/bin +if ($isWindows) { + $HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'} // "$HIP_PATH/bin"; +} else { + $HIP_CLANG_PATH=$ENV{'HIP_CLANG_PATH'} // "$ROCM_PATH/llvm/bin"; +} # HIP_ROCCLR_HOME is used by Windows builds $HIP_ROCCLR_HOME=$ENV{'HIP_ROCCLR_HOME'}; @@ -80,7 +88,7 @@ $HIP_RUNTIME = $ENV{'HIP_RUNTIME'} // $hipInfo{'HIP_RUNTIME'} // "rocclr"; if (defined $HIP_RUNTIME and $HIP_RUNTIME eq "rocclr" and !defined $HIP_ROCCLR_HOME) { my $hipvars_dir = dirname($0); if (-e "$hipvars_dir/../lib/bitcode") { - $HIP_ROCCLR_HOME = abs_path($hipvars_dir . "/.."); + $HIP_ROCCLR_HOME = Cwd::abs_path($hipvars_dir . "/.."); } else { $HIP_ROCCLR_HOME = $HIP_PATH; # use HIP_PATH } @@ -113,4 +121,4 @@ parse_config_file("$hipvars::HIP_PATH/bin/.hipVersion", \%hipVersion); $HIP_VERSION_MAJOR = $hipVersion{'HIP_VERSION_MAJOR'} // $HIP_BASE_VERSION_MAJOR; $HIP_VERSION_MINOR = $hipVersion{'HIP_VERSION_MINOR'} // $HIP_BASE_VERSION_MINOR; $HIP_VERSION_PATCH = $hipVersion{'HIP_VERSION_PATCH'} // "0"; -$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH"; \ No newline at end of file +$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH";