From d5462ff012b3398addb1140d5c52c65ea16a27a5 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Wed, 3 Jul 2019 19:33:57 +0100 Subject: COMPMID-2435: Update GPU target definitions - Add Valhall architecture - Map GPU instances to the new architecture Change-Id: I5dd96b1425bded0e34eb59b56a0009bea947c386 Signed-off-by: Georgios Pinitas Reviewed-on: https://review.mlplatform.org/c/1478 Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins --- arm_compute/core/GPUTarget.h | 8 +++-- src/core/GPUTarget.cpp | 61 +++++++++++++++++++++++++++---------- tests/validation/UNIT/GPUTarget.cpp | 5 +-- utils/TypePrinter.h | 10 ++++-- 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!"); } -- cgit v1.2.1