Skip to content

Commit

Permalink
openblas: enable ARM-specific optimizations
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
krant committed Feb 16, 2024
1 parent f394fa3 commit 3a14dbc
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions libs/openblas/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)/
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 3a14dbc

Please sign in to comment.