diff options
author | Michalis Spyrou <michalis.spyrou@arm.com> | 2021-06-07 14:23:57 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-06-23 12:25:50 +0000 |
commit | 20fca524baf99402f742ce38c538f2fd07d5fff9 (patch) | |
tree | b63d98383d1ba22bb3ca59d393e4ab9d47a9c762 /src/cpu/CpuContext.cpp | |
parent | 1d359279e22874121def2ce4bfdb633d94ea5ade (diff) | |
download | ComputeLibrary-20fca524baf99402f742ce38c538f2fd07d5fff9.tar.gz |
Create core library using high priority operators
A smaller core library is created using a subset of the operators.
Changed the structure of filelist.json in order to include more
information about the kernels and make the selection easier.
Resolves: COMPMID-4514
Change-Id: I079ca7d8e64346174eebdd13b834e1dd4dc36ca2
Signed-off-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5786
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/cpu/CpuContext.cpp')
-rw-r--r-- | src/cpu/CpuContext.cpp | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/src/cpu/CpuContext.cpp b/src/cpu/CpuContext.cpp index 18fa2e7469..a1c6413c98 100644 --- a/src/cpu/CpuContext.cpp +++ b/src/cpu/CpuContext.cpp @@ -90,67 +90,66 @@ AllocatorWrapper populate_allocator(AclAllocator *external_allocator) return is_valid ? AllocatorWrapper(*external_allocator) : AllocatorWrapper(default_allocator); } -CpuCapabilities populate_capabilities_legacy(const CPUInfo &cpu_info) +cpuinfo::CpuIsaInfo populate_capabilities_legacy(const CPUInfo &cpu_info) { - CpuCapabilities caps; + cpuinfo::CpuIsaInfo isa_caps; // Extract SIMD extension - caps.neon = true; -#ifdef SVE2 - caps.sve2 = true; -#endif /* SVE2 */ + isa_caps.neon = true; + isa_caps.sve = cpu_info.has_sve(); + isa_caps.sve2 = cpu_info.has_sve2(); + // Extract data-type support - caps.fp16 = cpu_info.has_fp16(); -#ifdef V8P6_BF - caps.bf16 = true; -#endif /* V8P6_BF */ + isa_caps.fp16 = cpu_info.has_fp16(); + isa_caps.bf16 = cpu_info.has_bf16(); + isa_caps.svebf16 = cpu_info.has_svebf16(); // Extract ISA extensions - caps.dot = cpu_info.has_dotprod(); -#ifdef MMLA_FP32 - caps.mmla_fp = true; -#endif /* MMLA_FP32 */ -#ifdef MMLA_INT8 - caps.mmla_int8 = true; -#endif /* MMLA_INT8 */ + 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 caps; + return isa_caps; } -CpuCapabilities populate_capabilities_flags(AclTargetCapabilities external_caps) +cpuinfo::CpuIsaInfo populate_capabilities_flags(AclTargetCapabilities external_caps) { - CpuCapabilities caps; + cpuinfo::CpuIsaInfo isa_caps; // Extract SIMD extension - caps.neon = external_caps & AclCpuCapabilitiesNeon; - caps.sve = external_caps & AclCpuCapabilitiesSve; - caps.sve2 = external_caps & AclCpuCapabilitiesSve2; + isa_caps.neon = external_caps & AclCpuCapabilitiesNeon; + isa_caps.sve = external_caps & AclCpuCapabilitiesSve; + isa_caps.sve2 = external_caps & AclCpuCapabilitiesSve2; + // Extract data-type support - caps.fp16 = external_caps & AclCpuCapabilitiesFp16; - caps.bf16 = external_caps & AclCpuCapabilitiesBf16; + isa_caps.fp16 = external_caps & AclCpuCapabilitiesFp16; + isa_caps.bf16 = external_caps & AclCpuCapabilitiesBf16; + // Extract ISA extensions - caps.dot = external_caps & AclCpuCapabilitiesDot; - caps.mmla_fp = external_caps & AclCpuCapabilitiesMmlaFp; - caps.mmla_int8 = external_caps & AclCpuCapabilitiesMmlaInt8; + isa_caps.dot = external_caps & AclCpuCapabilitiesDot; + isa_caps.i8mm = external_caps & AclCpuCapabilitiesMmlaInt8; + isa_caps.svef32mm = external_caps & AclCpuCapabilitiesMmlaFp; - return caps; + return isa_caps; } CpuCapabilities populate_capabilities(AclTargetCapabilities external_caps, int32_t max_threads) { - // Extract legacy structure - CPUInfo cpu_info; - CpuCapabilities caps; + + // Extract legacy structure + cpuinfo::CpuIsaInfo isa_caps; if(external_caps != AclCpuCapabilitiesAuto) { - caps = populate_capabilities_flags(external_caps); + isa_caps = populate_capabilities_flags(external_caps); } else { - caps = populate_capabilities_legacy(cpu_info); + isa_caps = populate_capabilities_legacy(CPUInfo::get()); } + caps.cpu_info = cpuinfo::CpuInfo(isa_caps, {}); // Set max number of threads #if defined(BARE_METAL) |