Skip to content

BUG: Intel Mac tribulations #1543

@elc45

Description

@elc45

Describe the issue:

Can't compile a pymc model.

Reproducable code example:

import nutpie
import pandas

data = pd.read_csv(pm.get_data("radon.csv"))
data["log_radon"] = data["log_radon"].astype(np.float64)
county_idx, counties = pd.factorize(data.county)
coords = {"county": counties, "obs_id": np.arange(len(county_idx))}

# Create a simple hierarchical model for the radon dataset
with pm.Model(coords=coords, check_bounds=False) as pymc_model:
    intercept = pm.Normal("intercept", sigma=10)

    # County effects
    raw = pm.ZeroSumNormal("county_raw", dims="county")
    sd = pm.HalfNormal("county_sd")
    county_effect = pm.Deterministic("county_effect", raw * sd, dims="county")

    # Global floor effect
    floor_effect = pm.Normal("floor_effect", sigma=2)

    # County:floor interaction
    raw = pm.ZeroSumNormal("county_floor_raw", dims="county")
    sd = pm.HalfNormal("county_floor_sd")
    county_floor_effect = pm.Deterministic(
        "county_floor_effect", raw * sd, dims="county"
    )

    mu = (
        intercept
        + county_effect[county_idx]
        + floor_effect * data.floor.values
        + county_floor_effect[county_idx] * data.floor.values
    )

    sigma = pm.HalfNormal("sigma", sigma=1.5)
    pm.Normal(
        "log_radon", mu=mu, sigma=sigma, observed=data.log_radon.values, dims="obs_id"
    )

compiled_model = nutpie.compile_pymc_model(pymc_model)

Error message:

ERROR (pytensor.graph.rewriting.basic): Rewrite failure due to: constant_folding
ERROR (pytensor.graph.rewriting.basic): node: ExpandDims{axis=0}(0.0)
ERROR (pytensor.graph.rewriting.basic): TRACEBACK:
ERROR (pytensor.graph.rewriting.basic): Traceback (most recent call last):
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/graph/rewriting/basic.py", line 1922, in process_node
    replacements = node_rewriter.transform(fgraph, node)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/tensor/rewriting/basic.py", line 1160, in constant_folding
    return unconditional_constant_folding.transform(fgraph, node)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/graph/rewriting/basic.py", line 1086, in transform
    return self.fn(fgraph, node)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/tensor/rewriting/basic.py", line 1109, in unconditional_constant_folding
    thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/op.py", line 125, in make_thunk
    return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/op.py", line 84, in make_c_thunk
    outputs = cl.make_thunk(
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/basic.py", line 1185, in make_thunk
    cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/basic.py", line 1102, in __compile__
    thunk, module = self.cthunk_factory(
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/basic.py", line 1626, in cthunk_factory
    module = cache.module_from_key(key=key, lnk=self)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/cmodule.py", line 1251, in module_from_key
    module = lnk.compile_cmodule(location)
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/basic.py", line 1527, in compile_cmodule
    module = c_compiler.compile_str(
  File "/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/cmodule.py", line 2678, in compile_str
    raise CompileError(
pytensor.link.c.exceptions.CompileError: Compilation failed (return status=1):
/Users/eliotcarlson/miniforge3/envs/nutpie-dev/bin/clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -Wno-c++11-narrowing -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -m64 -fPIC -undefined dynamic_lookup -ld64 -I/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/numpy/_core/include -I/Users/eliotcarlson/miniforge3/envs/nutpie-dev/include/python3.10 -I/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/c_code -L/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib -fvisibility=hidden -o /Users/eliotcarlson/.pytensor/compiledir_macOS-15.5-x86_64-i386-64bit-i386-3.10.18-64/tmphf1ukq9q/mc5d88e8dc18faeba04f18b2ae819007d68babe6da825f68b5dc6bede633fc176.so /Users/eliotcarlson/.pytensor/compiledir_macOS-15.5-x86_64-i386-64bit-i386-3.10.18-64/tmphf1ukq9q/mod.cpp
ld: -lto_library library filename must be 'libLTO.dylib'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

PyTensor version information:

pt version: 2.31.6 ; python 3.10.18 ; macOS Sequoia 15.5 ; nutpie 0.14.2 ; pymc 5.23.0 ; pytensor installed via nutpie.

cxx (<class 'str'>)
Value: /Users/eliotcarlson/miniforge3/envs/nutpie-dev/bin/clang++

linker ({'vm_nogc', 'py', 'c|py', 'cvm_nogc', 'vm', 'c', 'c|py_nogc', 'cvm'})
Value: cvm

/Users/eliotcarlson/miniforge3/envs/nutpie-dev/lib/python3.10/site-packages/pytensor/link/c/cmodule.py:2968: UserWarning: PyTensor could not link to a BLAS installation.

Context for the issue:

Not urgent. Just documenting so it's there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions