From 728f1f4c954fec1b50509a8c78d1c71a030bbb9a Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Fri, 8 Sep 2017 11:46:10 -0400 Subject: [PATCH 1/5] [CentOS7] Fix HIP sample hipInfo and other tests Cent OS 7 has conflicts between its libc++ and libstdc++. Seems that we cannot use libstdc++ on Cent OS. This is related to SWDEV-131972 [ROCm CQE][Cent OS 7][G] Building any HIP sample giving an fatal error: 'bits/c++config.h'. --- hipamd/bin/hipcc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hipamd/bin/hipcc b/hipamd/bin/hipcc index 624777ab25..5869eeda0d 100755 --- a/hipamd/bin/hipcc +++ b/hipamd/bin/hipcc @@ -106,6 +106,7 @@ if ($HIP_PLATFORM eq "hcc") { #### GCC system includes workaround #### $HCC_WA_FLAGS = " "; + $HOST_OSNAME= `cat /etc/os-release | grep "^ID\=" | cut -d= -f2 | tr -d '\n'`; if ($HCC_VERSION_MAJOR eq 1) { my $GCC_CUR_VER = `gcc -dumpversion`; my $GPP_CUR_VER = `g++ -dumpversion`; @@ -116,7 +117,8 @@ if ($HIP_PLATFORM eq "hcc") { # Only include the libstdc++ headers and libraries flags explicitly if the g++ is older than version 5. # That's because HCC already uses libstdc++ by default if a newer g++/libstdc++ is available - if (${GCC_CUR_VER} eq ${GPP_CUR_VER} and $GPP_VER_FIELDS[0] < 5) { + # Cent OS 7 cannot use libstdc++ for compilation, defaults to libc++ + if (${GCC_CUR_VER} eq ${GPP_CUR_VER} and $GPP_VER_FIELDS[0] < 5 and ($HOST_OSNAME ne "\"centos\"")) { $HCC_WA_FLAGS .= " -stdlib=libstdc++ -I/usr/include/x86_64-linux-gnu -I/usr/include/x86_64-linux-gnu/c++/${GCC_CUR_VER} -I/usr/include/c++/${GCC_CUR_VER} "; # Add C++ libs for GCC. $HIPLDFLAGS .= " -lstdc++"; @@ -124,7 +126,6 @@ if ($HIP_PLATFORM eq "hcc") { } # Force -stdlib=libc++ on UB14.04 - $HOST_OSNAME= `cat /etc/os-release | grep "^ID\=" | cut -d= -f2 | tr -d '\n'`; $HOST_OSVER= `cat /etc/os-release | grep "^VERSION_ID\=" | cut -d= -f2 | tr -d '\n'`; if ($HOST_OSNAME eq "ubuntu" and $HOST_OSVER eq "\"14.04\"") { $HIPCXXFLAGS .= " -stdlib=libc++"; From f7a2c019c63bd04d65b106165948fcee82061761 Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Tue, 12 Sep 2017 16:59:43 -0400 Subject: [PATCH 2/5] Must explicitly add libc++ and libc++abi --- hipamd/bin/hipcc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hipamd/bin/hipcc b/hipamd/bin/hipcc index 5869eeda0d..d9aee09693 100755 --- a/hipamd/bin/hipcc +++ b/hipamd/bin/hipcc @@ -131,6 +131,11 @@ if ($HIP_PLATFORM eq "hcc") { $HIPCXXFLAGS .= " -stdlib=libc++"; $setStdLib = 1; } + if ($HOST_OSNAME eq "\"centos\"" and $HOST_OSVER eq "\"7\"") { + $HIPCXXFLAGS .= " -stdlib=libc++"; + $HIPLDFLAGS .= " -lc++ -lc++abi"; + $setStdLib = 1; + } $HIPCXXFLAGS .= " -I$HIP_PATH/include/hip/hcc_detail/cuda"; $HIPCXXFLAGS .= " -I$HSA_PATH/include"; From 4f7972b0eedf3c03af21c396fccdc29e06a0f6d0 Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Tue, 12 Sep 2017 17:50:44 -0400 Subject: [PATCH 3/5] Update hipcc --- hipamd/bin/hipcc | 1 + 1 file changed, 1 insertion(+) diff --git a/hipamd/bin/hipcc b/hipamd/bin/hipcc index d9aee09693..30ed8145bd 100755 --- a/hipamd/bin/hipcc +++ b/hipamd/bin/hipcc @@ -131,6 +131,7 @@ if ($HIP_PLATFORM eq "hcc") { $HIPCXXFLAGS .= " -stdlib=libc++"; $setStdLib = 1; } + # Force -stdlib=libc++ on Cent OS 7 if ($HOST_OSNAME eq "\"centos\"" and $HOST_OSVER eq "\"7\"") { $HIPCXXFLAGS .= " -stdlib=libc++"; $HIPLDFLAGS .= " -lc++ -lc++abi"; From bfff9bf00518132d54bab5035630cd6dc9c1f0ca Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Wed, 13 Sep 2017 14:21:43 -0400 Subject: [PATCH 4/5] Added support for RHEL 7.4 --- hipamd/bin/hipcc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hipamd/bin/hipcc b/hipamd/bin/hipcc index 30ed8145bd..19c957757c 100755 --- a/hipamd/bin/hipcc +++ b/hipamd/bin/hipcc @@ -117,8 +117,8 @@ if ($HIP_PLATFORM eq "hcc") { # Only include the libstdc++ headers and libraries flags explicitly if the g++ is older than version 5. # That's because HCC already uses libstdc++ by default if a newer g++/libstdc++ is available - # Cent OS 7 cannot use libstdc++ for compilation, defaults to libc++ - if (${GCC_CUR_VER} eq ${GPP_CUR_VER} and $GPP_VER_FIELDS[0] < 5 and ($HOST_OSNAME ne "\"centos\"")) { + # Cent OS 7 and RHEL 7.4 cannot use libstdc++ for compilation, default to libc++ + if (${GCC_CUR_VER} eq ${GPP_CUR_VER} and $GPP_VER_FIELDS[0] < 5 and ($HOST_OSNAME ne "\"centos\"") and ($HOST_OSNAME ne "\"rhel\"")) { $HCC_WA_FLAGS .= " -stdlib=libstdc++ -I/usr/include/x86_64-linux-gnu -I/usr/include/x86_64-linux-gnu/c++/${GCC_CUR_VER} -I/usr/include/c++/${GCC_CUR_VER} "; # Add C++ libs for GCC. $HIPLDFLAGS .= " -lstdc++"; @@ -131,8 +131,8 @@ if ($HIP_PLATFORM eq "hcc") { $HIPCXXFLAGS .= " -stdlib=libc++"; $setStdLib = 1; } - # Force -stdlib=libc++ on Cent OS 7 - if ($HOST_OSNAME eq "\"centos\"" and $HOST_OSVER eq "\"7\"") { + # Force -stdlib=libc++ on Cent OS 7 and RHEL 7.4 + if (($HOST_OSNAME eq "\"centos\"" and $HOST_OSVER eq "\"7\"") or ($HOST_OSNAME eq "\"rhel\"" and $HOST_OSVER eq "\"7.4\"")) { $HIPCXXFLAGS .= " -stdlib=libc++"; $HIPLDFLAGS .= " -lc++ -lc++abi"; $setStdLib = 1; From de8c59ed00990bbad4d0446ffac1b0028f8e6566 Mon Sep 17 00:00:00 2001 From: Aaron Enye Shi Date: Thu, 14 Sep 2017 10:55:38 -0400 Subject: [PATCH 5/5] hcc-config already sets -lc++ -lc++abi flags Since hcc-config will set the flags for CentOS7 and RHEL 7.X, we don't need to set flags here. --- hipamd/bin/hipcc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hipamd/bin/hipcc b/hipamd/bin/hipcc index 19c957757c..8f18ab0d8e 100755 --- a/hipamd/bin/hipcc +++ b/hipamd/bin/hipcc @@ -131,12 +131,6 @@ if ($HIP_PLATFORM eq "hcc") { $HIPCXXFLAGS .= " -stdlib=libc++"; $setStdLib = 1; } - # Force -stdlib=libc++ on Cent OS 7 and RHEL 7.4 - if (($HOST_OSNAME eq "\"centos\"" and $HOST_OSVER eq "\"7\"") or ($HOST_OSNAME eq "\"rhel\"" and $HOST_OSVER eq "\"7.4\"")) { - $HIPCXXFLAGS .= " -stdlib=libc++"; - $HIPLDFLAGS .= " -lc++ -lc++abi"; - $setStdLib = 1; - } $HIPCXXFLAGS .= " -I$HIP_PATH/include/hip/hcc_detail/cuda"; $HIPCXXFLAGS .= " -I$HSA_PATH/include";