提交 8823c219 authored 作者: lamblin's avatar lamblin

Merge pull request #1081 from nouiz/err_msg_debugmode

Add shape and strides info to debugmode error.
......@@ -769,34 +769,10 @@ You can then proceed to the :ref:`windows_basic` or the :ref:`windows_bleeding_e
Alternative: Anaconda 0.8.3 (Linux VM on Windows)
#################################################
ContinuumIO_ provides a free Windows VM with Theano install. The VM is the CentOS6.2 64 bit OS.
- If you do not have VMWare installed, install VMWare player(free): http://www.vmware.com/products/player/
- Download the VM: http://continuum.io/downloads.html
- Follow the instruction on the ContinuumIO website to start the VM
- Configure Theano by executing this:
.. code-block:: bash
echo "[blas]" >> ~/.theanorc
echo "ldflags=" >> ~/.theanorc
- [Optional] To enable the network, go into the VMWare setting for the vm and set the networking to NAT. Start the VM. In the VM, comment all lines in the file /etc/udev/rules.d/70-persistent-net.rules and restart the VM.
- [Optional] to install easy_install:
.. code-block:: bash
wget -c http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
tar -zxf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
sudo /opt/anaconda/bin/python setup.py install
- [Optional] To install pip
.. code-block:: bash
#install setuptools
sudo /opt/anaconda/bin/easy_install pip
ContinuumIO_ was providing a free VM with Theano installed. Now they
provide a new installation system that install itself on Windows. We
don't have the time now to update the docs, so we remove the old
documentations that don't work.
.. _ContinuumIO: http://continuum.io
......
......@@ -147,7 +147,7 @@ class BadThunkOutput(DebugModeError):
val2 = None
"""The value computed by `thunk2`"""
def __init__(self, r, thunk1, val1, thunk2, val2):
def __init__(self, r, thunk1, val1, thunk2, val2, inputs_val=()):
"""Initialize members"""
DebugModeError.__init__(self) # to be compatible with python2.4
self.r = r
......@@ -155,6 +155,7 @@ class BadThunkOutput(DebugModeError):
self.val1 = val1
self.thunk2 = thunk2
self.val2 = val2
self.inputs_val = inputs_val
def offending_op(self):
"""Return the Op class whose c_code and perform
......@@ -171,7 +172,11 @@ class BadThunkOutput(DebugModeError):
print >> sio, "BadThunkOutput"
print >> sio, " variable :", self.r
print >> sio, " Outputs Type:", self.r.type
print >> sio, " Inputs Type :", [i.type for i in self.r.owner.inputs]
print >> sio, " Inputs Type :", [i.type for i in self.r.owner.inputs],
print >> sio, " Inputs Shape:", [getattr(val, 'shape', None)
for val in self.inputs_val]
print >> sio, " Inputs Strides:", [getattr(val, 'strides', None)
for val in self.inputs_val]
print >> sio, " Apply :", self.r.owner
print >> sio, " thunk1 :", self.thunk1
print >> sio, " thunk2 :", self.thunk2
......@@ -1331,9 +1336,11 @@ def _check_preallocated_output(node, thunk, prealloc_modes, def_val,
for r in node.outputs:
if not r.type.values_eq_approx(r_vals[r], storage_map[r][0]):
# TODO: indicate it is not a C/Py problem
inputs_val = [storage_map[inp] for inp in r.owner.inputs]
raise BadThunkOutput(r,
thunk1='Reference value', val1=r_vals[r],
thunk2=thunk_name, val2=storage_map[r][0])
thunk2=thunk_name, val2=storage_map[r][0],
inputs_val=inputs_val)
# Clear storage_map
for r in node.outputs:
......@@ -1911,9 +1918,11 @@ class _Linker(gof.link.LocalLinker):
if not r.type.values_eq_approx(r_vals[r], storage_map[r][0]):
#import pdb; pdb.set_trace()
#r.type.values_eq_approx(r_vals[r], storage_map[r][0])
inputs_val = [storage_map[inp] for inp in r.owner.inputs]
raise BadThunkOutput(r,
thunk1='perform', val1=r_vals[r],
thunk2='c_code', val2=storage_map[r][0])
thunk2='c_code', val2=storage_map[r][0],
inputs_val=inputs_val)
else:
#print >> sys.stderr, i, "DEBUGMODE storing reference output %x" % id(storage_map[r][0])
#retrieve each output from the storage_map
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论