SheffieldML / deepGPy

Deep GPs with GPy
BSD 3-Clause "New" or "Revised" License
31 stars 10 forks source link

Problem with special_einsum on mac OSX 10.10.4 Yosemite #3

Open mathDR opened 8 years ago

mathDR commented 8 years ago

If I run the step_fn_demo function as is there is an issue in special_einsum:

Traceback (most recent call last): File "step_fn_demo.py", line 52, in m = ColDeep([layer_X, layer_Y]) File "/Users/danielmarthaler/GPy/GPy/core/parameterization/parameterized.py", line 27, in call self.parameters_changed() File "/Users/danielmarthaler/deepGPy/coldeep.py", line 19, in parameters_changed self.layers[0].feed_forward() File "/Users/danielmarthaler/deepGPy/layers.py", line 354, in feed_forward [l.feed_forward(self.q_of_X_out) for l in self.lower_layers] File "/Users/danielmarthaler/deepGPy/layers.py", line 461, in feed_forward self.previous_layer.feed_backwards(X_mean_grad, X_var_grad) File "/Users/danielmarthaler/deepGPy/layers.py", line 364, in feed_backwards self.backpropagated_gradients(dL_dmean, dL_dvar) File "/Users/danielmarthaler/deepGPy/layers.py", line 223, in backpropagated_gradients dL_dS = special_einsum(self.psi1Kmmi, dL_dvar) File "/Users/danielmarthaler/deepGPy/special_einsum.py", line 54, in special_einsum weave.inline(code, ['N','M','D','res','A','B'], type_converters=weave.converters.blitz, support_code='#include ', _opts) File "/usr/local/lib/python2.7/site-packages/scipy/weave/inline_tools.py", line 366, in inline _kw) File "/usr/local/lib/python2.7/site-packages/scipy/weave/inline_tools.py", line 502, in compile_function exec('import ' + module_name) File "", line 1, in ImportError: dlopen(/Users/danielmarthaler/.cache/scipy/python27_compiled/sc_9354f24db217fdec00d0dd1964056e7a5.so, 2): Symbol not found: ZNSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm Referenced from: /Users/danielmarthaler/.cache/scipy/python27_compiled/sc_9354f24db217fdec00d0dd1964056e7a5.so Expected in: flat namespace in /Users/danielmarthaler/.cache/scipy/python27_compiled/sc_9354f24db217fdec00d0dd1964056e7a5.so

Which basically comes down to my compiler not finding omp.h (I think) which is a known issue elsewhere in the GPy stack

mathDR commented 8 years ago

Not that in layers.py if I comment out (line 223)

dL_dS = special_einsum(self.psi1Kmmi, dL_dvar)

and replace with dL_dS = np.einsum('ij,ik,il->jkl', self.psi1Kmmi, self.psi1Kmmi, dL_dvar)

then everything runs.