pytensor icon indicating copy to clipboard operation
pytensor copied to clipboard

BLAS warnings in new github windows CI

Open jessegrabowski opened this issue 2 months ago • 1 comments

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

jessegrabowski avatar Sep 30 '25 01:09 jessegrabowski