Sampling hangs with multiple cores


#1

Hi

I was trying out some example code from another poster and ran into issues while sampling.

When I run the code with no arguments passed to .sample(), the sampling hangs, and I notice 4 files called core.XYZW are created in the same folder as my jupyter notebook. XYZW is some arbitrary integer sequence, e.g. core.2946

When I run the code with .sample(core=1), sampling runs fine.

Any ideas how to fix sampling with multiple cores? Here is the code

import numpy as np
import pymc3 as pm
import matplotlib.pyplot as lt
%matplotlib inline

# Specify number of individuals and covariates
n = 200
p = 2

# Create a fake dataset
true_x = np.random.randn(n,p)
true_intercept = 3
true_coefficients = np.asarray([1.,-2.])
y = true_intercept + np.dot(true_x,true_coefficients) + np.random.randn(n) * 0.1

# Create a mask to apply to fake dataset
mask = np.zeros([n,p],dtype=bool)
mask[0:5,0] = True
print('Missing values of x are:',true_x[0:5,0])
observed_x = np.ma.masked_array(data = true_x, mask=mask)

# Model with prior placed on 'x'
with pm.Model() as model:
    x = pm.Normal('x',observed = observed_x)
    intercept    = pm.Normal('intercept',sd=10)
    coefficients = pm.Normal('coefficients',sd=10,shape = p)
    mean = intercept + pm.math.dot(x,coefficients)
    response = pm.Normal('response',mu=mean,observed=y)

    trace = pm.sample() # changing to pm.sample(cores=1) solves issue, but only uses one core.

# Visualize posterior estimates of missing data
pm.plot_posterior(trace,varnames=['x_missing']

#2

What OS are you on?


#3

linux