aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/CpuContext.cpp
diff options
context:
space:
mode:
authorMichalis Spyrou <michalis.spyrou@arm.com>2021-06-07 14:23:57 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-06-23 12:25:50 +0000
commit20fca524baf99402f742ce38c538f2fd07d5fff9 (patch)
treeb63d98383d1ba22bb3ca59d393e4ab9d47a9c762 /src/cpu/CpuContext.cpp
parent1d359279e22874121def2ce4bfdb633d94ea5ade (diff)
downloadComputeLibrary-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.cpp67
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)