[flang-commits] [flang] [flang] Add FLANG_PARALLEL_COMPILE_JOBS option (PR #95672)

Tom Stellard via flang-commits flang-commits at lists.llvm.org
Sat Jun 15 10:42:55 PDT 2024


https://github.com/tstellar created https://github.com/llvm/llvm-project/pull/95672

This works the same way as LLVM_PARALLEL_COMPILE_JOBS except that it is specific to the flang source rather than for the whole project.

Configuring with -DFLANG_PARALLEL_COMPILE_JOBS=1 would mean that there would only ever be one flang source being compiled at a time.

Some of the flang sources require large amounts of memory to compile, so this option can be used to avoid OOM erros when compiling those files while still allowing the rest of the project to compile using the maximum number of jobs.

>From fb0f0768554038c4ab4a8f5a4cf5c9ce9b9547e1 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar at redhat.com>
Date: Sat, 15 Jun 2024 17:36:33 +0000
Subject: [PATCH] [flang] Add FLANG_PARALLEL_COMPILE_JOBS option

This works the same way as LLVM_PARALLEL_COMPILE_JOBS except that it
is specific to the flang source rather than for the whole project.

Configuring with -DFLANG_PARALLEL_COMPILE_JOBS=1 would mean that there
would only ever be one flang source being compiled at a time.

Some of the flang sources require large amounts of memory to compile,
so this option can be used to avoid OOM erros when compiling those
files while still allowing the rest of the project to compile using
the maximum number of jobs.
---
 flang/CMakeLists.txt               | 12 ++++++++++++
 flang/cmake/modules/AddFlang.cmake |  1 +
 2 files changed, 13 insertions(+)

diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index cbe8f1186236a..75f3d5e001203 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -445,6 +445,18 @@ if (APPLE)
   endif()
 endif()
 
+# Set up job pools for flang.  Some of the flang sources take a lot of memory to
+# compile, so allow users to limit the number of parallel flang jobs.  This is
+# useful for building flang alongside several other projects since you can use
+# the maximum number of build jobs for the other projects while limiting the
+# number of flang compile jobs.
+#
+# We want this set to infinity by default
+set(FLANG_PARALLEL_COMPILE_JOBS 0 CACHE STRING
+  "The maxmimum number of concurrent compilation jobs (Ninja only)")
+
+set_property(GLOBAL APPEND PROPERTY JOB_POOLS flang_compile_job_pool=${FLANG_PARALLEL_COMPILE_JOBS})
+
 include(CMakeParseArguments)
 include(AddFlang)
 
diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake
index 3a5119b83831f..c4b957324ea1c 100644
--- a/flang/cmake/modules/AddFlang.cmake
+++ b/flang/cmake/modules/AddFlang.cmake
@@ -89,6 +89,7 @@ function(add_flang_library name)
       set_property(GLOBAL APPEND PROPERTY FLANG_LIBS ${name})
     endif()
     set_property(GLOBAL APPEND PROPERTY FLANG_EXPORTS ${name})
+    set_property(TARGET obj.${name} PROPERTY JOB_POOL_COMPILE flang_compile_job_pool)
   else()
     # Add empty "phony" target
     add_custom_target(${name})



More information about the flang-commits mailing list