Skip to content
Snippets Groups Projects
Commit 11ca068e authored by Lars Bilke's avatar Lars Bilke
Browse files

Merge branch 'job-pools' into 'master'

[cmake] Job pools for Ninja.

See merge request ogs/ogs!3624
parents fee75ce5 4060392b
No related branches found
No related tags found
No related merge requests found
...@@ -74,6 +74,7 @@ include(ProjectSetup) ...@@ -74,6 +74,7 @@ include(ProjectSetup)
include(Functions) include(Functions)
include(ConanSetup) include(ConanSetup)
include(CompilerSetup) include(CompilerSetup)
include(JobPools)
include(Find) include(Find)
include(CLCacheSetup) include(CLCacheSetup)
include(Dependencies) include(Dependencies)
......
...@@ -5,6 +5,9 @@ foreach(process ${_processes_list}) ...@@ -5,6 +5,9 @@ foreach(process ${_processes_list})
if(OGS_BUILD_PROCESS_${process}) if(OGS_BUILD_PROCESS_${process})
add_subdirectory(${process}) add_subdirectory(${process})
target_link_libraries(Processes INTERFACE ${process}) target_link_libraries(Processes INTERFACE ${process})
set_target_properties(
${process} PROPERTIES JOB_POOL_COMPILE heavy_tasks
)
endif() endif()
endforeach() endforeach()
......
# From https://www.youtube.com/watch?v=8y7UuAG3Z0g (minute 52)
cmake_host_system_information(RESULT _memfree QUERY AVAILABLE_PHYSICAL_MEMORY)
cmake_host_system_information(RESULT _cores QUERY NUMBER_OF_LOGICAL_CORES)
message(
STATUS "Number of (logical) cores: ${_cores}, Free memory: ${_memfree} MB"
)
# Sets number of jobs between 1 and number of logical cores depending on the
# available memory.
function(setup_job_pool name mem_per_task)
math(EXPR res "${_memfree} / ${mem_per_task}")
if(res LESS 1)
set(res 1)
endif()
if(res GREATER ${_cores})
set(res ${_cores})
endif()
message(STATUS " Job pool ${name} using ${res} cores.")
set_property(GLOBAL APPEND PROPERTY JOB_POOLS ${name}=${res})
endfunction()
# Default job pool
setup_job_pool(light_tasks 800) # MB per task
set(CMAKE_JOB_POOL_COMPILE light_tasks)
set(CMAKE_JOB_POOL_LINK light_tasks)
setup_job_pool(heavy_tasks 4000)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment