A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 13, 08:15 UTC
[build][cmake]: Bundle static ACL and torch libgomp for CPU extension builds (#28059)
Signed-off-by: Radu Salavat <radu.salavat@arm.com>
Radu Salavat committed
Nov 12, 2025 at 21:43 UTC
d44fbbab0ea383a768823e99285b5be364afcd09
1 file changed
+58
-20
cmake/cpu_extension.cmake
+58
-20
@@ -210,7 +210,30 @@ endif()
210
if ((AVX512_FOUND AND NOT AVX512_DISABLED) OR (ASIMD_FOUND AND NOT APPLE_SILICON_FOUND) OR POWER9_FOUND OR POWER10_FOUND OR POWER11_FOUND)
211
# Fetch and build Arm Compute Library (ACL) as oneDNN's backend for AArch64
212
# TODO [fadara01]: remove this once ACL can be fetched and built automatically as a dependency of oneDNN
213
+ set(ONEDNN_AARCH64_USE_ACL OFF CACHE BOOL "")
214
if(ASIMD_FOUND)
215
+ # Set number of parallel build processes
216
+ include(ProcessorCount)
217
+ ProcessorCount(NPROC)
218
+ if(NOT NPROC)
219
+ set(NPROC 4)
220
+ endif()
221
+ # locate PyTorch's libgomp (e.g. site-packages/torch.libs/libgomp-947d5fa1.so.1.0.0)
222
+ # and create a local shim dir with it
223
+ vllm_prepare_torch_gomp_shim(VLLM_TORCH_GOMP_SHIM_DIR)
224
+
225
+ find_library(OPEN_MP
226
+ NAMES gomp
227
+ PATHS ${VLLM_TORCH_GOMP_SHIM_DIR}
228
+ NO_DEFAULT_PATH
229
+ REQUIRED
230
+ )
231
+ # Set LD_LIBRARY_PATH to include the shim dir at build time to use the same libgomp as PyTorch
232
+ if (OPEN_MP)
233
+ set(ENV{LD_LIBRARY_PATH} "${VLLM_TORCH_GOMP_SHIM_DIR}:$ENV{LD_LIBRARY_PATH}")
234
+ endif()
235
+
236
+ # Fetch and populate ACL
237
if(DEFINED ENV{ACL_ROOT_DIR} AND IS_DIRECTORY "$ENV{ACL_ROOT_DIR}")
238
message(STATUS "Using ACL from specified source directory: $ENV{ACL_ROOT_DIR}")
239
else()
@@ -224,38 +247,53 @@ if ((AVX512_FOUND AND NOT AVX512_DISABLED) OR (ASIMD_FOUND AND NOT APPLE_SILICON
247
GIT_PROGRESS TRUE
248
)
249
set(ENV{ACL_ROOT_DIR} "${arm_compute_SOURCE_DIR}")
250
+ set(ACL_LIB_DIR "$ENV{ACL_ROOT_DIR}/build")
251
endif()
252
229
- # Build ACL with scons
230
- include(ProcessorCount)
231
- ProcessorCount(_NPROC)
232
- set(_scons_cmd
233
- scons -j${_NPROC}
234
- Werror=0 debug=0 neon=1 examples=0 embed_kernels=0 os=linux
235
- arch=armv8.2-a build=native benchmark_examples=0 fixed_format_kernels=1
236
- multi_isa=1 openmp=1 cppthreads=0
253
+ # Build ACL with CMake
254
+ set(ARM_COMPUTE_BUILD_SHARED_LIB "OFF")
255
+ set(CMAKE_BUILD_TYPE "Release")
256
+ set(ARM_COMPUTE_ARCH "armv8.2-a")
257
+ set(ARM_COMPUTE_ENABLE_ASSERTS "OFF")
258
+ set(ARM_COMPUTE_ENABLE_CPPTHREADS "OFF")
259
+ set(ONEDNN_ENABLE_PRIMITIVE "MATMUL;REORDER")
260
+ set(ARM_COMPUTE_ENABLE_OPENMP "ON")
261
+ set(ARM_COMPUTE_ENABLE_WERROR "OFF")
262
+ set(ARM_COMPUTE_BUILD_EXAMPLES "OFF")
263
+ set(ARM_COMPUTE_BUILD_TESTING "OFF")
264
+
265
+ set(_cmake_config_cmd
266
+ ${CMAKE_COMMAND} -G Ninja -B build
267
+ -DARM_COMPUTE_BUILD_SHARED_LIB=OFF
268
+ -DCMAKE_BUILD_TYPE=Release
269
+ -DARM_COMPUTE_ARCH=armv8.2-a
270
+ -DARM_COMPUTE_ENABLE_ASSERTS=OFF
271
+ -DARM_COMPUTE_ENABLE_CPPTHREADS=OFF
272
+ -DARM_COMPUTE_ENABLE_OPENMP=ON
273
+ -DARM_COMPUTE_ENABLE_WERROR=OFF
274
+ -DARM_COMPUTE_BUILD_EXAMPLES=OFF
275
+ -DARM_COMPUTE_BUILD_TESTING=OFF)
276
+ set(_cmake_build_cmd
277
+ ${CMAKE_COMMAND} --build build -- -j${NPROC}
278
)
279
239
- # locate PyTorch's libgomp (e.g. site-packages/torch.libs/libgomp-947d5fa1.so.1.0.0)
240
- # and create a local shim dir with it
241
- include("${CMAKE_CURRENT_LIST_DIR}/utils.cmake")
242
- vllm_prepare_torch_gomp_shim(VLLM_TORCH_GOMP_SHIM_DIR)
243
-
244
- if(NOT VLLM_TORCH_GOMP_SHIM_DIR STREQUAL "")
245
- list(APPEND _scons_cmd extra_link_flags=-L${VLLM_TORCH_GOMP_SHIM_DIR})
246
- endif()
247
-
280
execute_process(
249
- COMMAND ${_scons_cmd}
281
+ COMMAND ${_cmake_config_cmd}
282
+ WORKING_DIRECTORY "$ENV{ACL_ROOT_DIR}"
283
+ )
284
+ execute_process(
285
+ COMMAND ${_cmake_build_cmd}
286
WORKING_DIRECTORY "$ENV{ACL_ROOT_DIR}"
287
RESULT_VARIABLE _acl_rc
288
)
289
+
290
if(NOT _acl_rc EQUAL 0)
291
message(FATAL_ERROR "ACL SCons build failed (exit ${_acl_rc}).")
292
endif()
293
+ message(STATUS "Arm Compute Library (ACL) built successfully.")
294
257
- set(ONEDNN_AARCH64_USE_ACL "ON")
258
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,$ENV{ACL_ROOT_DIR}/build/")
295
+ # VLLM/oneDNN settings for ACL
296
+ set(ONEDNN_AARCH64_USE_ACL ON CACHE BOOL "" FORCE)
297
add_compile_definitions(VLLM_USE_ACL)
298
endif()
299