Skip to content

BLAS warnings in new github windows CI #1625

@jessegrabowski

Description

@jessegrabowski

Description

We're seeing BLAS warnings in the windows CI for pymc-extras. There are two. One is the usual linker failure:

CI log snippet
2025-09-28T18:44:42.2527549Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1757 Rewrite failure due to: e(Sub, ~z, e(Mul, ~alpha [<function <lambda> at 0x000001779D4AA980>], e(SparseDot, ~x, ~y))) -> e(Usmm{no_inplace}, e(Neg, ~alpha [<function <lambda> at 0x000001779D4AA980>]), ~x, ~y, ~z)
2025-09-28T18:44:42.2528530Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1758 node: Sub(Add.0, Mul.0)
2025-09-28T18:44:42.2529036Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1759 TRACEBACK:
2025-09-28T18:44:42.2529579Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1760 Traceback (most recent call last):
2025-09-28T18:44:42.2530256Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 300, in fetch_val_for_key
2025-09-28T18:44:42.2530800Z     return self._pytensor_cfg.get(section, option)
2025-09-28T18:44:42.2531049Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2531431Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 759, in get
2025-09-28T18:44:42.2531824Z     d = self._unify_values(section, vars)
2025-09-28T18:44:42.2532039Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2532446Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 1132, in _unify_values
2025-09-28T18:44:42.2532876Z     raise NoSectionError(section) from None
2025-09-28T18:44:42.2533138Z configparser.NoSectionError: No section: 'blas'
2025-09-28T18:44:42.2533323Z 
2025-09-28T18:44:42.2533475Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2533706Z 
2025-09-28T18:44:42.2533784Z Traceback (most recent call last):
2025-09-28T18:44:42.2534249Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 415, in __get__
2025-09-28T18:44:42.2534794Z     val_str = cls.fetch_val_for_key(self.name, delete_key=delete_key)
2025-09-28T18:44:42.2535078Z               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2535581Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 304, in fetch_val_for_key
2025-09-28T18:44:42.2536074Z     raise KeyError(key)
2025-09-28T18:44:42.2536251Z KeyError: 'blas__ldflags'
2025-09-28T18:44:42.2536466Z 
2025-09-28T18:44:42.2536618Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2536846Z 
2025-09-28T18:44:42.2536920Z Traceback (most recent call last):
2025-09-28T18:44:42.2537433Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1922, in process_node
2025-09-28T18:44:42.2538000Z     replacements = node_rewriter.transform(fgraph, node)
2025-09-28T18:44:42.2538264Z                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2538763Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1633, in transform
2025-09-28T18:44:42.2539276Z     s = unify(self.in_pattern, node.out)
2025-09-28T18:44:42.2539486Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2539959Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2540458Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2540648Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2541492Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 254, in unify_NoMap
2025-09-28T18:44:42.2541971Z     return unify(u, v, {})
2025-09-28T18:44:42.2542249Z            ^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2542712Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2543203Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2543392Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2543815Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 249, in unify
2025-09-28T18:44:42.2544270Z     return stream_eval(_unify(u, v, s))
2025-09-28T18:44:42.2544475Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2544919Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 45, in stream_eval
2025-09-28T18:44:42.2545379Z     z_out = z.send(z_args)
2025-09-28T18:44:42.2545547Z             ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2546064Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\unify.py", line 245, in _unify_ConstrainedVar_object
2025-09-28T18:44:42.2546649Z     and not v_w.constraint(eval_if_etuple(u_w))
2025-09-28T18:44:42.2546880Z             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2547349Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\sparse\rewriting.py", line 918, in <lambda>
2025-09-28T18:44:42.2547889Z     all(s == 1 for s in expr.type.shape) and config.blas__ldflags
2025-09-28T18:44:42.2548161Z                                              ^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2548628Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 419, in __get__
2025-09-28T18:44:42.2549104Z     val_str = self.default()
2025-09-28T18:44:42.2549285Z               ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2549766Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\link\c\cmodule.py", line 2968, in default_blas_ldflags
2025-09-28T18:44:42.2550275Z     warnings.warn(
2025-09-28T18:44:42.2550701Z UserWarning: PyTensor could not link to a BLAS installation. Operations that might benefit from BLAS will be severely degraded.
2025-09-28T18:44:42.2551386Z This usually happens when PyTensor is installed via pip. We recommend it be installed via conda/mamba/pixi instead.
2025-09-28T18:44:42.2552327Z Alternatively, you can use an experimental backend such as Numba or JAX that perform their own BLAS optimizations, by setting `pytensor.config.mode == 'NUMBA'` or passing `mode='NUMBA'` when compiling a PyTensor function.
2025-09-28T18:44:42.2553361Z For more options and details see https://pytensor.readthedocs.io/en/latest/troubleshooting.html#how-do-i-configure-test-my-blas-library
2025-09-28T18:44:42.2553906Z 
2025-09-28T18:44:42.2554733Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1757 Rewrite failure due to: e(Sub, ~z, e(Mul, ~alpha [<function <lambda> at 0x000001779D4AA980>], e(SparseDot, ~x, ~y))) -> e(Usmm{no_inplace}, e(Neg, ~alpha [<function <lambda> at 0x000001779D4AA980>]), ~x, ~y, ~z)
2025-09-28T18:44:42.2555713Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1758 node: Sub(Add.0, Mul.0)
2025-09-28T18:44:42.2556212Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1759 TRACEBACK:
2025-09-28T18:44:42.2556750Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1760 Traceback (most recent call last):
2025-09-28T18:44:42.2557423Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 300, in fetch_val_for_key
2025-09-28T18:44:42.2557959Z     return self._pytensor_cfg.get(section, option)
2025-09-28T18:44:42.2558207Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2558911Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 759, in get
2025-09-28T18:44:42.2559358Z     d = self._unify_values(section, vars)
2025-09-28T18:44:42.2559686Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2560106Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 1132, in _unify_values
2025-09-28T18:44:42.2560577Z     raise NoSectionError(section) from None
2025-09-28T18:44:42.2560835Z configparser.NoSectionError: No section: 'blas'
2025-09-28T18:44:42.2561020Z 
2025-09-28T18:44:42.2561173Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2561403Z 
2025-09-28T18:44:42.2561486Z Traceback (most recent call last):
2025-09-28T18:44:42.2561947Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 415, in __get__
2025-09-28T18:44:42.2562496Z     val_str = cls.fetch_val_for_key(self.name, delete_key=delete_key)
2025-09-28T18:44:42.2562781Z               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2563291Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 304, in fetch_val_for_key
2025-09-28T18:44:42.2563785Z     raise KeyError(key)
2025-09-28T18:44:42.2563966Z KeyError: 'blas__ldflags'
2025-09-28T18:44:42.2564081Z 
2025-09-28T18:44:42.2564236Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2564464Z 
2025-09-28T18:44:42.2564545Z Traceback (most recent call last):
2025-09-28T18:44:42.2565049Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1922, in process_node
2025-09-28T18:44:42.2565617Z     replacements = node_rewriter.transform(fgraph, node)
2025-09-28T18:44:42.2565888Z                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2566388Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1633, in transform
2025-09-28T18:44:42.2566908Z     s = unify(self.in_pattern, node.out)
2025-09-28T18:44:42.2567125Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2567608Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2568100Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2568292Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2568729Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 254, in unify_NoMap
2025-09-28T18:44:42.2569183Z     return unify(u, v, {})
2025-09-28T18:44:42.2569354Z            ^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2569801Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2570379Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2570557Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2570971Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 249, in unify
2025-09-28T18:44:42.2571423Z     return stream_eval(_unify(u, v, s))
2025-09-28T18:44:42.2571625Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2572064Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 45, in stream_eval
2025-09-28T18:44:42.2572515Z     z_out = z.send(z_args)
2025-09-28T18:44:42.2572678Z             ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2573192Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\unify.py", line 245, in _unify_ConstrainedVar_object
2025-09-28T18:44:42.2573770Z     and not v_w.constraint(eval_if_etuple(u_w))
2025-09-28T18:44:42.2574006Z             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2574476Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\sparse\rewriting.py", line 918, in <lambda>
2025-09-28T18:44:42.2575012Z     all(s == 1 for s in expr.type.shape) and config.blas__ldflags
2025-09-28T18:44:42.2575355Z                                              ^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2575835Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 419, in __get__
2025-09-28T18:44:42.2576300Z     val_str = self.default()
2025-09-28T18:44:42.2576479Z               ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2576958Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\link\c\cmodule.py", line 2968, in default_blas_ldflags
2025-09-28T18:44:42.2577460Z     warnings.warn(
2025-09-28T18:44:42.2577879Z UserWarning: PyTensor could not link to a BLAS installation. Operations that might benefit from BLAS will be severely degraded.
2025-09-28T18:44:42.2578567Z This usually happens when PyTensor is installed via pip. We recommend it be installed via conda/mamba/pixi instead.
2025-09-28T18:44:42.2579806Z Alternatively, you can use an experimental backend such as Numba or JAX that perform their own BLAS optimizations, by setting `pytensor.config.mode == 'NUMBA'` or passing `mode='NUMBA'` when compiling a PyTensor function.
2025-09-28T18:44:42.2580844Z For more options and details see https://pytensor.readthedocs.io/en/latest/troubleshooting.html#how-do-i-configure-test-my-blas-library
2025-09-28T18:44:42.2581316Z 
2025-09-28T18:44:42.2582129Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1757 Rewrite failure due to: e(Sub, ~z, e(Mul, ~alpha [<function <lambda> at 0x000001779D4AA980>], e(SparseDot, ~x, ~y))) -> e(Usmm{no_inplace}, e(Neg, ~alpha [<function <lambda> at 0x000001779D4AA980>]), ~x, ~y, ~z)
2025-09-28T18:44:42.2583103Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1758 node: Sub(Add.0, Mul.0)
2025-09-28T18:44:42.2583601Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1759 TRACEBACK:
2025-09-28T18:44:42.2584135Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1760 Traceback (most recent call last):
2025-09-28T18:44:42.2584803Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 300, in fetch_val_for_key
2025-09-28T18:44:42.2585345Z     return self._pytensor_cfg.get(section, option)
2025-09-28T18:44:42.2585593Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2585961Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 759, in get
2025-09-28T18:44:42.2586361Z     d = self._unify_values(section, vars)
2025-09-28T18:44:42.2586579Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2586982Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 1132, in _unify_values
2025-09-28T18:44:42.2587527Z     raise NoSectionError(section) from None
2025-09-28T18:44:42.2587789Z configparser.NoSectionError: No section: 'blas'
2025-09-28T18:44:42.2587970Z 
2025-09-28T18:44:42.2588128Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2588358Z 
2025-09-28T18:44:42.2588447Z Traceback (most recent call last):
2025-09-28T18:44:42.2588905Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 415, in __get__
2025-09-28T18:44:42.2589441Z     val_str = cls.fetch_val_for_key(self.name, delete_key=delete_key)
2025-09-28T18:44:42.2589726Z               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2590223Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 304, in fetch_val_for_key
2025-09-28T18:44:42.2590723Z     raise KeyError(key)
2025-09-28T18:44:42.2590908Z KeyError: 'blas__ldflags'
2025-09-28T18:44:42.2591025Z 
2025-09-28T18:44:42.2591179Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2591406Z 
2025-09-28T18:44:42.2591477Z Traceback (most recent call last):
2025-09-28T18:44:42.2592057Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1922, in process_node
2025-09-28T18:44:42.2592622Z     replacements = node_rewriter.transform(fgraph, node)
2025-09-28T18:44:42.2592879Z                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2593383Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1633, in transform
2025-09-28T18:44:42.2593893Z     s = unify(self.in_pattern, node.out)
2025-09-28T18:44:42.2594103Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2594578Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2595072Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2595262Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2595693Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 254, in unify_NoMap
2025-09-28T18:44:42.2596160Z     return unify(u, v, {})
2025-09-28T18:44:42.2596332Z            ^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2596780Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2597266Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2597449Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2597861Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 249, in unify
2025-09-28T18:44:42.2598306Z     return stream_eval(_unify(u, v, s))
2025-09-28T18:44:42.2598511Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2599291Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 45, in stream_eval
2025-09-28T18:44:42.2599758Z     z_out = z.send(z_args)
2025-09-28T18:44:42.2599936Z             ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2600456Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\unify.py", line 245, in _unify_ConstrainedVar_object
2025-09-28T18:44:42.2601043Z     and not v_w.constraint(eval_if_etuple(u_w))
2025-09-28T18:44:42.2601276Z             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2601758Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\sparse\rewriting.py", line 918, in <lambda>
2025-09-28T18:44:42.2602292Z     all(s == 1 for s in expr.type.shape) and config.blas__ldflags
2025-09-28T18:44:42.2602564Z                                              ^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2603042Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 419, in __get__
2025-09-28T18:44:42.2603617Z     val_str = self.default()
2025-09-28T18:44:42.2603799Z               ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2604285Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\link\c\cmodule.py", line 2968, in default_blas_ldflags
2025-09-28T18:44:42.2604794Z     warnings.warn(
2025-09-28T18:44:42.2605215Z UserWarning: PyTensor could not link to a BLAS installation. Operations that might benefit from BLAS will be severely degraded.
2025-09-28T18:44:42.2605897Z This usually happens when PyTensor is installed via pip. We recommend it be installed via conda/mamba/pixi instead.
2025-09-28T18:44:42.2606835Z Alternatively, you can use an experimental backend such as Numba or JAX that perform their own BLAS optimizations, by setting `pytensor.config.mode == 'NUMBA'` or passing `mode='NUMBA'` when compiling a PyTensor function.
2025-09-28T18:44:42.2607872Z For more options and details see https://pytensor.readthedocs.io/en/latest/troubleshooting.html#how-do-i-configure-test-my-blas-library
2025-09-28T18:44:42.2608337Z 
2025-09-28T18:44:42.2609221Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1757 Rewrite failure due to: e(Sub, ~z, e(Mul, ~alpha [<function <lambda> at 0x000001779D4AA980>], e(SparseDot, ~x, ~y))) -> e(Usmm{no_inplace}, e(Neg, ~alpha [<function <lambda> at 0x000001779D4AA980>]), ~x, ~y, ~z)
2025-09-28T18:44:42.2610203Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1758 node: Sub(Add.0, Mul.0)
2025-09-28T18:44:42.2610695Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1759 TRACEBACK:
2025-09-28T18:44:42.2611231Z �[1m�[31mERROR   �[0m pytensor.graph.rewriting.basic:basic.py:1760 Traceback (most recent call last):
2025-09-28T18:44:42.2611895Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 300, in fetch_val_for_key
2025-09-28T18:44:42.2612430Z     return self._pytensor_cfg.get(section, option)
2025-09-28T18:44:42.2612673Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2613045Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 759, in get
2025-09-28T18:44:42.2613434Z     d = self._unify_values(section, vars)
2025-09-28T18:44:42.2613655Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2614062Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\configparser.py", line 1132, in _unify_values
2025-09-28T18:44:42.2614494Z     raise NoSectionError(section) from None
2025-09-28T18:44:42.2614762Z configparser.NoSectionError: No section: 'blas'
2025-09-28T18:44:42.2614949Z 
2025-09-28T18:44:42.2615103Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2615336Z 
2025-09-28T18:44:42.2615415Z Traceback (most recent call last):
2025-09-28T18:44:42.2615873Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 415, in __get__
2025-09-28T18:44:42.2616411Z     val_str = cls.fetch_val_for_key(self.name, delete_key=delete_key)
2025-09-28T18:44:42.2616698Z               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2617211Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 304, in fetch_val_for_key
2025-09-28T18:44:42.2617700Z     raise KeyError(key)
2025-09-28T18:44:42.2617879Z KeyError: 'blas__ldflags'
2025-09-28T18:44:42.2617993Z 
2025-09-28T18:44:42.2618145Z During handling of the above exception, another exception occurred:
2025-09-28T18:44:42.2618438Z 
2025-09-28T18:44:42.2618547Z Traceback (most recent call last):
2025-09-28T18:44:42.2619443Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1922, in process_node
2025-09-28T18:44:42.2620021Z     replacements = node_rewriter.transform(fgraph, node)
2025-09-28T18:44:42.2620415Z                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2620919Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\basic.py", line 1633, in transform
2025-09-28T18:44:42.2621438Z     s = unify(self.in_pattern, node.out)
2025-09-28T18:44:42.2621659Z         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2622140Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2622641Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2622835Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2623277Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 254, in unify_NoMap
2025-09-28T18:44:42.2623744Z     return unify(u, v, {})
2025-09-28T18:44:42.2623927Z            ^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2624382Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\multipledispatch\dispatcher.py", line 278, in __call__
2025-09-28T18:44:42.2624873Z     return func(*args, **kwargs)
2025-09-28T18:44:42.2625061Z            ^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2625552Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 249, in unify
2025-09-28T18:44:42.2626012Z     return stream_eval(_unify(u, v, s))
2025-09-28T18:44:42.2626217Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2626665Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\unification\core.py", line 45, in stream_eval
2025-09-28T18:44:42.2627121Z     z_out = z.send(z_args)
2025-09-28T18:44:42.2627291Z             ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2627806Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\graph\rewriting\unify.py", line 245, in _unify_ConstrainedVar_object
2025-09-28T18:44:42.2628392Z     and not v_w.constraint(eval_if_etuple(u_w))
2025-09-28T18:44:42.2628625Z             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2629099Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\sparse\rewriting.py", line 918, in <lambda>
2025-09-28T18:44:42.2629641Z     all(s == 1 for s in expr.type.shape) and config.blas__ldflags
2025-09-28T18:44:42.2629912Z                                              ^^^^^^^^^^^^^^^^^^^^
2025-09-28T18:44:42.2630385Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\configparser.py", line 419, in __get__
2025-09-28T18:44:42.2630857Z     val_str = self.default()
2025-09-28T18:44:42.2631038Z               ^^^^^^^^^^^^^^
2025-09-28T18:44:42.2631523Z   File "C:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pytensor\link\c\cmodule.py", line 2968, in default_blas_ldflags
2025-09-28T18:44:42.2632027Z     warnings.warn(
2025-09-28T18:44:42.2632453Z UserWarning: PyTensor could not link to a BLAS installation. Operations that might benefit from BLAS will be severely degraded.
2025-09-28T18:44:42.2633139Z This usually happens when PyTensor is installed via pip. We recommend it be installed via conda/mamba/pixi instead.
2025-09-28T18:44:42.2634085Z Alternatively, you can use an experimental backend such as Numba or JAX that perform their own BLAS optimizations, by setting `pytensor.config.mode == 'NUMBA'` or passing `mode='NUMBA'` when compiling a PyTensor function.
2025-09-28T18:44:42.2635116Z For more options and details see https://pytensor.readthedocs.io/en/latest/troubleshooting.html#how-do-i-configure-test-my-blas-library

And one is a bit more exotic (to me) -- too much linking!

CI log snippet
2025-09-28T18:48:33.6073457Z �[31m�[1m__________________________ test_pipeline_integration __________________________�[0m
2025-09-28T18:48:33.6073913Z 
2025-09-28T18:48:33.6074280Z toy_X =        input
2025-09-28T18:48:33.6074553Z 0   0.000000
2025-09-28T18:48:33.6074787Z 1   0.010101
2025-09-28T18:48:33.6075020Z 2   0.020202
2025-09-28T18:48:33.6075239Z 3   0.030303
2025-09-28T18:48:33.6075473Z 4   0.040404
2025-09-28T18:48:33.6075706Z ..       ...
2025-09-28T18:48:33.6075922Z 95  0.959596
2025-09-28T18:48:33.6076152Z 96  0.969697
2025-09-28T18:48:33.6076377Z 97  0.979798
2025-09-28T18:48:33.6076598Z 98  0.989899
2025-09-28T18:48:33.6076828Z 99  1.000000
2025-09-28T18:48:33.6076970Z 
2025-09-28T18:48:33.6077076Z [100 rows x 1 columns]
2025-09-28T18:48:33.6077351Z toy_y = 0     3.195543
2025-09-28T18:48:33.6077616Z 1     1.751821
2025-09-28T18:48:33.6078075Z 2     3.394135
2025-09-28T18:48:33.6078311Z 3     3.404821
2025-09-28T18:48:33.6078540Z 4     2.188367
2025-09-28T18:48:33.6078765Z         ...   
2025-09-28T18:48:33.6078999Z 95    7.545585
2025-09-28T18:48:33.6079234Z 96    8.351528
2025-09-28T18:48:33.6079468Z 97    8.126109
2025-09-28T18:48:33.6079713Z 98    7.567812
2025-09-28T18:48:33.6079938Z 99    8.197637
2025-09-28T18:48:33.6080228Z Name: output, Length: 100, dtype: float64
2025-09-28T18:48:33.6080518Z 
2025-09-28T18:48:33.6081836Z     �[0m�[37m@pytest�[39;49;00m.mark.skipif(�[95mnot�[39;49;00m sklearn_available, reason=�[33m"�[39;49;00m�[33mscikit-learn package is not available.�[39;49;00m�[33m"�[39;49;00m)�[90m�[39;49;00m
2025-09-28T18:48:33.6083368Z     �[94mdef�[39;49;00m�[90m �[39;49;00m�[92mtest_pipeline_integration�[39;49;00m(toy_X, toy_y):�[90m�[39;49;00m
2025-09-28T18:48:33.6084130Z         model_config = {�[90m�[39;49;00m
2025-09-28T18:48:33.6085331Z             �[33m"�[39;49;00m�[33mintercept�[39;49;00m�[33m"�[39;49;00m: {�[33m"�[39;49;00m�[33mloc�[39;49;00m�[33m"�[39;49;00m: �[94m0�[39;49;00m, �[33m"�[39;49;00m�[33mscale�[39;49;00m�[33m"�[39;49;00m: �[94m2�[39;49;00m},�[90m�[39;49;00m
2025-09-28T18:48:33.6087058Z             �[33m"�[39;49;00m�[33mslope�[39;49;00m�[33m"�[39;49;00m: {�[33m"�[39;49;00m�[33mloc�[39;49;00m�[33m"�[39;49;00m: �[94m0�[39;49;00m, �[33m"�[39;49;00m�[33mscale�[39;49;00m�[33m"�[39;49;00m: �[94m2�[39;49;00m},�[90m�[39;49;00m
2025-09-28T18:48:33.6088294Z             �[33m"�[39;49;00m�[33mobs_error�[39;49;00m�[33m"�[39;49;00m: �[94m1�[39;49;00m,�[90m�[39;49;00m
2025-09-28T18:48:33.6089361Z             �[33m"�[39;49;00m�[33mdefault_output_var�[39;49;00m�[33m"�[39;49;00m: �[33m"�[39;49;00m�[33my_hat�[39;49;00m�[33m"�[39;49;00m,�[90m�[39;49;00m
2025-09-28T18:48:33.6090132Z         }�[90m�[39;49;00m
2025-09-28T18:48:33.6090522Z         model = Pipeline(�[90m�[39;49;00m
2025-09-28T18:48:33.6090951Z             [�[90m�[39;49;00m
2025-09-28T18:48:33.6091628Z                 (�[33m"�[39;49;00m�[33minput_scaling�[39;49;00m�[33m"�[39;49;00m, StandardScaler()),�[90m�[39;49;00m
2025-09-28T18:48:33.6092290Z                 (�[90m�[39;49;00m
2025-09-28T18:48:33.6092894Z                     �[33m"�[39;49;00m�[33mlinear_model�[39;49;00m�[33m"�[39;49;00m,�[90m�[39;49;00m
2025-09-28T18:48:33.6093966Z                     TransformedTargetRegressor(LinearModel(model_config), transformer=StandardScaler()),�[90m�[39;49;00m
2025-09-28T18:48:33.6094819Z                 ),�[90m�[39;49;00m
2025-09-28T18:48:33.6095211Z             ]�[90m�[39;49;00m
2025-09-28T18:48:33.6095566Z         )�[90m�[39;49;00m
2025-09-28T18:48:33.6104549Z >       model.fit(toy_X, toy_y)�[90m�[39;49;00m
2025-09-28T18:48:33.6104911Z 
2025-09-28T18:48:33.6105207Z �[1m�[31mtests\test_linearmodel.py�[0m:205: 
2025-09-28T18:48:33.6105723Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-09-28T18:48:33.6106748Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\sklearn\base.py�[0m:1365: in wrapper
2025-09-28T18:48:33.6107847Z     �[0m�[94mreturn�[39;49;00m fit_method(estimator, *args, **kwargs)�[90m�[39;49;00m
2025-09-28T18:48:33.6108521Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6109462Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\sklearn\pipeline.py�[0m:663: in fit
2025-09-28T18:48:33.6111099Z     �[0m�[96mself�[39;49;00m._final_estimator.fit(Xt, y, **last_step_params[�[33m"�[39;49;00m�[33mfit�[39;49;00m�[33m"�[39;49;00m])�[90m�[39;49;00m
2025-09-28T18:48:33.6112486Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\sklearn\base.py�[0m:1365: in wrapper
2025-09-28T18:48:33.6113579Z     �[0m�[94mreturn�[39;49;00m fit_method(estimator, *args, **kwargs)�[90m�[39;49;00m
2025-09-28T18:48:33.6114254Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6115263Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\sklearn\compose\_target.py�[0m:293: in fit
2025-09-28T18:48:33.6116511Z     �[0m�[96mself�[39;49;00m.regressor_.fit(X, y_trans, **routed_params.regressor.fit)�[90m�[39;49;00m
2025-09-28T18:48:33.6117345Z �[1m�[31mpymc_extras\model_builder.py�[0m:514: in fit
2025-09-28T18:48:33.6118422Z     �[0m�[96mself�[39;49;00m.idata = �[96mself�[39;49;00m.sample_model(**sampler_config)�[90m�[39;49;00m
2025-09-28T18:48:33.6119196Z                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6119979Z �[1m�[31mpymc_extras\model_builder.py�[0m:307: in sample_model
2025-09-28T18:48:33.6120663Z     �[0midata = pm.sample(**sampler_args)�[90m�[39;49;00m
2025-09-28T18:48:33.6121231Z             ^^^^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6122231Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pymc\sampling\mcmc.py�[0m:824: in sample
2025-09-28T18:48:33.6123277Z     �[0m�[94mwith�[39;49;00m joined_blas_limiter():�[90m�[39;49;00m
2025-09-28T18:48:33.6123826Z          ^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6124882Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\pymc\sampling\mcmc.py�[0m:744: in joined_blas_limiter
2025-09-28T18:48:33.6126080Z     �[0m�[94mreturn�[39;49;00m threadpool_limits(limits=blas_cores)�[90m�[39;49;00m
2025-09-28T18:48:33.6126752Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6127723Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\threadpoolctl.py�[0m:794: in __init__
2025-09-28T18:48:33.6129065Z     �[0m�[96msuper�[39;49;00m().�[92m__init__�[39;49;00m(ThreadpoolController(), limits=limits, user_api=user_api)�[90m�[39;49;00m
2025-09-28T18:48:33.6129924Z                      ^^^^^^^^^^^^^^^^^^^^^^�[90m�[39;49;00m
2025-09-28T18:48:33.6130866Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\threadpoolctl.py�[0m:819: in __init__
2025-09-28T18:48:33.6131910Z     �[0m�[96mself�[39;49;00m._warn_if_incompatible_openmp()�[90m�[39;49;00m
2025-09-28T18:48:33.6132477Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2025-09-28T18:48:33.6132810Z 
2025-09-28T18:48:33.6133136Z self = <threadpoolctl.ThreadpoolController object at 0x000002656CA2A2A0>
2025-09-28T18:48:33.6133687Z 
2025-09-28T18:48:33.6195836Z     �[0m�[94mdef�[39;49;00m�[90m �[39;49;00m�[92m_warn_if_incompatible_openmp�[39;49;00m(�[96mself�[39;49;00m):�[90m�[39;49;00m
2025-09-28T18:48:33.6197146Z     �[90m    �[39;49;00m�[33m"""Raise a warning if llvm-OpenMP and intel-OpenMP are both loaded"""�[39;49;00m�[90m�[39;49;00m
2025-09-28T18:48:33.6198534Z         prefixes = [lib_controller.prefix �[94mfor�[39;49;00m lib_controller �[95min�[39;49;00m �[96mself�[39;49;00m.lib_controllers]�[90m�[39;49;00m
2025-09-28T18:48:33.6199511Z         msg = textwrap.dedent(�[90m�[39;49;00m
2025-09-28T18:48:33.6200008Z     �[90m        �[39;49;00m�[33m"""�[39;49;00m
2025-09-28T18:48:33.6200732Z     �[33m        Found Intel OpenMP ('libiomp') and LLVM OpenMP ('libomp') loaded at�[39;49;00m
2025-09-28T18:48:33.6201670Z     �[33m        the same time. Both libraries are known to be incompatible and this�[39;49;00m
2025-09-28T18:48:33.6202608Z     �[33m        can cause random crashes or deadlocks on Linux when loaded in the�[39;49;00m
2025-09-28T18:48:33.6203583Z     �[33m        same Python program.�[39;49;00m
2025-09-28T18:48:33.6204305Z     �[33m        Using threadpoolctl may cause crashes or deadlocks. For more�[39;49;00m
2025-09-28T18:48:33.6205153Z     �[33m        information and possible workarounds, please see�[39;49;00m
2025-09-28T18:48:33.6206121Z     �[33m            https://github.com/joblib/threadpoolctl/blob/master/multiple_openmp.md�[39;49;00m
2025-09-28T18:48:33.6206901Z     �[33m        """�[39;49;00m�[90m�[39;49;00m
2025-09-28T18:48:33.6207322Z         )�[90m�[39;49;00m
2025-09-28T18:48:33.6208500Z         �[94mif�[39;49;00m �[33m"�[39;49;00m�[33mlibomp�[39;49;00m�[33m"�[39;49;00m �[95min�[39;49;00m prefixes �[95mand�[39;49;00m �[33m"�[39;49;00m�[33mlibiomp�[39;49;00m�[33m"�[39;49;00m �[95min�[39;49;00m prefixes:�[90m�[39;49;00m
2025-09-28T18:48:33.6209771Z >           warnings.warn(msg, �[96mRuntimeWarning�[39;49;00m)�[90m�[39;49;00m
2025-09-28T18:48:33.6210415Z �[1m�[31mE           RuntimeWarning: �[0m
2025-09-28T18:48:33.6211135Z �[1m�[31mE           Found Intel OpenMP ('libiomp') and LLVM OpenMP ('libomp') loaded at�[0m
2025-09-28T18:48:33.6212224Z �[1m�[31mE           the same time. Both libraries are known to be incompatible and this�[0m
2025-09-28T18:48:33.6213135Z �[1m�[31mE           can cause random crashes or deadlocks on Linux when loaded in the�[0m
2025-09-28T18:48:33.6213820Z �[1m�[31mE           same Python program.�[0m
2025-09-28T18:48:33.6214518Z �[1m�[31mE           Using threadpoolctl may cause crashes or deadlocks. For more�[0m
2025-09-28T18:48:33.6215635Z �[1m�[31mE           information and possible workarounds, please see�[0m
2025-09-28T18:48:33.6217438Z �[1m�[31mE               https://github.com/joblib/threadpoolctl/blob/master/multiple_openmp.md�[0m
2025-09-28T18:48:33.6218010Z 
2025-09-28T18:48:33.6218756Z �[1m�[31mC:\Users\runneradmin\micromamba\envs\pymc-extras-test\Lib\site-packages\threadpoolctl.py�[0m:1226: RuntimeWarning

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions