openblas: enable ARM-specific optimizations

OpenBLAS allows to specify per-family CPU optimizations during build stage.
This package supports manual specification of a family during configuration.
This commit adds automatic detection of target family, while keeping manual
override as a backup.

Automatically detected ARM families:
 - Cortex-A9 without NEON
 - Cortex-A9 with NEON
 - Cortex-A15
 - Cortex-A53
 - Cortex-A72

Signed-off-by: krant <aleksey.vasilenko@gmail.com>
This commit is contained in:
krant 2024-02-16 14:46:45 +02:00 committed by Josef Schlehofer
parent 5d3424f992
commit 8bcd244715
1 changed files with 16 additions and 3 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=OpenBLAS
PKG_VERSION:=0.3.26
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=OpenBLAS-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/xianyi/OpenBLAS/releases/download/v$(PKG_VERSION)/
@ -49,13 +49,26 @@ endmenu
endef
OPENBLAS_TARGET=$(call qstrip,$(CONFIG_OPENBLAS_TARGET_OVERRIDE))
CPU_TYPE=$(call qstrip,$(CONFIG_CPU_TYPE))
ifeq ($(OPENBLAS_TARGET),)
# initialize to GENERIC as default
OPENBLAS_TARGET:=GENERIC
ifeq ($(ARCH),aarch64)
ifneq ($(findstring cortex-a9,$(CONFIG_CPU_TYPE)),)
ifneq ($(findstring neon,$(CONFIG_CPU_TYPE)),)
# CORTEXA9 relies on NEON
OPENBLAS_TARGET:=CORTEXA9
else
# Fallback for CPUs without NEON
OPENBLAS_TARGET:=ARMV7
endif
else ifneq ($(findstring cortex-a15,$(CONFIG_CPU_TYPE)),)
OPENBLAS_TARGET:=CORTEXA15
else ifneq ($(findstring cortex-a53,$(CONFIG_CPU_TYPE)),)
OPENBLAS_TARGET:=CORTEXA53
else ifneq ($(findstring cortex-a72,$(CONFIG_CPU_TYPE)),)
OPENBLAS_TARGET:=CORTEXA72
else ifeq ($(ARCH),aarch64)
OPENBLAS_TARGET:=ARMV8
else ifeq ($(ARCH),arm)
OPENBLAS_TARGET:=ARMV5