Exception: ('Compilation failed (return status=1)... error after installing PyMC3 for the first time

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'

Oh, I see now it says this on the getting started page:

Python 3.5 (or more recent); we recommend that new users install version 3.5

Is that right? So I should limit myself to Python 3.5?

@billtubbs That information is outdated. Here are the up-to date installation instructions: GitHub - pymc-devs/pymc3: Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Theano

Thanks. Any idea if it’s just the installation instructions that are out of date or whether the getting started tutorial script itself is out of date as well? This is not a great first-time experience for newcomers…

I agree with you that it’s not the best first experience. We will update the instructions soon in there. The rest of the notebook seems to be up to date. Let us know if you find any issues.

I can confirm. I re-installed my environment with Python 3.8 (just to be safe) and the correct installation command linked to above and the getting started example works fine. Thanks for your assistance.

1 Like

Hi! I followed the instruction from Installation Guide (Windows) · pymc-devs/pymc3 Wiki · GitHub but still got the same issue. I’m using python3.8 in conda on Windows. Could someone point out what I could do wrong?

1 Like

Hi I have also followed the windows installation instructions precisely and receive the following exception:

Exception: ('Compilation failed (return status=1): C:\Users\matth\AppData\Local\Temp\ccyTAp8a.s: Assembler messages:\r. C:\Users\matth\AppData\Local\Temp\ccyTAp8a.s:101: Error: invalid register for .seh_savexmm\r. ', ‘FunctionGraph(Elemwise{EQ}(<TensorType(float64, vector)>, <TensorType(int8, (True,))>))’)