Isolate util/cpus.py
This commit is contained in:
parent
a543fd79f1
commit
736c46e22d
@ -137,7 +137,7 @@ def _install_with_depfile(self) -> None:
|
||||
"-C",
|
||||
str(self.environment_root()),
|
||||
"-j",
|
||||
str(spack.util.cpus.determine_number_of_jobs(parallel=True)),
|
||||
str(spack.util.cpus.determine_number_of_jobs(parallel=True, config=spack.config.CONFIG)),
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack.builder
|
||||
import spack.config
|
||||
from spack.build_environment import SPACK_NO_PARALLEL_MAKE
|
||||
from spack.directives import build_system, extends, maintainers
|
||||
from spack.package_base import PackageBase
|
||||
@ -93,7 +94,7 @@ def install(self, pkg, spec, prefix):
|
||||
"--copy",
|
||||
"-i",
|
||||
"-j",
|
||||
str(determine_number_of_jobs(parallel=parallel)),
|
||||
str(determine_number_of_jobs(parallel=parallel, config=spack.config.CONFIG)),
|
||||
"--",
|
||||
os.getcwd(),
|
||||
]
|
||||
|
@ -101,7 +101,6 @@
|
||||
on_package_attributes,
|
||||
)
|
||||
from spack.spec import InvalidSpecDetected, Spec
|
||||
from spack.util.cpus import determine_number_of_jobs
|
||||
from spack.util.executable import *
|
||||
from spack.variant import (
|
||||
any_combination_of,
|
||||
|
@ -7,8 +7,6 @@
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
import spack.config
|
||||
|
||||
|
||||
def cpus_available():
|
||||
"""
|
||||
@ -28,6 +26,7 @@ def determine_number_of_jobs(
|
||||
parallel: bool = False,
|
||||
max_cpus: int = cpus_available(),
|
||||
config: Optional["spack.config.Configuration"] = None,
|
||||
config_path: str = 'config:build_jobs',
|
||||
) -> int:
|
||||
"""
|
||||
Packages that require sequential builds need 1 job. Otherwise we use the
|
||||
@ -39,18 +38,24 @@ def determine_number_of_jobs(
|
||||
parallel: true when package supports parallel builds
|
||||
max_cpus: maximum number of CPUs to use (defaults to cpus_available())
|
||||
config: configuration object (defaults to global config)
|
||||
config_path: configuration path to read number of jobs from
|
||||
"""
|
||||
if not parallel:
|
||||
return 1
|
||||
|
||||
cfg = config or spack.config.CONFIG
|
||||
|
||||
# Command line overrides all
|
||||
config_jobs = 16
|
||||
try:
|
||||
command_line = cfg.get("config:build_jobs", default=None, scope="command_line")
|
||||
command_line = None
|
||||
if config is not None:
|
||||
command_line = config.get(config_path, default=None, scope="command_line")
|
||||
|
||||
if command_line is not None:
|
||||
return command_line
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
return min(max_cpus, cfg.get("config:build_jobs", 16))
|
||||
if config is not None:
|
||||
config_jobs = config.get(config_path, 16)
|
||||
|
||||
return min(max_cpus, config_jobs)
|
||||
|
Loading…
Reference in New Issue
Block a user