Merge 'master' into 'amd-master'

Change-Id: Id400e2e3c0fa393ca934634dee46496aca8ade21


[ROCm/hip commit: a827869a4a]
This commit is contained in:
Jenkins
2017-08-01 04:11:20 -05:00
2 changed files with 78 additions and 54 deletions
+2 -1
View File
@@ -59,7 +59,8 @@ HIP source code is available and the project can be built from source on the HCC
1. Follow the above steps to install and validate the binary packages.
2. Download HIP source code (from the [GitHub repot](https://github.com/ROCm-Developer-Tools/HIP).)
3. Build and install HIP (This is the simple version assuming default paths ; see below for additional options.)
3. Install HIP build-time dependencies using ```sudo apt-get install libelf-dev```.
4. Build and install HIP (This is the simple version assuming default paths ; see below for additional options.)
```
cd HIP
mkdir build
+76 -53
View File
@@ -75,6 +75,7 @@ $target_gfx801 = 0;
$target_gfx802 = 0;
$target_gfx803 = 0;
$target_gfx900 = 0;
$default_amdgpu_target = 1;
if ($HIP_PLATFORM eq "hcc") {
$HSA_PATH=$ENV{'HSA_PATH'} // "/opt/rocm/hsa";
@@ -103,29 +104,6 @@ if ($HIP_PLATFORM eq "hcc") {
$HIPLDFLAGS = `${HCC_HOME}/bin/hcc-config --ldflags`;
$ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator";
my $myAgents = `${ROCM_AGENT_ENUM} -t GPU`;
my @agentsLine = split('\n', $myAgents);
foreach my $val (@agentsLine) {
if($val eq "gfx701") {
$target_gfx701 = 1;
}
if($val eq "gfx801") {
$target_gfx801 = 1;
}
if($val eq "gfx802") {
$target_gfx802 = 1;
}
if($val eq "gfx803") {
$target_gfx803 = 1;
}
if($val eq "gfx900") {
$target_gfx900 = 1;
}
}
#### GCC system includes workaround ####
$HCC_WA_FLAGS = " ";
if ($HCC_VERSION_MAJOR eq 1) {
@@ -278,25 +256,32 @@ foreach $arg (@ARGV)
$HIPCXXFLAGS .= " -stdlib=libc++";
$setStdLib = 1;
}
# TODO: Add support for comma separated list like HCC_AMDGPU_TARGET
if($arg eq '--amdgpu-target=gfx701')
{
$target_gfx701 = 1;
$default_amdgpu_target = 0;
}
if($arg eq '--amdgpu-target=gfx801')
{
$target_gfx801 = 1;
$default_amdgpu_target = 0;
}
if($arg eq '--amdgpu-target=gfx802')
{
$target_gfx802 = 1;
$default_amdgpu_target = 0;
}
if($arg eq '--amdgpu-target=gfx803')
{
$target_gfx803 = 1;
$default_amdgpu_target = 0;
}
if($arg eq '--amdgpu-target=gfx900')
{
$target_gfx900 = 1;
$default_amdgpu_target = 0;
}
if(($trimarg eq '-stdlib=libstdc++') and ($setStdLib eq 0))
@@ -358,38 +343,76 @@ foreach $arg (@ARGV)
}
$toolArgs .= " $arg" unless $swallowArg;
}
if(defined $ENV{HCC_AMDGPU_TARGET})
{
foreach my $target (split(/,/, $ENV{HCC_AMDGPU_TARGET}))
{
if($target eq 'gfx701')
{
$target_gfx701 = 1;
}
if($target eq 'gfx801')
{
$target_gfx801 = 1;
}
if($target eq 'gfx802')
{
$target_gfx802 = 1;
}
if($target eq 'gfx803')
{
$target_gfx803 = 1;
}
if($target eq 'gfx900')
{
$target_gfx900 = 1;
}
}
}
if ($target_gfx701 eq 0 and $target_gfx801 eq 0 and $target_gfx802 eq 0 and $target_gfx803 eq 0 and $target_gfx900 eq 0)
{
$target_gfx803 = 1;
}
if($HIP_PLATFORM eq "hcc"){
# No AMDGPU target specified at commandline. So look for HCC_AMDGPU_TARGET
if($default_amdgpu_target eq 1 and defined $ENV{HCC_AMDGPU_TARGET})
{
foreach my $target (split(/,/, $ENV{HCC_AMDGPU_TARGET}))
{
if($target eq 'gfx701')
{
$target_gfx701 = 1;
$default_amdgpu_target = 0;
}
if($target eq 'gfx801')
{
$target_gfx801 = 1;
$default_amdgpu_target = 0;
}
if($target eq 'gfx802')
{
$target_gfx802 = 1;
$default_amdgpu_target = 0;
}
if($target eq 'gfx803')
{
$target_gfx803 = 1;
$default_amdgpu_target = 0;
}
if($target eq 'gfx900')
{
$target_gfx900 = 1;
$default_amdgpu_target = 0;
}
}
}
# Else try using rocm_agent_enumerator
if($default_amdgpu_target eq 1)
{
$ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator";
my $myAgents = `${ROCM_AGENT_ENUM} -t GPU`;
my @agentsLine = split('\n', $myAgents);
foreach my $val (@agentsLine) {
if($val eq "gfx701") {
$target_gfx701 = 1;
$default_amdgpu_target = 0;
}
if($val eq "gfx801") {
$target_gfx801 = 1;
$default_amdgpu_target = 0;
}
if($val eq "gfx802") {
$target_gfx802 = 1;
$default_amdgpu_target = 0;
}
if($val eq "gfx803") {
$target_gfx803 = 1;
$default_amdgpu_target = 0;
}
if($val eq "gfx900") {
$target_gfx900 = 1;
$default_amdgpu_target = 0;
}
}
}
# rocm_agent_enumerator failed! Throw an error and die if linking is required
if ($default_amdgpu_target eq 1 and $compileOnly eq 0)
{
print "No valid AMD GPU target was either specified or found. Please specify a valid target using --amdgpu-target=" and die();
}
$ENV{HCC_EXTRA_LIBRARIES}="$HIP_PATH/lib/hip_hc.ll\n";