aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2019-07-03 19:33:57 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2019-07-05 16:26:21 +0000
commitd5462ff012b3398addb1140d5c52c65ea16a27a5 (patch)
tree223dc0da9a243d286d5d723bfc362a2c940ef976
parent37d080f2f11cfd734104b76512e1fb191486216e (diff)
downloadComputeLibrary-d5462ff012b3398addb1140d5c52c65ea16a27a5.tar.gz
COMPMID-2435: Update GPU target definitions
- Add Valhall architecture - Map GPU instances to the new architecture Change-Id: I5dd96b1425bded0e34eb59b56a0009bea947c386 Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Reviewed-on: https://review.mlplatform.org/c/1478 Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
-rw-r--r--arm_compute/core/GPUTarget.h8
-rw-r--r--src/core/GPUTarget.cpp61
-rw-r--r--tests/validation/UNIT/GPUTarget.cpp5
-rw-r--r--utils/TypePrinter.h10
4 files changed, 61 insertions, 23 deletions
diff --git a/arm_compute/core/GPUTarget.h b/arm_compute/core/GPUTarget.h
index a43df3d08e..2743b94bd5 100644
--- a/arm_compute/core/GPUTarget.h
+++ b/arm_compute/core/GPUTarget.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -37,6 +37,7 @@ enum class GPUTarget
GPU_ARCH_MASK = 0xF00,
MIDGARD = 0x100,
BIFROST = 0x200,
+ VALHALL = 0x300,
T600 = 0x110,
T700 = 0x120,
T800 = 0x130,
@@ -48,8 +49,9 @@ enum class GPUTarget
G52 = 0x240,
G52LIT = 0x241,
G76 = 0x250,
- TTRX = 0x260,
- TBOX = 0x270
+ G77 = 0x310,
+ TBOX = 0x320,
+ TODX = 0x330,
};
/** Enable bitwise operations on GPUTarget enumerations */
diff --git a/src/core/GPUTarget.cpp b/src/core/GPUTarget.cpp
index 78e2df1599..c1ba4dfa39 100644
--- a/src/core/GPUTarget.cpp
+++ b/src/core/GPUTarget.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -29,6 +29,26 @@
namespace
{
+arm_compute::GPUTarget get_valhall_target(const std::string &version)
+{
+ if(version == "G77")
+ {
+ return arm_compute::GPUTarget::G77;
+ }
+ else if(version == "TBOX")
+ {
+ return arm_compute::GPUTarget::TBOX;
+ }
+ else if(version == "TODX")
+ {
+ return arm_compute::GPUTarget::TODX;
+ }
+ else
+ {
+ return arm_compute::GPUTarget::VALHALL;
+ }
+}
+
arm_compute::GPUTarget get_bifrost_target(const std::string &version)
{
if(version == "G71")
@@ -63,17 +83,9 @@ arm_compute::GPUTarget get_bifrost_target(const std::string &version)
{
return arm_compute::GPUTarget::G76;
}
- else if(version == "TTRX")
- {
- return arm_compute::GPUTarget::TTRX;
- }
- else if(version == "TBOX")
- {
- return arm_compute::GPUTarget::TBOX;
- }
else
{
- return arm_compute::GPUTarget::BIFROST;
+ return arm_compute::GPUTarget::UNKNOWN;
}
}
@@ -106,6 +118,7 @@ const std::string &string_from_target(GPUTarget target)
{
{ GPUTarget::MIDGARD, "midgard" },
{ GPUTarget::BIFROST, "bifrost" },
+ { GPUTarget::VALHALL, "valhall" },
{ GPUTarget::T600, "t600" },
{ GPUTarget::T700, "t700" },
{ GPUTarget::T800, "t800" },
@@ -117,8 +130,9 @@ const std::string &string_from_target(GPUTarget target)
{ GPUTarget::G52, "g52" },
{ GPUTarget::G52LIT, "g52lit" },
{ GPUTarget::G76, "g76" },
- { GPUTarget::TTRX, "ttrx" },
- { GPUTarget::TBOX, "tbox" }
+ { GPUTarget::G77, "g77" },
+ { GPUTarget::TBOX, "tbox" },
+ { GPUTarget::TODX, "todx" }
};
return gpu_target_map[target];
@@ -140,21 +154,36 @@ GPUTarget get_target_from_name(const std::string &device_name)
const std::string &version = name_parts.str(1);
std::regex future_regex(R"(.*X)");
- const bool is_future_bifrost = std::regex_search(version, future_regex);
+ const bool is_future_gpu = std::regex_search(version, future_regex);
- if(target == 'G' || is_future_bifrost)
+ // Work-out gpu target
+ GPUTarget gpu_target;
+ if(target == 'G' || is_future_gpu)
{
- return get_bifrost_target(version);
+ // Check for Bifrost or Valhall
+ gpu_target = get_bifrost_target(version);
+ if(gpu_target == GPUTarget::UNKNOWN)
+ {
+ gpu_target = get_valhall_target(version);
+ }
}
else if(target == 'T')
{
- return get_midgard_target(version);
+ gpu_target = get_midgard_target(version);
}
else
{
+ gpu_target = GPUTarget::UNKNOWN;
+ }
+
+ // Report in case of unknown target
+ if(gpu_target == GPUTarget::UNKNOWN)
+ {
ARM_COMPUTE_LOG_INFO_MSG_CORE("Mali GPU unknown. Target is set to the default one. (BIFROST)");
return GPUTarget::BIFROST;
}
+
+ return gpu_target;
}
GPUTarget get_arch_from_target(GPUTarget target)
diff --git a/tests/validation/UNIT/GPUTarget.cpp b/tests/validation/UNIT/GPUTarget.cpp
index 39253c3e16..47166bf9d8 100644
--- a/tests/validation/UNIT/GPUTarget.cpp
+++ b/tests/validation/UNIT/GPUTarget.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -50,8 +50,9 @@ TEST_CASE(GetGPUTargetFromName, framework::DatasetMode::ALL)
ARM_COMPUTE_EXPECT(get_target_from_name("Mali-G52") == GPUTarget::G52, framework::LogLevel::ERRORS);
ARM_COMPUTE_EXPECT(get_target_from_name("Mali-G52LIT") == GPUTarget::G52LIT, framework::LogLevel::ERRORS);
ARM_COMPUTE_EXPECT(get_target_from_name("Mali-G76") == GPUTarget::G76, framework::LogLevel::ERRORS);
- ARM_COMPUTE_EXPECT(get_target_from_name("Mali-TTRX") == GPUTarget::TTRX, framework::LogLevel::ERRORS);
+ ARM_COMPUTE_EXPECT(get_target_from_name("Mali-G77") == GPUTarget::G77, framework::LogLevel::ERRORS);
ARM_COMPUTE_EXPECT(get_target_from_name("Mali-TBOX") == GPUTarget::TBOX, framework::LogLevel::ERRORS);
+ ARM_COMPUTE_EXPECT(get_target_from_name("Mali-TODX") == GPUTarget::TODX, framework::LogLevel::ERRORS);
ARM_COMPUTE_EXPECT(get_target_from_name("Mali-T000") == GPUTarget::MIDGARD, framework::LogLevel::ERRORS);
}
diff --git a/utils/TypePrinter.h b/utils/TypePrinter.h
index 1f60537c2a..6ba6f45f8c 100644
--- a/utils/TypePrinter.h
+++ b/utils/TypePrinter.h
@@ -1902,6 +1902,9 @@ inline ::std::ostream &operator<<(::std::ostream &os, const GPUTarget &gpu_targe
case GPUTarget::BIFROST:
os << "BIFROST";
break;
+ case GPUTarget::VALHALL:
+ os << "VALHALL";
+ break;
case GPUTarget::T600:
os << "T600";
break;
@@ -1929,12 +1932,15 @@ inline ::std::ostream &operator<<(::std::ostream &os, const GPUTarget &gpu_targe
case GPUTarget::G76:
os << "G76";
break;
- case GPUTarget::TTRX:
- os << "TTRX";
+ case GPUTarget::G77:
+ os << "G77";
break;
case GPUTarget::TBOX:
os << "TBOX";
break;
+ case GPUTarget::TODX:
+ os << "TODX";
+ break;
default:
ARM_COMPUTE_ERROR("NOT_SUPPORTED!");
}