From b98fcb776414b0c42912fba60b0644e20678e385 Mon Sep 17 00:00:00 2001 From: Aditya Atluri Date: Wed, 6 Apr 2016 14:18:51 -0500 Subject: [PATCH 1/2] Added feature for cross-compilation and seperated hcc api from hip api [ROCm/clr commit: 39f27984a8326574cf0126d4f2e6d1da0a8c391e] --- projects/clr/hipamd/bin/hipcc | 10 ++++++++-- projects/clr/hipamd/include/hcc.h | 8 ++++++++ .../clr/hipamd/include/hcc_detail/hcc_acc.h | 20 +++++++++++++++++++ .../include/hcc_detail/hip_runtime_api.h | 14 ------------- projects/clr/hipamd/tests/src/hipHcc.cpp | 2 +- 5 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 projects/clr/hipamd/include/hcc.h create mode 100644 projects/clr/hipamd/include/hcc_detail/hcc_acc.h diff --git a/projects/clr/hipamd/bin/hipcc b/projects/clr/hipamd/bin/hipcc index 289574d8e5..e4d203f685 100755 --- a/projects/clr/hipamd/bin/hipcc +++ b/projects/clr/hipamd/bin/hipcc @@ -40,7 +40,6 @@ $CODEXL_PATH = $ENV{'CODEXL_PATH'}; $CODEXL_PATH = "/opt/AMD/CodeXL" unless defined $CODEXL_PATH; $marker_path = "$CODEXL_PATH/SDK/AMDTActivityLogger"; - #--- #HIP_PLATFORM controls whether to use NVCC or HCC for compilation: $HIP_PLATFORM=$ENV{'HIP_PLATFORM'}; @@ -67,7 +66,7 @@ if ($HIP_PLATFORM eq "hcc") { # HCC* may be used to compile src/hip_hcc.o (and also feed the HIPCXXFLAGS below) $HCC = "$HCC_HOME/bin/hcc"; - $HCCFLAGS = " -hc -I$HCC_HOME/include -stdlib=libc++"; + $HCCFLAGS = " -hc -I$HCC_HOME/include "; $HIPCC=$HCC; $HIPCXXFLAGS = $HCCFLAGS; @@ -144,6 +143,13 @@ foreach $arg (@ARGV) $needLDFLAGS = 1; } + if($arg eq '-stdlib=libstdc++') + { + $HIPCXXFLAGS .= " -stdlib=libstdc++"; + }else + { + $HIPCXXFLAGS .= " -stdlib=libc++"; + } if ($arg =~ m/^-/) { # options start with - diff --git a/projects/clr/hipamd/include/hcc.h b/projects/clr/hipamd/include/hcc.h new file mode 100644 index 0000000000..9766e95935 --- /dev/null +++ b/projects/clr/hipamd/include/hcc.h @@ -0,0 +1,8 @@ +#ifndef HCC_H +#define HCC_H + +#if defined(__HIP_PLATFORM_HCC__) && !defined (__HIP_PLATFORM_NVCC__) +#include +#endif + +#endif diff --git a/projects/clr/hipamd/include/hcc_detail/hcc_acc.h b/projects/clr/hipamd/include/hcc_detail/hcc_acc.h new file mode 100644 index 0000000000..c66b340579 --- /dev/null +++ b/projects/clr/hipamd/include/hcc_detail/hcc_acc.h @@ -0,0 +1,20 @@ +#ifndef HCC_ACC_H +#define HCC_ACC_H +#include "hip_runtime_api.h" + +#if __cplusplus +#ifdef __HCC__ +#include +/** + * @brief Return hc::accelerator associated with the specified deviceId + */ +hipError_t hipHccGetAccelerator(int deviceId, hc::accelerator *acc); + +/** + * @brief Return hc::accelerator_view associated with the specified stream + */ +hipError_t hipHccGetAcceleratorView(hipStream_t stream, hc::accelerator_view **av); +#endif +#endif + +#endif diff --git a/projects/clr/hipamd/include/hcc_detail/hip_runtime_api.h b/projects/clr/hipamd/include/hcc_detail/hip_runtime_api.h index eecab9abc3..b5fdb312a4 100644 --- a/projects/clr/hipamd/include/hcc_detail/hip_runtime_api.h +++ b/projects/clr/hipamd/include/hcc_detail/hip_runtime_api.h @@ -1041,20 +1041,6 @@ hipError_t hipDriverGetVersion(int *driverVersion) ; * @endcode * */ -#if __cplusplus -#ifdef __HCC__ -#include -/** - * @brief Return hc::accelerator associated with the specified deviceId - */ -hipError_t hipHccGetAccelerator(int deviceId, hc::accelerator *acc); - -/** - * @brief Return hc::accelerator_view associated with the specified stream - */ -hipError_t hipHccGetAcceleratorView(hipStream_t stream, hc::accelerator_view **av); -#endif -#endif // end-group HCC_Specific /** diff --git a/projects/clr/hipamd/tests/src/hipHcc.cpp b/projects/clr/hipamd/tests/src/hipHcc.cpp index b3580db660..e3740fa27b 100644 --- a/projects/clr/hipamd/tests/src/hipHcc.cpp +++ b/projects/clr/hipamd/tests/src/hipHcc.cpp @@ -24,7 +24,7 @@ THE SOFTWARE. #include #include #include - +#include #include "test_common.h" #define CHECK(error) \ From 7f5a1e310f3f7a79e8a2c7206847b6ca5c137332 Mon Sep 17 00:00:00 2001 From: Aditya Atluri Date: Wed, 6 Apr 2016 14:50:27 -0500 Subject: [PATCH 2/2] Corrected corner cases [ROCm/clr commit: a7590e35377f55f5fd062d39f77062adb22d5490] --- projects/clr/hipamd/bin/hipcc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/projects/clr/hipamd/bin/hipcc b/projects/clr/hipamd/bin/hipcc index e4d203f685..14a6cfe2f2 100755 --- a/projects/clr/hipamd/bin/hipcc +++ b/projects/clr/hipamd/bin/hipcc @@ -55,7 +55,7 @@ if ($verbose & 0x2) { print ("CUDA_PATH=$CUDA_PATH\n"); } - +$enablestdcpplib = 0; if ($HIP_PLATFORM eq "hcc") { $HSA_PATH=$ENV{'HSA_PATH'}; @@ -143,12 +143,10 @@ foreach $arg (@ARGV) $needLDFLAGS = 1; } - if($arg eq '-stdlib=libstdc++') + if($arg eq '-stdlib=libstdc++' and $enablestdcpplib eq 0) { $HIPCXXFLAGS .= " -stdlib=libstdc++"; - }else - { - $HIPCXXFLAGS .= " -stdlib=libc++"; + $enablestdcpplib = 1; } if ($arg =~ m/^-/) { @@ -189,6 +187,11 @@ if ($hasCU and $HIP_PLATFORM eq 'hcc') { $HIPCXXFLAGS .= " -x c++"; } +if ($enablestdcpplib eq 0) +{ + $HIPCXXFLAGS .= " -stdlib=libc++"; +} + if ($needHipHcc) { $HIP_USE_SHARED_LIBRARY = $ENV{'HIP_USE_SHARED_LIBRARY'}; $HIP_USE_SHARED_LIBRARY = 0 unless defined $HIP_USE_SHARED_LIBRARY;