swh:1:snp:f521c49ab17ef7db6ec70b2430e1ed203f50383f
Raw File
Tip revision: 0cba87aefeb14533fa9063b3f1de5b923a724338 authored by wenqing on 05 July 2021, 19:10:45 UTC
Merge branch 'change_fem' into 'master'
Tip revision: 0cba87a
JobPools.cmake
# 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)
back to top