I’m completely new to PyMC and this exception occurred after installing for the first time (with Anaconda) and trying to execute this basic example script.
System: Mac OS X 10.14.6
Steps taken to install:
conda create --name pymc python=3.9
conda activate pymc
conda install -c conda-forge pymc3
conda install ipython
ipython
Code entered into iPython console (note the warning after the first statement) and the full exception details:
Python 3.9.1 | packaged by conda-forge | (default, Jan 10 2021, 02:52:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import pymc3 as pm
WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.
In [2]: import numpy as np
In [3]: RANDOM_SEED = 8927
...: np.random.seed(RANDOM_SEED)
In [4]: # True parameter values
...: alpha, sigma = 1, 1
...: beta = [1, 2.5]
...:
...: # Size of dataset
...: size = 100
...:
...: # Predictor variable
...: X1 = np.random.randn(size)
...: X2 = np.random.randn(size) * 0.2
...:
...: # Simulate outcome variable
...: Y = alpha + beta[0] * X1 + beta[1] * X2 + np.random.randn(size) * sigma
In [5]: basic_model = pm.Model()
In [6]: with basic_model:
...:
...: # Priors for unknown model parameters
...: alpha = pm.Normal("alpha", mu=0, sigma=10)
...: beta = pm.Normal("beta", mu=0, sigma=10, shape=2)
...: sigma = pm.HalfNormal("sigma", sigma=1)
...:
...: # Expected value of outcome
...: mu = alpha + beta[0] * X1 + beta[1] * X2
...:
...: # Likelihood (sampling distribution) of observations
...: Y_obs = pm.Normal("Y_obs", mu=mu, sigma=sigma, observed=Y)
...:
You can find the C code in this temporary file: /var/folders/y3/28pc8qrx3dd36zwcys8z1rzc0000gn/T/theano_compilation_error_ykos32pu
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-6-b30e265ab1ff> in <module>
2
3 # Priors for unknown model parameters
----> 4 alpha = pm.Normal("alpha", mu=0, sigma=10)
5 beta = pm.Normal("beta", mu=0, sigma=10, shape=2)
6 sigma = pm.HalfNormal("sigma", sigma=1)
/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/distribution.py in __new__(cls, name, *args, **kwargs)
119 dist = cls.dist(*args, **kwargs, shape=shape)
120 else:
--> 121 dist = cls.dist(*args, **kwargs)
122 return model.Var(name, dist, data, total_size, dims=dims)
123
/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/distribution.py in dist(cls, *args, **kwargs)
128 def dist(cls, *args, **kwargs):
129 dist = object.__new__(cls)
--> 130 dist.__init__(*args, **kwargs)
131 return dist
132
/anaconda3/envs/pymc/lib/python3.9/site-packages/pymc3/distributions/continuous.py in __init__(self, mu, sigma, tau, sd, **kwargs)
487
488 self.mean = self.median = self.mode = self.mu = mu = tt.as_tensor_variable(floatX(mu))
--> 489 self.variance = 1.0 / self.tau
490
491 assert_negative_support(sigma, "sigma", "Normal")
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/tensor/var.py in __rtruediv__(self, other)
174
175 def __rtruediv__(self, other):
--> 176 return theano.tensor.basic.true_div(other, self)
177
178 def __rfloordiv__(self, other):
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in __call__(self, *inputs, **kwargs)
251
252 if config.compute_test_value != "off":
--> 253 compute_test_value(node)
254
255 if self.default_output is not None:
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in compute_test_value(node)
124
125 # Create a thunk that performs the computation
--> 126 thunk = node.op.make_thunk(node, storage_map, compute_map, no_recycling=[])
127 thunk.inputs = [storage_map[v] for v in node.inputs]
128 thunk.outputs = [storage_map[v] for v in node.outputs]
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in make_thunk(self, node, storage_map, compute_map, no_recycling, impl)
632 )
633 try:
--> 634 return self.make_c_thunk(node, storage_map, compute_map, no_recycling)
635 except (NotImplementedError, MethodNotDefined):
636 # We requested the c code, so don't catch the error.
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/graph/op.py in make_c_thunk(self, node, storage_map, compute_map, no_recycling)
598 print(f"Disabling C code for {self} due to unsupported float16")
599 raise NotImplementedError("float16")
--> 600 outputs = cl.make_thunk(
601 input_storage=node_input_storage, output_storage=node_output_storage
602 )
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in make_thunk(self, input_storage, output_storage, storage_map)
1201 """
1202 init_tasks, tasks = self.get_init_tasks()
-> 1203 cthunk, module, in_storage, out_storage, error_storage = self.__compile__(
1204 input_storage, output_storage, storage_map
1205 )
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in __compile__(self, input_storage, output_storage, storage_map)
1136 input_storage = tuple(input_storage)
1137 output_storage = tuple(output_storage)
-> 1138 thunk, module = self.cthunk_factory(
1139 error_storage,
1140 input_storage,
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in cthunk_factory(self, error_storage, in_storage, out_storage, storage_map)
1632 for node in self.node_order:
1633 node.op.prepare_node(node, storage_map, None, "c")
-> 1634 module = get_module_cache().module_from_key(key=key, lnk=self)
1635
1636 vars = self.inputs + self.outputs + self.orphans
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/cmodule.py in module_from_key(self, key, lnk)
1189 try:
1190 location = dlimport_workdir(self.dirname)
-> 1191 module = lnk.compile_cmodule(location)
1192 name = module.__file__
1193 assert name.startswith(location)
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/basic.py in compile_cmodule(self, location)
1541 try:
1542 _logger.debug(f"LOCATION {location}")
-> 1543 module = c_compiler.compile_str(
1544 module_name=mod.code_hash,
1545 src_code=src_code,
/anaconda3/envs/pymc/lib/python3.9/site-packages/theano/link/c/cmodule.py in compile_str(module_name, src_code, location, include_dirs, lib_dirs, libs, preargs, py_module, hide_symbols)
2544 # difficult to read.
2545 compile_stderr = compile_stderr.replace("\n", ". ")
-> 2546 raise Exception(
2547 f"Compilation failed (return status={status}): {compile_stderr}"
2548 )
Exception: ('Compilation failed (return status=1): ld: unknown option: -platform_version. clang-11: error: linker command failed with exit code 1 (use -v to see invocation). ', 'FunctionGraph(Elemwise{true_div,no_inplace}(TensorConstant{1.0}, TensorConstant{0.01}))')
Also, for info:
In [7]: import theano
In [8]: theano.__version__
Out[8]: '1.1.0'