Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Commit d8a3ebd

Browse files
authored
aarch64: cd: switch from libomp to libgomp (#1803)
In the current version of the CD scripts, torch libraries are linked to llvm openmp because conda openblas-openmp is linked to it. To switch to gnu libgomp, we are building the openblas from sources instead of installing from conda. Building openBLAS shared library instead of static library to be able to discover LAPACK support in OpenBLAS.
1 parent d32dcfe commit d8a3ebd

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

aarch64_linux/aarch64_ci_setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ if [[ "$DESIRED_PYTHON" == "3.8" ]]; then
3030
else
3131
pip install -q --pre numpy==2.0.0rc1
3232
fi
33-
conda install -y -c conda-forge pyyaml==6.0.1 patchelf==0.17.2 pygit2==1.13.2 openblas==0.3.25=*openmp* ninja==1.11.1 scons==4.5.2
33+
conda install -y -c conda-forge pyyaml==6.0.1 patchelf==0.17.2 pygit2==1.13.2 ninja==1.11.1 scons==4.5.2
3434

3535
python --version
3636
conda --version

aarch64_linux/aarch64_wheel_ci_build.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,43 @@ def list_dir(path: str) -> List[str]:
1515
return check_output(["ls", "-1", path]).decode().split("\n")
1616

1717

18+
def build_OpenBLAS() -> None:
19+
'''
20+
Building OpenBLAS, because the package in many linux is old
21+
'''
22+
print('Building OpenBLAS')
23+
openblas_build_flags = [
24+
"NUM_THREADS=128",
25+
"USE_OPENMP=1",
26+
"NO_SHARED=0",
27+
"DYNAMIC_ARCH=1",
28+
"TARGET=ARMV8",
29+
"CFLAGS=-O3",
30+
]
31+
openblas_checkout_dir = "OpenBLAS"
32+
33+
check_call(
34+
[
35+
"git",
36+
"clone",
37+
"https://github.com/OpenMathLib/OpenBLAS.git",
38+
"-b",
39+
"v0.3.25",
40+
"--depth",
41+
"1",
42+
"--shallow-submodules",
43+
]
44+
)
45+
46+
check_call(["make", "-j8"]
47+
+ openblas_build_flags,
48+
cwd=openblas_checkout_dir)
49+
check_call(["make", "-j8"]
50+
+ openblas_build_flags
51+
+ ["install"],
52+
cwd=openblas_checkout_dir)
53+
54+
1855
def build_ArmComputeLibrary() -> None:
1956
"""
2057
Using ArmComputeLibrary for aarch64 PyTorch
@@ -186,6 +223,7 @@ def parse_arguments():
186223
elif branch.startswith(("v1.", "v2.")):
187224
build_vars += f"BUILD_TEST=0 PYTORCH_BUILD_VERSION={branch[1:branch.find('-')]} PYTORCH_BUILD_NUMBER=1 "
188225

226+
build_OpenBLAS()
189227
if enable_mkldnn:
190228
build_ArmComputeLibrary()
191229
print("build pytorch with mkldnn+acl backend")
@@ -195,6 +233,8 @@ def parse_arguments():
195233
"LD_LIBRARY_PATH=/pytorch/build/lib:/acl/build:$LD_LIBRARY_PATH "
196234
"ACL_INCLUDE_DIR=/acl/build "
197235
"ACL_LIBRARY=/acl/build "
236+
"BLAS=OpenBLAS "
237+
"OpenBLAS_HOME=/OpenBLAS "
198238
)
199239
else:
200240
print("build pytorch without mkldnn backend")

0 commit comments

Comments
 (0)