From 20fca524baf99402f742ce38c538f2fd07d5fff9 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Mon, 7 Jun 2021 14:23:57 +0100 Subject: 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 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5786 Tested-by: Arm Jenkins Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- src/cpu/CpuContext.cpp | 67 +++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 34 deletions(-) (limited to 'src/cpu/CpuContext.cpp') 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) -- cgit v1.2.1