From 731fe667e3009bfbfee8b0eb74ecb68b291e4311 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Thu, 24 Jun 2021 20:32:11 +0100 Subject: Simplify CpuInfo logic Refactors the CpuInfo extraction code and cleans the usage of it in the CpuContext class Signed-off-by: Georgios Pinitas Change-Id: Iea47dfdaad431fb49285da92778d6b42cf318f60 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5848 Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins Reviewed-by: Giorgio Arena --- src/cpu/CpuContext.cpp | 42 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) (limited to 'src/cpu/CpuContext.cpp') diff --git a/src/cpu/CpuContext.cpp b/src/cpu/CpuContext.cpp index a1c6413c98..1a971a6a16 100644 --- a/src/cpu/CpuContext.cpp +++ b/src/cpu/CpuContext.cpp @@ -90,29 +90,6 @@ AllocatorWrapper populate_allocator(AclAllocator *external_allocator) return is_valid ? AllocatorWrapper(*external_allocator) : AllocatorWrapper(default_allocator); } -cpuinfo::CpuIsaInfo populate_capabilities_legacy(const CPUInfo &cpu_info) -{ - cpuinfo::CpuIsaInfo isa_caps; - - // Extract SIMD extension - isa_caps.neon = true; - isa_caps.sve = cpu_info.has_sve(); - isa_caps.sve2 = cpu_info.has_sve2(); - - // Extract data-type support - isa_caps.fp16 = cpu_info.has_fp16(); - isa_caps.bf16 = cpu_info.has_bf16(); - isa_caps.svebf16 = cpu_info.has_svebf16(); - - // Extract ISA extensions - isa_caps.dot = cpu_info.has_dotprod(); - isa_caps.i8mm = cpu_info.has_i8mm(); - isa_caps.svei8mm = cpu_info.has_svei8mm(); - isa_caps.svef32mm = cpu_info.has_svef32mm(); - - return isa_caps; -} - cpuinfo::CpuIsaInfo populate_capabilities_flags(AclTargetCapabilities external_caps) { cpuinfo::CpuIsaInfo isa_caps; @@ -123,8 +100,9 @@ cpuinfo::CpuIsaInfo populate_capabilities_flags(AclTargetCapabilities external_c isa_caps.sve2 = external_caps & AclCpuCapabilitiesSve2; // Extract data-type support - isa_caps.fp16 = external_caps & AclCpuCapabilitiesFp16; - isa_caps.bf16 = external_caps & AclCpuCapabilitiesBf16; + isa_caps.fp16 = external_caps & AclCpuCapabilitiesFp16; + isa_caps.bf16 = external_caps & AclCpuCapabilitiesBf16; + isa_caps.svebf16 = isa_caps.bf16; // Extract ISA extensions isa_caps.dot = external_caps & AclCpuCapabilitiesDot; @@ -139,17 +117,15 @@ CpuCapabilities populate_capabilities(AclTargetCapabilities external_caps, { CpuCapabilities caps; - // Extract legacy structure - cpuinfo::CpuIsaInfo isa_caps; + // Populate capabilities with system information + caps.cpu_info = cpuinfo::CpuInfo::build(); if(external_caps != AclCpuCapabilitiesAuto) { - isa_caps = populate_capabilities_flags(external_caps); - } - else - { - isa_caps = populate_capabilities_legacy(CPUInfo::get()); + cpuinfo::CpuIsaInfo isa = populate_capabilities_flags(external_caps); + auto cpus = caps.cpu_info.cpus(); + + caps.cpu_info = cpuinfo::CpuInfo(isa, cpus); } - caps.cpu_info = cpuinfo::CpuInfo(isa_caps, {}); // Set max number of threads #if defined(BARE_METAL) -- cgit v1.2.1