| 26 Jun 2026 |
emily | probably just adding setup hooks to those is sufficient then? or the Python check phase could yell at you if it sees them in the dep graph but not a corresponding hook… | 13:55:18 |
Vladimír Čunát | IIRC cgroups only allow you to pin to particular subset of cores. | 13:56:24 |
Vladimír Čunát | * IIRC cgroups only allow you to restrict to particular subset of cores. | 13:56:43 |
Vladimír Čunát | * IIRC cgroups only allow you to restrict to a particular subset of cores. | 13:56:50 |
emily | the real real deal would be NumPy supporting jobserver protocol and also jobserver protocol being good | 13:56:55 |
Grimmauld (any/all) | diff --git a/pkgs/by-name/bl/blas/package.nix b/pkgs/by-name/bl/blas/package.nix
index 01ad1839c339..85e2e2cb3412 100644
--- a/pkgs/by-name/bl/blas/package.nix
+++ b/pkgs/by-name/bl/blas/package.nix
@@ -3,6 +3,7 @@
stdenv,
lapack-reference,
openblas,
+ mpiCheckPhaseHook,
isILP64 ? false,
blasProvider ? openblas,
}:
@@ -186,6 +187,10 @@ stdenv.mkDerivation {
"dev"
];
+ propagatedBuildInputs = [
+ mpiCheckPhaseHook
+ ];
+
meta = (blasProvider'.meta or { }) // {
description = "${lib.getName blasProvider} with just the BLAS C and FORTRAN ABI";
};
diff --git a/pkgs/development/python-modules/numpy/2.nix b/pkgs/development/python-modules/numpy/2.nix
index 67c60475fd5f..0fc2a30f3555 100644
--- a/pkgs/development/python-modules/numpy/2.nix
+++ b/pkgs/development/python-modules/numpy/2.nix
@@ -91,7 +91,6 @@ buildPythonPackage (finalAttrs: {
# see https://github.com/OpenMathLib/OpenBLAS/issues/2993
preConfigure = ''
sed -i 's/-faltivec//' numpy/distutils/system_info.py
- export OMP_NUM_THREADS=$((NIX_BUILD_CORES > 64 ? 64 : NIX_BUILD_CORES))
'';
buildInputs = [
diff --git a/pkgs/development/python-modules/scipy/default.nix b/pkgs/development/python-modules/scipy/default.nix
index cdecd986e4ef..30999320f1e8 100644
--- a/pkgs/development/python-modules/scipy/default.nix
+++ b/pkgs/development/python-modules/scipy/default.nix
@@ -190,11 +190,6 @@ buildPythonPackage (finalAttrs: {
'';
preCheck = ''
- export OMP_NUM_THREADS=$(( $NIX_BUILD_CORES / 4 ))
- if [ $OMP_NUM_THREADS -eq 0 ]; then
- export OMP_NUM_THREADS=1
- fi
-
cd $out
'';
i guess? | 13:57:17 |
emily | (or operating systems being good but then we'd be out of a job) | 13:57:26 |
emily | I think it won't propagate further than one layer. | 13:57:44 |
Grimmauld (any/all) | python dependencies are fully propagated | 13:58:01 |
Grimmauld (any/all) | oh wait indeed blas isn't a propagated dep though | 13:58:19 |
emily | oh right | 13:58:10 |
Grimmauld (any/all) | sorry | 13:58:21 |
emily | probably just putting the hook in propagatedNativeBuildInputs of NumPy is the way. (wondering what the difference between OpenMP and MPI actually is…) | 13:58:52 |
Grimmauld (any/all) | multi-core vs multi-node afaiu | 13:59:41 |
emily | maybe we should have an openmpCheckPhaseHook that mpiCheckPhaseHook propgates then :P | 14:00:04 |
Grimmauld (any/all) | but yeah, throwing it in propagatedNativeBuildInputs of numpy sounds like a plan a little less drastic than just throwing it in stdenv | 14:00:21 |
emily | fwiw, OMP_NUM_THREADS turns up a surprising number of non-Python things | 14:00:25 |
emily | looks like BLAS/LAPACK stuff. so maybe putting a hook in there is a good idea too. | 14:00:41 |
Grimmauld (any/all) | Most of them link one of blas/lapack/libomp i'd guess? | 14:00:54 |
emily | yeah I dunno. all that stuff is a mystery to me. there's llvmPackages.openmp too? | 14:01:08 |
Grimmauld (any/all) | yeah | 14:01:16 |
Grimmauld (any/all) | openmp gets compiled in, usually. Unless you do weird stuff :tm: and you can link it | 14:01:35 |
Grimmauld (any/all) | and then there is boost that can optionally use omp/cuda too | 14:01:49 |
Grimmauld (any/all) | its a whole mess | 14:01:57 |
Grimmauld (any/all) | mpiCheckHook apparently defines the topology of the compute "cluster" to contain exactly one node (the nix builder), we can almost certainly skip that for just openmp things | 14:03:16 |
Grimmauld (any/all) | Scientific computing is a mess. I hate it, despite it being technically my field outside nix... | 14:04:17 |
Grimmauld (any/all) | propagatedNativeCheckInputs when | 14:06:23 |
emily | huh, we don't have that? | 14:07:31 |
emily | should be very harmless to propagate a hook like that unconditionally though | 14:07:49 |
Grimmauld (any/all) | Yes, i agre | 14:09:00 |