diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-06-24 20:32:11 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-06-28 12:00:14 +0000 |
commit | 731fe667e3009bfbfee8b0eb74ecb68b291e4311 (patch) | |
tree | e3a8ea66b88cee4af19363212e5a92864032becd /src/cpu | |
parent | b1496e6a1074c90fba64633ec92fa202f5f7d1d8 (diff) | |
download | ComputeLibrary-731fe667e3009bfbfee8b0eb74ecb68b291e4311.tar.gz |
Simplify CpuInfo logic
Refactors the CpuInfo extraction code and cleans the usage of it in the
CpuContext class
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: Iea47dfdaad431fb49285da92778d6b42cf318f60
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5848
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/CpuContext.cpp | 42 |
1 files changed, 9 insertions, 33 deletions
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) |