gempy-project / gempy

GemPy is an open-source, Python-based 3-D structural geological modeling software, which allows the implicit (i.e. automatic) creation of complex geological models from interface and orientation data. It also offers support for stochastic modeling to address parameter and model uncertainties.
https://gempy.org
European Union Public License 1.2
972 stars 232 forks source link

memory error at high(ish) resolutions (theano issue?) #186

Closed cfandel closed 5 years ago

cfandel commented 5 years ago

Describe the bug I would like to run a gempy model at a resolution of 200 x 251 x 52 cells. When I do this, I get a very long error message (copied below). When I decrease the resolution to 200 x 251 x 26, there is no problem (but then the resolution is too low for my purposes). Is there any way to enable gempy to compute the model at higher resolutions? Thanks!

To Reproduce See jupyter notebook here: https://github.com/cfandel/gottesacker/blob/master/gempy_v2_isfault.ipynb

The resolution can be set in cell 5, and the error occurs in cell 8.

Error message:

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
scan_perform.pyx in theano.scan_module.scan_perform.perform()

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in rval(p, i, o, n, allow_gc)
    962                  allow_gc=allow_gc):
--> 963             r = p(n, [x[0] for x in i], o)
    964             for o in node.outputs:

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in p(node, args, outs)
    951                                                 outs,
--> 952                                                 self, node)
    953         except (ImportError, theano.gof.cmodule.MissingGXX):

scan_perform.pyx in theano.scan_module.scan_perform.perform()

MemoryError: 

During handling of the above exception, another exception occurred:

MemoryError                               Traceback (most recent call last)
~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\compile\function_module.py in __call__(self, *args, **kwargs)
    902             outputs =\
--> 903                 self.fn() if output_subset is None else\
    904                 self.fn(output_subset=output_subset)

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in rval(p, i, o, n, allow_gc)
    962                  allow_gc=allow_gc):
--> 963             r = p(n, [x[0] for x in i], o)
    964             for o in node.outputs:

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in p(node, args, outs)
    951                                                 outs,
--> 952                                                 self, node)
    953         except (ImportError, theano.gof.cmodule.MissingGXX):

scan_perform.pyx in theano.scan_module.scan_perform.perform()

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\gof\link.py in raise_with_op(node, thunk, exc_info, storage_map)
    324         pass
--> 325     reraise(exc_type, exc_value, exc_trace)
    326 

~\Anaconda3\envs\gp2\lib\site-packages\six.py in reraise(tp, value, tb)
    691             if value.__traceback__ is not tb:
--> 692                 raise value.with_traceback(tb)
    693             raise value

scan_perform.pyx in theano.scan_module.scan_perform.perform()

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in rval(p, i, o, n, allow_gc)
    962                  allow_gc=allow_gc):
--> 963             r = p(n, [x[0] for x in i], o)
    964             for o in node.outputs:

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in p(node, args, outs)
    951                                                 outs,
--> 952                                                 self, node)
    953         except (ImportError, theano.gof.cmodule.MissingGXX):

scan_perform.pyx in theano.scan_module.scan_perform.perform()

MemoryError: 
Apply node that caused the error: for{cpu,Looping grid}(Elemwise{minimum,no_inplace}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, IncSubtensor{Set;:int64:}.0, <TensorType(float64, scalar)>, Range_copy, Covariance at 0_copy, Number of points per surface used to split rest-ref_copy, <TensorType(float64, scalar)>, fault relation matrix_copy, <TensorType(float64, scalar)>, Join.0, InplaceDimShuffle{1,0}.0, Position of the dips_copy, Length of foliations in every series[t], Length of foliations in every series[t+1], All the surface_points points at once_copy, Length of surface_points in every series[t], Length of surface_points in every series[t+1], Grade of the universal drift[t], block matrix[t-1], <TensorType(int32, scalar)>)
Toposort index: 593
Inputs types: [TensorType(int64, scalar), TensorType(int64, vector), TensorType(int64, vector), TensorType(float64, matrix), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(int32, vector), TensorType(float64, scalar), TensorType(int32, matrix), TensorType(float64, scalar), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(float64, matrix), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(float64, 3D), TensorType(int32, scalar)]
Inputs shapes: [(), (1631,), (1631,), (1632, 1807640), (), (), (), (3,), (), (2, 2), (), (1807640, 3), (499, 1807640), (92, 3), (), (), (223, 3), (), (), (), (1, 1, 1807640), ()]
Inputs strides: [(), (8,), (8,), (14461120, 8), (), (), (), (4,), (), (4, 8), (), (24, 8), (8, 3992), (8, 736), (), (), (8, 1784), (), (), (), (14461120, 14461120, 8), ()]
Inputs values: [array(1631, dtype=int64), 'not shown', 'not shown', 'not shown', array(2.), array(0.69876044), array(267.87211448), array([132,  64,  24]), array(4.), array([[0, 0],
       [0, 0]]), array(10.), 'not shown', 'not shown', 'not shown', array(0), array(92), 'not shown', array(0), array(220), array(3), 'not shown', array(0)]
Inputs type_num: [9, 9, 9, 12, 12, 12, 12, 7, 12, 7, 12, 12, 12, 12, 7, 7, 12, 7, 7, 7, 12, 7]
Outputs clients: [[Subtensor{int64::}(for{cpu,Looping grid}.0, Constant{1})]]

Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer):
  File "<ipython-input-8-63b622ce0de2>", line 2, in <module>
    gp.set_interpolation_data(geo_model, output='geology', theano_optimizer='fast_compile') #compile theano and interpolate the input data - if topo, need to set output='geology'
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\gempy_api.py", line 339, in set_interpolation_data
    geo_model.interpolator.compile_th_fn(inplace=inplace)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\interpolator.py", line 721, in compile_th_fn
    self.theano_graph.compute_series(),
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 266, in compute_series
    profile=False
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan.py", line 774, in scan
    condition, outputs, updates = scan_utils.get_updates_and_outputs(fn(*args))
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 1349, in compute_a_series
    Z_x = tif.ifelse(compute_scalar_ctr, self.compute_scalar_field(weights, self.grid_val_T),
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 220, in compute_scalar_field
    return self.scalar_field_at_all(weights, grid_val)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 1030, in scalar_field_at_all
    return_list=True)

Debugprint of the apply node: 
for{cpu,Looping grid} [id A] <TensorType(float64, matrix)> ''   
 |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | |Subtensor{int64} [id C] <TensorType(int64, scalar)> ''   
 | | |Shape [id D] <TensorType(int64, vector)> ''   
 | | | |Subtensor{int64:int64:} [id E] <TensorType(int64, vector)> ''   
 | | |   |Join [id F] <TensorType(int64, vector)> ''   
 | | |   | |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | |ARange{dtype='int64'} [id H] <TensorType(int64, vector)> ''   
 | | |   | | |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   | | | |Shape [id J] <TensorType(int64, vector)> ''   
 | | |   | | | | |Join [id K] <TensorType(float64, matrix)> ''   
 | | |   | | | |   |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |Coordinates of the grid points to interpolate_copy [id L] <TensorType(float64, matrix)>
 | | |   | | | |   |AdvancedSubtensor1 [id M] <TensorType(float64, matrix)> ''   
 | | |   | | | |   | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |   | |Subtensor{int64} [id O] <TensorType(int64, vector)> ''   
 | | |   | | | |   |   |Nonzero [id P] <TensorType(int64, matrix)> ''   
 | | |   | | | |   |   | |AdvancedIncSubtensor1{no_inplace,set} [id Q] <TensorType(int16, vector)> ''   
 | | |   | | | |   |   |   |Alloc [id R] <TensorType(int16, vector)> ''   
 | | |   | | | |   |   |   | |TensorConstant{1} [id S] <TensorType(int16, scalar)>
 | | |   | | | |   |   |   | |Subtensor{int64} [id T] <TensorType(int64, scalar)> ''   
 | | |   | | | |   |   |   |   |Shape [id U] <TensorType(int64, vector)> ''   
 | | |   | | | |   |   |   |   | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |   |   |   |   |Constant{0} [id V] <int64>
 | | |   | | | |   |   |   |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |   |   |CumOp{None, add} [id W] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |     |Join [id X] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |       |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |   |       |TensorConstant{(1,) of 0} [id Y] <TensorType(int8, vector)>
 | | |   | | | |   |   |       |Elemwise{add,no_inplace} [id Z] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |         |Subtensor{:int64:} [id BA] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |         | |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 | | |   | | | |   |   |         | |Constant{-1} [id BC] <int64>
 | | |   | | | |   |   |         |TensorConstant{(1,) of 1} [id BD] <TensorType(int8, (True,))>
 | | |   | | | |   |   |Constant{0} [id V] <int64>
 | | |   | | | |   |RepeatOp{axis=0} [id BE] <TensorType(float64, matrix)> ''   
 | | |   | | | |     |AdvancedSubtensor1 [id BF] <TensorType(float64, matrix)> ''   
 | | |   | | | |     | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |     | |CumOp{None, add} [id W] <TensorType(int32, vector)> ''   
 | | |   | | | |     |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 | | |   | | | |Constant{0} [id V] <int64>
 | | |   | | |Elemwise{true_div,no_inplace} [id BG] <TensorType(float64, scalar)> ''   
 | | |   | |   |InplaceDimShuffle{} [id BH] <TensorType(float64, scalar)> ''   
 | | |   | |   | |InplaceDimShuffle{x} [id BI] <TensorType(float64, (True,))> ''   
 | | |   | |   |   |Elemwise{true_div,no_inplace} [id BJ] <TensorType(float64, scalar)> ''   
 | | |   | |   |     |TensorConstant{1000000000000.0} [id BK] <TensorType(float64, scalar)>
 | | |   | |   |     |Elemwise{add,no_inplace} [id BL] <TensorType(int64, scalar)> ''   
 | | |   | |   |       |Elemwise{add,no_inplace} [id BM] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | |Elemwise{add,no_inplace} [id BN] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | |Subtensor{int64} [id BO] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |Shape [id BP] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | | |Reshape{2} [id BQ] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |InplaceDimShuffle{0,2,1,3} [id BR] <TensorType(float64, (False, False, True, False))> ''   
 | | |   | |   |       | | | |   | |Alloc [id BS] <TensorType(float64, (False, True, False, False))> ''   
 | | |   | |   |       | | | |   |   |Subtensor{int32:int32:, ::} [id BT] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |   | |Position of the dips_copy [id BU] <TensorType(float64, matrix)>
 | | |   | |   |       | | | |   |   | |ScalarFromTensor [id BV] <int32> ''   
 | | |   | |   |       | | | |   |   | | |Length of foliations in every series[t] [id BW] <TensorType(int32, scalar)>
 | | |   | |   |       | | | |   |   | |ScalarFromTensor [id BX] <int32> ''   
 | | |   | |   |       | | | |   |   |   |Length of foliations in every series[t+1] [id BY] <TensorType(int32, scalar)>
 | | |   | |   |       | | | |   |   |TensorConstant{3} [id BZ] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |   |   |Subtensor{int64} [id CB] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |   |   | |Shape [id CC] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |   |   | | |Subtensor{int32:int32:, ::} [id BT] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |   | |Constant{0} [id V] <int64>
 | | |   | |   |       | | | |   |   |Subtensor{int64} [id CD] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |   |     |Shape [id CC] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |   |     |Constant{1} [id CE] <int64>
 | | |   | |   |       | | | |   |MakeVector{dtype='int64'} [id CF] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |     |Elemwise{mul,no_inplace} [id CG] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |     | |Subtensor{int64} [id CB] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |     | |TensorConstant{3} [id BZ] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |     |Elemwise{mul,no_inplace} [id CH] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |       |Subtensor{int64} [id CD] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |       |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |Constant{0} [id V] <int64>
 | | |   | |   |       | | |Subtensor{int64} [id CI] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | |   |Shape [id CJ] <TensorType(int64, vector)> ''   
 | | |   | |   |       | |   | |Subtensor{int32:int32:, ::} [id CK] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | |   |   |AdvancedSubtensor1 [id M] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | |   |   |ScalarFromTensor [id CL] <int32> ''   
 | | |   | |   |       | |   |   | |Length of surface_points in every series[t] [id CM] <TensorType(int32, scalar)>
 | | |   | |   |       | |   |   |ScalarFromTensor [id CN] <int32> ''   
 | | |   | |   |       | |   |     |Length of surface_points in every series[t+1] [id CO] <TensorType(int32, scalar)>
 | | |   | |   |       | |   |Constant{0} [id V] <int64>
 | | |   | |   |       | |Grade of the universal drift[t] [id CP] <TensorType(int32, scalar)>
 | | |   | |   |       |Elemwise{Cast{int32}} [id CQ] <TensorType(int32, scalar)> ''   
 | | |   | |   |         |Subtensor{int64} [id CR] <TensorType(int64, scalar)> ''   
 | | |   | |   |           |Shape [id CS] <TensorType(int64, vector)> ''   
 | | |   | |   |           | |Elemwise{mul,no_inplace} [id CT] <TensorType(float64, matrix)> ''   
 | | |   | |   |           |   |AdvancedSubtensor [id CU] <TensorType(float64, matrix)> ''   
 | | |   | |   |           |   | |block matrix[t-1] [id CV] <TensorType(float64, 3D)>
 | | |   | |   |           |   | |Subtensor{int64} [id CW] <TensorType(int64, vector)> ''   
 | | |   | |   |           |   | | |Nonzero [id CX] <TensorType(int64, matrix)> ''   
 | | |   | |   |           |   | | | |Elemwise{Cast{int8}} [id CY] <TensorType(int8, vector)> ''   
 | | |   | |   |           |   | | |   |Subtensor{::, int8} [id CZ] <TensorType(int32, vector)> ''   
 | | |   | |   |           |   | | |     |fault relation matrix_copy [id DA] <TensorType(int32, matrix)>
 | | |   | |   |           |   | | |     |ScalarFromTensor [id DB] <int8> ''   
 | | |   | |   |           |   | | |       |Elemwise{Cast{int8}} [id DC] <TensorType(int8, scalar)> ''   
 | | |   | |   |           |   | | |         |<TensorType(int32, scalar)> [id DD] <TensorType(int32, scalar)>
 | | |   | |   |           |   | | |Constant{0} [id V] <int64>
 | | |   | |   |           |   | |TensorConstant{0} [id DE] <TensorType(int64, scalar)>
 | | |   | |   |           |   | |SliceConstant{None, None, None} [id DF] <slice>
 | | |   | |   |           |   |InplaceDimShuffle{x,x} [id DG] <TensorType(float64, (True, True))> ''   
 | | |   | |   |           |     |<TensorType(float64, scalar)> [id DH] <TensorType(float64, scalar)>
 | | |   | |   |           |Constant{0} [id V] <int64>
 | | |   | |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   | |MakeVector{dtype='int64'} [id DI] <TensorType(int64, vector)> ''   
 | | |   |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   |Constant{0} [id V] <int64>
 | | |   |Constant{-1} [id BC] <int64>
 | | |Constant{0} [id V] <int64>
 | |Subtensor{int64} [id DJ] <TensorType(int64, scalar)> ''   
 |   |Shape [id DK] <TensorType(int64, vector)> ''   
 |   | |Subtensor{int64::} [id DL] <TensorType(int64, vector)> ''   
 |   |   |Join [id F] <TensorType(int64, vector)> ''   
 |   |   |Constant{1} [id CE] <int64>
 |   |Constant{0} [id V] <int64>
 |Subtensor{:int64:} [id DM] <TensorType(int64, vector)> ''   
 | |Subtensor{int64:int64:} [id E] <TensorType(int64, vector)> ''   
 | |ScalarFromTensor [id DN] <int64> ''   
 |   |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 |Subtensor{:int64:} [id DO] <TensorType(int64, vector)> ''   
 | |Subtensor{int64::} [id DL] <TensorType(int64, vector)> ''   
 | |ScalarFromTensor [id DN] <int64> ''   
 |IncSubtensor{Set;:int64:} [id DP] <TensorType(float64, matrix)> ''   
 | |AllocEmpty{dtype='float64'} [id DQ] <TensorType(float64, matrix)> ''   
 | | |Elemwise{add,no_inplace} [id DR] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id DT] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id DU] <TensorType(float64, matrix)> ''   
 | | |   |   |InplaceDimShuffle{x,0} [id DV] <TensorType(float64, row)> ''   
 | | |   |     |Alloc [id DW] <TensorType(float64, vector)> ''   
 | | |   |       |TensorConstant{0.0} [id DX] <TensorType(float64, scalar)>
 | | |   |       |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   |Constant{0} [id V] <int64>
 | | |Subtensor{int64} [id DY] <TensorType(int64, scalar)> ''   
 | |   |Shape [id DT] <TensorType(int64, vector)> ''   
 | |   |Constant{1} [id CE] <int64>
 | |Rebroadcast{0} [id DU] <TensorType(float64, matrix)> ''   
 | |ScalarFromTensor [id DZ] <int64> ''   
 |   |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''   
 |<TensorType(float64, scalar)> [id EA] <TensorType(float64, scalar)>
 |Range_copy [id EB] <TensorType(float64, scalar)>
 |Covariance at 0_copy [id EC] <TensorType(float64, scalar)>
 |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 |<TensorType(float64, scalar)> [id ED] <TensorType(float64, scalar)>
 |fault relation matrix_copy [id DA] <TensorType(int32, matrix)>
 |<TensorType(float64, scalar)> [id DH] <TensorType(float64, scalar)>
 |Join [id K] <TensorType(float64, matrix)> ''   
 |InplaceDimShuffle{1,0} [id EE] <TensorType(float64, matrix)> ''   
 | |Reshape{2} [id EF] <TensorType(float64, matrix)> ''   
 |   |InplaceDimShuffle{0,2,1,3} [id EG] <TensorType(float64, (False, True, True, False))> ''   
 |   | |Alloc [id EH] <TensorType(float64, (False, True, True, False))> ''   
 |   |   |if{} [id EI] <TensorType(float64, vector)> ''   
 |   |   | |Vector controlling if weights must be recomputed[t] [id EJ] <TensorType(bool, scalar)>
 |   |   | |Reshape{1} [id EK] <TensorType(float64, vector)> 'Dual Kriging parameters'   
 |   |   | |Subtensor{int32:int32:} [id EL] <TensorType(float64, vector)> ''   
 |   |   |   |Weights vector[t-1] [id EM] <TensorType(float64, vector)>
 |   |   |   |ScalarFromTensor [id EN] <int32> ''   
 |   |   |   | |Length of weights in every series[t] [id EO] <TensorType(int32, scalar)>
 |   |   |   |ScalarFromTensor [id EP] <int32> ''   
 |   |   |     |Length of weights in every series[t+1] [id EQ] <TensorType(int32, scalar)>
 |   |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |   |   |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''   
 |   |     |Shape [id ES] <TensorType(int64, vector)> ''   
 |   |     | |if{} [id EI] <TensorType(float64, vector)> ''   
 |   |     |Constant{0} [id V] <int64>
 |   |MakeVector{dtype='int64'} [id ET] <TensorType(int64, vector)> ''   
 |     |Elemwise{mul,no_inplace} [id EU] <TensorType(int64, scalar)> ''   
 |     | |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |     | |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 |     |Elemwise{mul,no_inplace} [id EV] <TensorType(int64, scalar)> ''   
 |       |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''   
 |       |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |Position of the dips_copy [id BU] <TensorType(float64, matrix)>
 |Length of foliations in every series[t] [id BW] <TensorType(int32, scalar)>
 |Length of foliations in every series[t+1] [id BY] <TensorType(int32, scalar)>
 |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 |Length of surface_points in every series[t] [id CM] <TensorType(int32, scalar)>
 |Length of surface_points in every series[t+1] [id CO] <TensorType(int32, scalar)>
 |Grade of the universal drift[t] [id CP] <TensorType(int32, scalar)>
 |block matrix[t-1] [id CV] <TensorType(float64, 3D)>
 |<TensorType(int32, scalar)> [id DD] <TensorType(int32, scalar)>

Inner graphs of the scan ops:

for{cpu,Looping grid} [id A] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int64:int64:} [id EW] <TensorType(float64, vector)> ''   
 > |<TensorType(float64, vector)> [id EX] <TensorType(float64, vector)> -> [id DP]
 > |Elemwise{add,no_inplace} [id EY] <TensorType(float64, vector)> ''   
 > | |Elemwise{add,no_inplace} [id EZ] <TensorType(float64, vector)> ''   
 > | | |Elemwise{add,no_inplace} [id FA] <TensorType(float64, vector)> ''   
 > | | | |Sum{axis=[0], acc_dtype=float64} [id FB] <TensorType(float64, vector)> 'Contribution of the foliations to the potential field at every point of the grid'   
 > | | | |Sum{axis=[0], acc_dtype=float64} [id FC] <TensorType(float64, vector)> 'Contribution of the surface_points to the potential field at every point of the grid'   
 > | | |Sum{axis=[0], acc_dtype=float64} [id FD] <TensorType(float64, vector)> 'Contribution of the universal drift to the potential field at every point of the grid'   
 > | |Sum{axis=[0], acc_dtype=float64} [id FE] <TensorType(float64, vector)> 'Faults contribution'   
 > |ScalarFromTensor [id FF] <int64> ''   
 > | |<TensorType(int64, scalar)> [id FG] <TensorType(int64, scalar)> -> [id DM]
 > |ScalarFromTensor [id FH] <int64> ''   
 >   |<TensorType(int64, scalar)> [id FI] <TensorType(int64, scalar)> -> [id DO]

HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.

During handling of the above exception, another exception occurred:

MemoryError                               Traceback (most recent call last)
<ipython-input-8-63b622ce0de2> in <module>
      3 #gp.set_interpolation_data(geo_model, theano_optimizer='fast_compile') #compile theano and interpolate the input data
      4 
----> 5 sol = gp.compute_model(geo_model, compute_mesh=False)               #compute the model from the data - returns an output (sol) which includes lith and faults, each with two arrays, one for the id of the formation in each cell, one with orientations in each cell
      6 #need to set compute_mesh=True in order to see the interfaces in 3D, but this will cause error if xres does not equal yres
      7 #if compute_mesh=False, model computes geologic map but not interfaces in 3D, and does not cause error

~\Anaconda3\envs\gp2\lib\site-packages\gempy\core\gempy_api.py in compute_model(model, output, compute_mesh, reset_weights, reset_scalar, reset_block, sort_surfaces, debug, set_solutions)
    405         model.interpolator.reset_flow_control_initial_results(reset_weights, reset_scalar, reset_block)
    406 
--> 407         sol = model.interpolator.theano_function(*i)
    408     elif output == 'gravity':
    409         assert isinstance(model.interpolator_gravity, InterpolatorGravity), 'You need to set the gravity interpolator' \

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\compile\function_module.py in __call__(self, *args, **kwargs)
    915                     node=self.fn.nodes[self.fn.position_of_error],
    916                     thunk=thunk,
--> 917                     storage_map=getattr(self.fn, 'storage_map', None))
    918             else:
    919                 # old-style linkers raise their own exceptions

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\gof\link.py in raise_with_op(node, thunk, exc_info, storage_map)
    323         # extra long error message in that case.
    324         pass
--> 325     reraise(exc_type, exc_value, exc_trace)
    326 
    327 

~\Anaconda3\envs\gp2\lib\site-packages\six.py in reraise(tp, value, tb)
    690                 value = tp()
    691             if value.__traceback__ is not tb:
--> 692                 raise value.with_traceback(tb)
    693             raise value
    694         finally:

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\compile\function_module.py in __call__(self, *args, **kwargs)
    901         try:
    902             outputs =\
--> 903                 self.fn() if output_subset is None else\
    904                 self.fn(output_subset=output_subset)
    905         except Exception:

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in rval(p, i, o, n, allow_gc)
    961         def rval(p=p, i=node_input_storage, o=node_output_storage, n=node,
    962                  allow_gc=allow_gc):
--> 963             r = p(n, [x[0] for x in i], o)
    964             for o in node.outputs:
    965                 compute_map[o][0] = True

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in p(node, args, outs)
    950                                                 args,
    951                                                 outs,
--> 952                                                 self, node)
    953         except (ImportError, theano.gof.cmodule.MissingGXX):
    954             p = self.execute

scan_perform.pyx in theano.scan_module.scan_perform.perform()

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\gof\link.py in raise_with_op(node, thunk, exc_info, storage_map)
    323         # extra long error message in that case.
    324         pass
--> 325     reraise(exc_type, exc_value, exc_trace)
    326 
    327 

~\Anaconda3\envs\gp2\lib\site-packages\six.py in reraise(tp, value, tb)
    690                 value = tp()
    691             if value.__traceback__ is not tb:
--> 692                 raise value.with_traceback(tb)
    693             raise value
    694         finally:

scan_perform.pyx in theano.scan_module.scan_perform.perform()

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in rval(p, i, o, n, allow_gc)
    961         def rval(p=p, i=node_input_storage, o=node_output_storage, n=node,
    962                  allow_gc=allow_gc):
--> 963             r = p(n, [x[0] for x in i], o)
    964             for o in node.outputs:
    965                 compute_map[o][0] = True

~\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan_op.py in p(node, args, outs)
    950                                                 args,
    951                                                 outs,
--> 952                                                 self, node)
    953         except (ImportError, theano.gof.cmodule.MissingGXX):
    954             p = self.execute

scan_perform.pyx in theano.scan_module.scan_perform.perform()

MemoryError: 
Apply node that caused the error: for{cpu,Looping grid}(Elemwise{minimum,no_inplace}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, IncSubtensor{Set;:int64:}.0, <TensorType(float64, scalar)>, Range_copy, Covariance at 0_copy, Number of points per surface used to split rest-ref_copy, <TensorType(float64, scalar)>, fault relation matrix_copy, <TensorType(float64, scalar)>, Join.0, InplaceDimShuffle{1,0}.0, Position of the dips_copy, Length of foliations in every series[t], Length of foliations in every series[t+1], All the surface_points points at once_copy, Length of surface_points in every series[t], Length of surface_points in every series[t+1], Grade of the universal drift[t], block matrix[t-1], <TensorType(int32, scalar)>)
Toposort index: 593
Inputs types: [TensorType(int64, scalar), TensorType(int64, vector), TensorType(int64, vector), TensorType(float64, matrix), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(int32, vector), TensorType(float64, scalar), TensorType(int32, matrix), TensorType(float64, scalar), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(float64, matrix), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(int32, scalar), TensorType(float64, 3D), TensorType(int32, scalar)]
Inputs shapes: [(), (1631,), (1631,), (1632, 1807640), (), (), (), (3,), (), (2, 2), (), (1807640, 3), (499, 1807640), (92, 3), (), (), (223, 3), (), (), (), (1, 1, 1807640), ()]
Inputs strides: [(), (8,), (8,), (14461120, 8), (), (), (), (4,), (), (4, 8), (), (24, 8), (8, 3992), (8, 736), (), (), (8, 1784), (), (), (), (14461120, 14461120, 8), ()]
Inputs values: [array(1631, dtype=int64), 'not shown', 'not shown', 'not shown', array(2.), array(0.69876044), array(267.87211448), array([132,  64,  24]), array(4.), array([[0, 0],
       [0, 0]]), array(10.), 'not shown', 'not shown', 'not shown', array(0), array(92), 'not shown', array(0), array(220), array(3), 'not shown', array(0)]
Inputs type_num: [9, 9, 9, 12, 12, 12, 12, 7, 12, 7, 12, 12, 12, 12, 7, 7, 12, 7, 7, 7, 12, 7]
Outputs clients: [[Subtensor{int64::}(for{cpu,Looping grid}.0, Constant{1})]]

Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer):
  File "<ipython-input-8-63b622ce0de2>", line 2, in <module>
    gp.set_interpolation_data(geo_model, output='geology', theano_optimizer='fast_compile') #compile theano and interpolate the input data - if topo, need to set output='geology'
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\gempy_api.py", line 339, in set_interpolation_data
    geo_model.interpolator.compile_th_fn(inplace=inplace)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\interpolator.py", line 721, in compile_th_fn
    self.theano_graph.compute_series(),
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 266, in compute_series
    profile=False
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\theano-1.0.4-py3.7.egg\theano\scan_module\scan.py", line 774, in scan
    condition, outputs, updates = scan_utils.get_updates_and_outputs(fn(*args))
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 1349, in compute_a_series
    Z_x = tif.ifelse(compute_scalar_ctr, self.compute_scalar_field(weights, self.grid_val_T),
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 220, in compute_scalar_field
    return self.scalar_field_at_all(weights, grid_val)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 1030, in scalar_field_at_all
    return_list=True)

Debugprint of the apply node: 
for{cpu,Looping grid} [id A] <TensorType(float64, matrix)> ''   
 |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | |Subtensor{int64} [id C] <TensorType(int64, scalar)> ''   
 | | |Shape [id D] <TensorType(int64, vector)> ''   
 | | | |Subtensor{int64:int64:} [id E] <TensorType(int64, vector)> ''   
 | | |   |Join [id F] <TensorType(int64, vector)> ''   
 | | |   | |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | |ARange{dtype='int64'} [id H] <TensorType(int64, vector)> ''   
 | | |   | | |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   | | | |Shape [id J] <TensorType(int64, vector)> ''   
 | | |   | | | | |Join [id K] <TensorType(float64, matrix)> ''   
 | | |   | | | |   |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |Coordinates of the grid points to interpolate_copy [id L] <TensorType(float64, matrix)>
 | | |   | | | |   |AdvancedSubtensor1 [id M] <TensorType(float64, matrix)> ''   
 | | |   | | | |   | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |   | |Subtensor{int64} [id O] <TensorType(int64, vector)> ''   
 | | |   | | | |   |   |Nonzero [id P] <TensorType(int64, matrix)> ''   
 | | |   | | | |   |   | |AdvancedIncSubtensor1{no_inplace,set} [id Q] <TensorType(int16, vector)> ''   
 | | |   | | | |   |   |   |Alloc [id R] <TensorType(int16, vector)> ''   
 | | |   | | | |   |   |   | |TensorConstant{1} [id S] <TensorType(int16, scalar)>
 | | |   | | | |   |   |   | |Subtensor{int64} [id T] <TensorType(int64, scalar)> ''   
 | | |   | | | |   |   |   |   |Shape [id U] <TensorType(int64, vector)> ''   
 | | |   | | | |   |   |   |   | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |   |   |   |   |Constant{0} [id V] <int64>
 | | |   | | | |   |   |   |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |   |   |CumOp{None, add} [id W] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |     |Join [id X] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |       |TensorConstant{0} [id G] <TensorType(int8, scalar)>
 | | |   | | | |   |   |       |TensorConstant{(1,) of 0} [id Y] <TensorType(int8, vector)>
 | | |   | | | |   |   |       |Elemwise{add,no_inplace} [id Z] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |         |Subtensor{:int64:} [id BA] <TensorType(int32, vector)> ''   
 | | |   | | | |   |   |         | |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 | | |   | | | |   |   |         | |Constant{-1} [id BC] <int64>
 | | |   | | | |   |   |         |TensorConstant{(1,) of 1} [id BD] <TensorType(int8, (True,))>
 | | |   | | | |   |   |Constant{0} [id V] <int64>
 | | |   | | | |   |RepeatOp{axis=0} [id BE] <TensorType(float64, matrix)> ''   
 | | |   | | | |     |AdvancedSubtensor1 [id BF] <TensorType(float64, matrix)> ''   
 | | |   | | | |     | |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 | | |   | | | |     | |CumOp{None, add} [id W] <TensorType(int32, vector)> ''   
 | | |   | | | |     |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 | | |   | | | |Constant{0} [id V] <int64>
 | | |   | | |Elemwise{true_div,no_inplace} [id BG] <TensorType(float64, scalar)> ''   
 | | |   | |   |InplaceDimShuffle{} [id BH] <TensorType(float64, scalar)> ''   
 | | |   | |   | |InplaceDimShuffle{x} [id BI] <TensorType(float64, (True,))> ''   
 | | |   | |   |   |Elemwise{true_div,no_inplace} [id BJ] <TensorType(float64, scalar)> ''   
 | | |   | |   |     |TensorConstant{1000000000000.0} [id BK] <TensorType(float64, scalar)>
 | | |   | |   |     |Elemwise{add,no_inplace} [id BL] <TensorType(int64, scalar)> ''   
 | | |   | |   |       |Elemwise{add,no_inplace} [id BM] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | |Elemwise{add,no_inplace} [id BN] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | |Subtensor{int64} [id BO] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |Shape [id BP] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | | |Reshape{2} [id BQ] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |InplaceDimShuffle{0,2,1,3} [id BR] <TensorType(float64, (False, False, True, False))> ''   
 | | |   | |   |       | | | |   | |Alloc [id BS] <TensorType(float64, (False, True, False, False))> ''   
 | | |   | |   |       | | | |   |   |Subtensor{int32:int32:, ::} [id BT] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |   | |Position of the dips_copy [id BU] <TensorType(float64, matrix)>
 | | |   | |   |       | | | |   |   | |ScalarFromTensor [id BV] <int32> ''   
 | | |   | |   |       | | | |   |   | | |Length of foliations in every series[t] [id BW] <TensorType(int32, scalar)>
 | | |   | |   |       | | | |   |   | |ScalarFromTensor [id BX] <int32> ''   
 | | |   | |   |       | | | |   |   |   |Length of foliations in every series[t+1] [id BY] <TensorType(int32, scalar)>
 | | |   | |   |       | | | |   |   |TensorConstant{3} [id BZ] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |   |   |Subtensor{int64} [id CB] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |   |   | |Shape [id CC] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |   |   | | |Subtensor{int32:int32:, ::} [id BT] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | | | |   |   | |Constant{0} [id V] <int64>
 | | |   | |   |       | | | |   |   |Subtensor{int64} [id CD] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |   |     |Shape [id CC] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |   |     |Constant{1} [id CE] <int64>
 | | |   | |   |       | | | |   |MakeVector{dtype='int64'} [id CF] <TensorType(int64, vector)> ''   
 | | |   | |   |       | | | |     |Elemwise{mul,no_inplace} [id CG] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |     | |Subtensor{int64} [id CB] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |     | |TensorConstant{3} [id BZ] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |     |Elemwise{mul,no_inplace} [id CH] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |       |Subtensor{int64} [id CD] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | | | |       |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 | | |   | |   |       | | | |Constant{0} [id V] <int64>
 | | |   | |   |       | | |Subtensor{int64} [id CI] <TensorType(int64, scalar)> ''   
 | | |   | |   |       | |   |Shape [id CJ] <TensorType(int64, vector)> ''   
 | | |   | |   |       | |   | |Subtensor{int32:int32:, ::} [id CK] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | |   |   |AdvancedSubtensor1 [id M] <TensorType(float64, matrix)> ''   
 | | |   | |   |       | |   |   |ScalarFromTensor [id CL] <int32> ''   
 | | |   | |   |       | |   |   | |Length of surface_points in every series[t] [id CM] <TensorType(int32, scalar)>
 | | |   | |   |       | |   |   |ScalarFromTensor [id CN] <int32> ''   
 | | |   | |   |       | |   |     |Length of surface_points in every series[t+1] [id CO] <TensorType(int32, scalar)>
 | | |   | |   |       | |   |Constant{0} [id V] <int64>
 | | |   | |   |       | |Grade of the universal drift[t] [id CP] <TensorType(int32, scalar)>
 | | |   | |   |       |Elemwise{Cast{int32}} [id CQ] <TensorType(int32, scalar)> ''   
 | | |   | |   |         |Subtensor{int64} [id CR] <TensorType(int64, scalar)> ''   
 | | |   | |   |           |Shape [id CS] <TensorType(int64, vector)> ''   
 | | |   | |   |           | |Elemwise{mul,no_inplace} [id CT] <TensorType(float64, matrix)> ''   
 | | |   | |   |           |   |AdvancedSubtensor [id CU] <TensorType(float64, matrix)> ''   
 | | |   | |   |           |   | |block matrix[t-1] [id CV] <TensorType(float64, 3D)>
 | | |   | |   |           |   | |Subtensor{int64} [id CW] <TensorType(int64, vector)> ''   
 | | |   | |   |           |   | | |Nonzero [id CX] <TensorType(int64, matrix)> ''   
 | | |   | |   |           |   | | | |Elemwise{Cast{int8}} [id CY] <TensorType(int8, vector)> ''   
 | | |   | |   |           |   | | |   |Subtensor{::, int8} [id CZ] <TensorType(int32, vector)> ''   
 | | |   | |   |           |   | | |     |fault relation matrix_copy [id DA] <TensorType(int32, matrix)>
 | | |   | |   |           |   | | |     |ScalarFromTensor [id DB] <int8> ''   
 | | |   | |   |           |   | | |       |Elemwise{Cast{int8}} [id DC] <TensorType(int8, scalar)> ''   
 | | |   | |   |           |   | | |         |<TensorType(int32, scalar)> [id DD] <TensorType(int32, scalar)>
 | | |   | |   |           |   | | |Constant{0} [id V] <int64>
 | | |   | |   |           |   | |TensorConstant{0} [id DE] <TensorType(int64, scalar)>
 | | |   | |   |           |   | |SliceConstant{None, None, None} [id DF] <slice>
 | | |   | |   |           |   |InplaceDimShuffle{x,x} [id DG] <TensorType(float64, (True, True))> ''   
 | | |   | |   |           |     |<TensorType(float64, scalar)> [id DH] <TensorType(float64, scalar)>
 | | |   | |   |           |Constant{0} [id V] <int64>
 | | |   | |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   | |MakeVector{dtype='int64'} [id DI] <TensorType(int64, vector)> ''   
 | | |   |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   |Constant{0} [id V] <int64>
 | | |   |Constant{-1} [id BC] <int64>
 | | |Constant{0} [id V] <int64>
 | |Subtensor{int64} [id DJ] <TensorType(int64, scalar)> ''   
 |   |Shape [id DK] <TensorType(int64, vector)> ''   
 |   | |Subtensor{int64::} [id DL] <TensorType(int64, vector)> ''   
 |   |   |Join [id F] <TensorType(int64, vector)> ''   
 |   |   |Constant{1} [id CE] <int64>
 |   |Constant{0} [id V] <int64>
 |Subtensor{:int64:} [id DM] <TensorType(int64, vector)> ''   
 | |Subtensor{int64:int64:} [id E] <TensorType(int64, vector)> ''   
 | |ScalarFromTensor [id DN] <int64> ''   
 |   |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 |Subtensor{:int64:} [id DO] <TensorType(int64, vector)> ''   
 | |Subtensor{int64::} [id DL] <TensorType(int64, vector)> ''   
 | |ScalarFromTensor [id DN] <int64> ''   
 |IncSubtensor{Set;:int64:} [id DP] <TensorType(float64, matrix)> ''   
 | |AllocEmpty{dtype='float64'} [id DQ] <TensorType(float64, matrix)> ''   
 | | |Elemwise{add,no_inplace} [id DR] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id DT] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id DU] <TensorType(float64, matrix)> ''   
 | | |   |   |InplaceDimShuffle{x,0} [id DV] <TensorType(float64, row)> ''   
 | | |   |     |Alloc [id DW] <TensorType(float64, vector)> ''   
 | | |   |       |TensorConstant{0.0} [id DX] <TensorType(float64, scalar)>
 | | |   |       |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 | | |   |Constant{0} [id V] <int64>
 | | |Subtensor{int64} [id DY] <TensorType(int64, scalar)> ''   
 | |   |Shape [id DT] <TensorType(int64, vector)> ''   
 | |   |Constant{1} [id CE] <int64>
 | |Rebroadcast{0} [id DU] <TensorType(float64, matrix)> ''   
 | |ScalarFromTensor [id DZ] <int64> ''   
 |   |Subtensor{int64} [id DS] <TensorType(int64, scalar)> ''   
 |<TensorType(float64, scalar)> [id EA] <TensorType(float64, scalar)>
 |Range_copy [id EB] <TensorType(float64, scalar)>
 |Covariance at 0_copy [id EC] <TensorType(float64, scalar)>
 |Number of points per surface used to split rest-ref_copy [id BB] <TensorType(int32, vector)>
 |<TensorType(float64, scalar)> [id ED] <TensorType(float64, scalar)>
 |fault relation matrix_copy [id DA] <TensorType(int32, matrix)>
 |<TensorType(float64, scalar)> [id DH] <TensorType(float64, scalar)>
 |Join [id K] <TensorType(float64, matrix)> ''   
 |InplaceDimShuffle{1,0} [id EE] <TensorType(float64, matrix)> ''   
 | |Reshape{2} [id EF] <TensorType(float64, matrix)> ''   
 |   |InplaceDimShuffle{0,2,1,3} [id EG] <TensorType(float64, (False, True, True, False))> ''   
 |   | |Alloc [id EH] <TensorType(float64, (False, True, True, False))> ''   
 |   |   |if{} [id EI] <TensorType(float64, vector)> ''   
 |   |   | |Vector controlling if weights must be recomputed[t] [id EJ] <TensorType(bool, scalar)>
 |   |   | |Reshape{1} [id EK] <TensorType(float64, vector)> 'Dual Kriging parameters'   
 |   |   | |Subtensor{int32:int32:} [id EL] <TensorType(float64, vector)> ''   
 |   |   |   |Weights vector[t-1] [id EM] <TensorType(float64, vector)>
 |   |   |   |ScalarFromTensor [id EN] <int32> ''   
 |   |   |   | |Length of weights in every series[t] [id EO] <TensorType(int32, scalar)>
 |   |   |   |ScalarFromTensor [id EP] <int32> ''   
 |   |   |     |Length of weights in every series[t+1] [id EQ] <TensorType(int32, scalar)>
 |   |   |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |   |   |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |   |   |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''   
 |   |     |Shape [id ES] <TensorType(int64, vector)> ''   
 |   |     | |if{} [id EI] <TensorType(float64, vector)> ''   
 |   |     |Constant{0} [id V] <int64>
 |   |MakeVector{dtype='int64'} [id ET] <TensorType(int64, vector)> ''   
 |     |Elemwise{mul,no_inplace} [id EU] <TensorType(int64, scalar)> ''   
 |     | |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |     | |Subtensor{int64} [id I] <TensorType(int64, scalar)> ''   
 |     |Elemwise{mul,no_inplace} [id EV] <TensorType(int64, scalar)> ''   
 |       |Subtensor{int64} [id ER] <TensorType(int64, scalar)> ''   
 |       |TensorConstant{1} [id CA] <TensorType(int8, scalar)>
 |Position of the dips_copy [id BU] <TensorType(float64, matrix)>
 |Length of foliations in every series[t] [id BW] <TensorType(int32, scalar)>
 |Length of foliations in every series[t+1] [id BY] <TensorType(int32, scalar)>
 |All the surface_points points at once_copy [id N] <TensorType(float64, matrix)>
 |Length of surface_points in every series[t] [id CM] <TensorType(int32, scalar)>
 |Length of surface_points in every series[t+1] [id CO] <TensorType(int32, scalar)>
 |Grade of the universal drift[t] [id CP] <TensorType(int32, scalar)>
 |block matrix[t-1] [id CV] <TensorType(float64, 3D)>
 |<TensorType(int32, scalar)> [id DD] <TensorType(int32, scalar)>

Inner graphs of the scan ops:

for{cpu,Looping grid} [id A] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int64:int64:} [id EW] <TensorType(float64, vector)> ''   
 > |<TensorType(float64, vector)> [id EX] <TensorType(float64, vector)> -> [id DP]
 > |Elemwise{add,no_inplace} [id EY] <TensorType(float64, vector)> ''   
 > | |Elemwise{add,no_inplace} [id EZ] <TensorType(float64, vector)> ''   
 > | | |Elemwise{add,no_inplace} [id FA] <TensorType(float64, vector)> ''   
 > | | | |Sum{axis=[0], acc_dtype=float64} [id FB] <TensorType(float64, vector)> 'Contribution of the foliations to the potential field at every point of the grid'   
 > | | | |Sum{axis=[0], acc_dtype=float64} [id FC] <TensorType(float64, vector)> 'Contribution of the surface_points to the potential field at every point of the grid'   
 > | | |Sum{axis=[0], acc_dtype=float64} [id FD] <TensorType(float64, vector)> 'Contribution of the universal drift to the potential field at every point of the grid'   
 > | |Sum{axis=[0], acc_dtype=float64} [id FE] <TensorType(float64, vector)> 'Faults contribution'   
 > |ScalarFromTensor [id FF] <int64> ''   
 > | |<TensorType(int64, scalar)> [id FG] <TensorType(int64, scalar)> -> [id DM]
 > |ScalarFromTensor [id FH] <int64> ''   
 >   |<TensorType(int64, scalar)> [id FI] <TensorType(int64, scalar)> -> [id DO]

HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.
Apply node that caused the error: for{cpu,Looping}(Elemwise{minimum,no_inplace}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, Subtensor{:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, IncSubtensor{Set;:int64:}.0, Number of points per surface used to split rest-ref, fault relation matrix, <TensorType(float64, scalar)>, <TensorType(float64, scalar)>, Range, Covariance at 0, <TensorType(float64, scalar)>, Nugget effect of gradients, Nugget effect of scalar, <TensorType(float64, scalar)>, <TensorType(float64, scalar)>, <TensorType(bool, vector)>, Coordinates of the grid points to interpolate, All the surface_points points at once, Position of the dips, Angle of every dip, Azimuth, Polarity, Values that the blocks are taking)
Toposort index: 131
Inputs types: [TensorType(int64, scalar), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(bool, vector), TensorType(bool, vector), TensorType(bool, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(int32, vector), TensorType(float64, 4D), TensorType(float64, matrix), TensorType(float64, 3D), TensorType(float64, 3D), TensorType(bool, 3D), TensorType(int32, vector), TensorType(int32, matrix), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(float64, scalar), TensorType(bool, vector), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, matrix), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, vector), TensorType(float64, matrix)]
Inputs shapes: [(), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (2, 1, 1, 1807640), (2, 499), (2, 1, 1807640), (2, 1, 3), (2, 1, 1807640), (3,), (2, 2), (), (), (), (), (), (), (), (), (), (2,), (1807200, 3), (223, 3), (92, 3), (92,), (92,), (92,), (1, 4)]
Inputs strides: [(), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (4,), (1,), (1,), (1,), (4,), (4,), (4,), (4,), (14461120, 14461120, 14461120, 8), (3992, 8), (14461120, 14461120, 8), (24, 24, 8), (1807640, 1807640, 1), (4,), (4, 8), (), (), (), (), (), (), (), (), (), (1,), (24, 8), (8, 1784), (8, 736), (8,), (8,), (8,), (32, 8)]
Inputs values: [array(1, dtype=int64), array([0]), array([220]), array([0]), array([92]), array([0]), array([499]), array([0]), array([3]), array([3]), array([ True]), array([ True]), array([ True]), array([0]), array([0]), array([0]), array([0]), 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', array([132,  64,  24]), array([[0, 0],
       [0, 0]]), array(10.), array(2.), array(0.69876044), array(267.87211448), array(4.), array(0.01), array(1.e-06), array(2.), array(50.), array([False, False]), 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', 'not shown', array([[1., 2., 3., 4.]])]
Inputs type_num: [9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 12, 12, 12, 12, 0, 7, 7, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12]
Outputs clients: [[Subtensor{int64::}(for{cpu,Looping}.0, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.1, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.2, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.3, Constant{1})], [Subtensor{int64::}(for{cpu,Looping}.4, Constant{1})]]

Backtrace when the node is created(use Theano flag traceback.limit=N to make it longer):
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\IPython\core\async_helpers.py", line 67, in _pseudo_sync_runner
    coro.send(None)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\IPython\core\interactiveshell.py", line 3049, in run_cell_async
    interactivity=interactivity, compiler=compiler, result=result)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\IPython\core\interactiveshell.py", line 3214, in run_ast_nodes
    if (yield from self.run_code(code, result)):
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\IPython\core\interactiveshell.py", line 3296, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-8-63b622ce0de2>", line 2, in <module>
    gp.set_interpolation_data(geo_model, output='geology', theano_optimizer='fast_compile') #compile theano and interpolate the input data - if topo, need to set output='geology'
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\gempy_api.py", line 339, in set_interpolation_data
    geo_model.interpolator.compile_th_fn(inplace=inplace)
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\interpolator.py", line 721, in compile_th_fn
    self.theano_graph.compute_series(),
  File "C:\Users\Chloe\Anaconda3\envs\gp2\lib\site-packages\gempy\core\theano\theano_graph_pro.py", line 266, in compute_series
    profile=False

Debugprint of the apply node: 
for{cpu,Looping}.0 [id A] <TensorType(float64, 4D)> ''   
 |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | |Elemwise{minimum,no_inplace} [id C] <TensorType(int64, scalar)> ''   
 | | |Elemwise{minimum,no_inplace} [id D] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id E] <TensorType(int64, scalar)> ''   
 | | | | |Elemwise{minimum,no_inplace} [id F] <TensorType(int64, scalar)> ''   
 | | | | | |Elemwise{minimum,no_inplace} [id G] <TensorType(int64, scalar)> ''   
 | | | | | | |Elemwise{minimum,no_inplace} [id H] <TensorType(int64, scalar)> ''   
 | | | | | | | |Elemwise{minimum,no_inplace} [id I] <TensorType(int64, scalar)> ''   
 | | | | | | | | |Elemwise{minimum,no_inplace} [id J] <TensorType(int64, scalar)> ''   
 | | | | | | | | | |Elemwise{minimum,no_inplace} [id K] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | |Elemwise{minimum,no_inplace} [id L] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id M] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id N] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id O] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | | |Elemwise{minimum,no_inplace} [id P] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | | | |Subtensor{int64} [id Q] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | | | | |Shape [id R] <TensorType(int64, vector)> ''   
 | | | | | | | | | | | | | | | | | |Subtensor{int64:int64:} [id S] <TensorType(int32, vector)> 'Length of surface_points in every series[0:-1]'   
 | | | | | | | | | | | | | | | | |Constant{0} [id T] <int64>
 | | | | | | | | | | | | | | | |Subtensor{int64} [id U] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | | |   |Shape [id V] <TensorType(int64, vector)> ''   
 | | | | | | | | | | | | | | |   | |Subtensor{int64::} [id W] <TensorType(int32, vector)> 'Length of surface_points in every series[1:]'   
 | | | | | | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | | | | | | |Subtensor{int64} [id X] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | | |   |Shape [id Y] <TensorType(int64, vector)> ''   
 | | | | | | | | | | | | | |   | |Subtensor{int64:int64:} [id Z] <TensorType(int32, vector)> 'Length of foliations in every series[0:-1]'   
 | | | | | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | | | | | |Subtensor{int64} [id BA] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | | |   |Shape [id BB] <TensorType(int64, vector)> ''   
 | | | | | | | | | | | | |   | |Subtensor{int64::} [id BC] <TensorType(int32, vector)> 'Length of foliations in every series[1:]'   
 | | | | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | | | | |Subtensor{int64} [id BD] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | | |   |Shape [id BE] <TensorType(int64, vector)> ''   
 | | | | | | | | | | | |   | |Subtensor{int64:int64:} [id BF] <TensorType(int32, vector)> 'Length of weights in every series[0:-1]'   
 | | | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | | | |Subtensor{int64} [id BG] <TensorType(int64, scalar)> ''   
 | | | | | | | | | | |   |Shape [id BH] <TensorType(int64, vector)> ''   
 | | | | | | | | | | |   | |Subtensor{int64::} [id BI] <TensorType(int32, vector)> 'Length of weights in every series[1:]'   
 | | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | | |Subtensor{int64} [id BJ] <TensorType(int64, scalar)> ''   
 | | | | | | | | | |   |Shape [id BK] <TensorType(int64, vector)> ''   
 | | | | | | | | | |   | |Subtensor{int64:int64:} [id BL] <TensorType(int32, vector)> 'List with the number of surfaces[0:-1]'   
 | | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | | |Subtensor{int64} [id BM] <TensorType(int64, scalar)> ''   
 | | | | | | | | |   |Shape [id BN] <TensorType(int64, vector)> ''   
 | | | | | | | | |   | |Subtensor{int64::} [id BO] <TensorType(int32, vector)> 'List with the number of surfaces[1:]'   
 | | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | | |Subtensor{int64} [id BP] <TensorType(int64, scalar)> ''   
 | | | | | | | |   |Shape [id BQ] <TensorType(int64, vector)> ''   
 | | | | | | | |   | |Subtensor{int64::} [id BR] <TensorType(int32, vector)> 'Grade of the universal drift[0:]'   
 | | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | | |Subtensor{int64} [id BS] <TensorType(int64, scalar)> ''   
 | | | | | | |   |Shape [id BT] <TensorType(int64, vector)> ''   
 | | | | | | |   | |Subtensor{int64::} [id BU] <TensorType(bool, vector)> 'Vector controlling if weights must be recomputed[0:]'   
 | | | | | | |   |Constant{0} [id T] <int64>
 | | | | | | |Subtensor{int64} [id BV] <TensorType(int64, scalar)> ''   
 | | | | | |   |Shape [id BW] <TensorType(int64, vector)> ''   
 | | | | | |   | |Subtensor{int64::} [id BX] <TensorType(bool, vector)> 'Vector controlling if scalar matrix must be recomputed[0:]'   
 | | | | | |   |Constant{0} [id T] <int64>
 | | | | | |Subtensor{int64} [id BY] <TensorType(int64, scalar)> ''   
 | | | | |   |Shape [id BZ] <TensorType(int64, vector)> ''   
 | | | | |   | |Subtensor{int64::} [id CA] <TensorType(bool, vector)> 'Vector controlling if block matrix must be recomputed[0:]'   
 | | | | |   |Constant{0} [id T] <int64>
 | | | | |Subtensor{int64} [id CB] <TensorType(int64, scalar)> ''   
 | | | |   |Shape [id CC] <TensorType(int64, vector)> ''   
 | | | |   | |Subtensor{int64::} [id CD] <TensorType(int32, vector)> 'The series (fault) is finite[0:]'   
 | | | |   |Constant{0} [id T] <int64>
 | | | |Subtensor{int64} [id CE] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id CF] <TensorType(int64, vector)> ''   
 | | |   | |Subtensor{int64::} [id CG] <TensorType(int32, vector)> ''   
 | | |   |   |<TensorType(int32, vector)> [id CH] <TensorType(int32, vector)>
 | | |   |   |Constant{0} [id T] <int64>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id CI] <TensorType(int64, scalar)> ''   
 | |   |Shape [id CJ] <TensorType(int64, vector)> ''   
 | |   | |Subtensor{int64::} [id CK] <TensorType(int32, vector)> ''   
 | |   |   |<TensorType(int32, vector)> [id CL] <TensorType(int32, vector)>
 | |   |   |Constant{0} [id T] <int64>
 | |   |Constant{0} [id T] <int64>
 | |TensorConstant{5000} [id CM] <TensorType(int64, scalar)>
 |Subtensor{:int64:} [id CN] <TensorType(int32, vector)> ''   
 | |Subtensor{int64:int64:} [id S] <TensorType(int32, vector)> 'Length of surface_points in every series[0:-1]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |   |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 |Subtensor{:int64:} [id CP] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id W] <TensorType(int32, vector)> 'Length of surface_points in every series[1:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CQ] <TensorType(int32, vector)> ''   
 | |Subtensor{int64:int64:} [id Z] <TensorType(int32, vector)> 'Length of foliations in every series[0:-1]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CR] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id BC] <TensorType(int32, vector)> 'Length of foliations in every series[1:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CS] <TensorType(int32, vector)> ''   
 | |Subtensor{int64:int64:} [id BF] <TensorType(int32, vector)> 'Length of weights in every series[0:-1]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CT] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id BI] <TensorType(int32, vector)> 'Length of weights in every series[1:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CU] <TensorType(int32, vector)> ''   
 | |Subtensor{int64:int64:} [id BL] <TensorType(int32, vector)> 'List with the number of surfaces[0:-1]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CV] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id BO] <TensorType(int32, vector)> 'List with the number of surfaces[1:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CW] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id BR] <TensorType(int32, vector)> 'Grade of the universal drift[0:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CX] <TensorType(bool, vector)> ''   
 | |Subtensor{int64::} [id BU] <TensorType(bool, vector)> 'Vector controlling if weights must be recomputed[0:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CY] <TensorType(bool, vector)> ''   
 | |Subtensor{int64::} [id BX] <TensorType(bool, vector)> 'Vector controlling if scalar matrix must be recomputed[0:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id CZ] <TensorType(bool, vector)> ''   
 | |Subtensor{int64::} [id CA] <TensorType(bool, vector)> 'Vector controlling if block matrix must be recomputed[0:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id DA] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id CD] <TensorType(int32, vector)> 'The series (fault) is finite[0:]'   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id DB] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id CG] <TensorType(int32, vector)> ''   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id DC] <TensorType(int32, vector)> ''   
 | |Subtensor{int64::} [id CK] <TensorType(int32, vector)> ''   
 | |ScalarFromTensor [id CO] <int64> ''   
 |Subtensor{:int64:} [id DD] <TensorType(int32, vector)> ''   
 | |TensorConstant{[   0    1..4998 4999]} [id DE] <TensorType(int32, vector)>
 | |ScalarFromTensor [id CO] <int64> ''   
 |IncSubtensor{Set;:int64:} [id DF] <TensorType(float64, 4D)> ''   
 | |AllocEmpty{dtype='float64'} [id DG] <TensorType(float64, 4D)> ''   
 | | |Elemwise{add,no_inplace} [id DH] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id DI] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id DJ] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id DK] <TensorType(float64, 4D)> ''   
 | | |   |   |InplaceDimShuffle{x,0,1,2} [id DL] <TensorType(float64, (True, False, False, False))> ''   
 | | |   |     |block matrix [id DM] <TensorType(float64, 3D)>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id DN] <TensorType(int64, scalar)> ''   
 | | | |Shape [id DJ] <TensorType(int64, vector)> ''   
 | | | |Constant{1} [id DO] <int64>
 | | |Subtensor{int64} [id DP] <TensorType(int64, scalar)> ''   
 | | | |Shape [id DJ] <TensorType(int64, vector)> ''   
 | | | |Constant{2} [id DQ] <int64>
 | | |Subtensor{int64} [id DR] <TensorType(int64, scalar)> ''   
 | |   |Shape [id DJ] <TensorType(int64, vector)> ''   
 | |   |Constant{3} [id DS] <int64>
 | |Rebroadcast{0} [id DK] <TensorType(float64, 4D)> ''   
 | |ScalarFromTensor [id DT] <int64> ''   
 |   |Subtensor{int64} [id DI] <TensorType(int64, scalar)> ''   
 |IncSubtensor{Set;:int64:} [id DU] <TensorType(float64, matrix)> ''   
 | |AllocEmpty{dtype='float64'} [id DV] <TensorType(float64, matrix)> ''   
 | | |Elemwise{add,no_inplace} [id DW] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id DX] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id DY] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id DZ] <TensorType(float64, matrix)> ''   
 | | |   |   |InplaceDimShuffle{x,0} [id EA] <TensorType(float64, row)> ''   
 | | |   |     |Weights vector [id EB] <TensorType(float64, vector)>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id EC] <TensorType(int64, scalar)> ''   
 | |   |Shape [id DY] <TensorType(int64, vector)> ''   
 | |   |Constant{1} [id DO] <int64>
 | |Rebroadcast{0} [id DZ] <TensorType(float64, matrix)> ''   
 | |ScalarFromTensor [id ED] <int64> ''   
 |   |Subtensor{int64} [id DX] <TensorType(int64, scalar)> ''   
 |IncSubtensor{Set;:int64:} [id EE] <TensorType(float64, 3D)> ''   
 | |AllocEmpty{dtype='float64'} [id EF] <TensorType(float64, 3D)> ''   
 | | |Elemwise{add,no_inplace} [id EG] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id EH] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id EI] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id EJ] <TensorType(float64, 3D)> ''   
 | | |   |   |InplaceDimShuffle{x,0,1} [id EK] <TensorType(float64, (True, False, False))> ''   
 | | |   |     |Scalar matrix [id EL] <TensorType(float64, matrix)>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id EM] <TensorType(int64, scalar)> ''   
 | | | |Shape [id EI] <TensorType(int64, vector)> ''   
 | | | |Constant{1} [id DO] <int64>
 | | |Subtensor{int64} [id EN] <TensorType(int64, scalar)> ''   
 | |   |Shape [id EI] <TensorType(int64, vector)> ''   
 | |   |Constant{2} [id DQ] <int64>
 | |Rebroadcast{0} [id EJ] <TensorType(float64, 3D)> ''   
 | |ScalarFromTensor [id EO] <int64> ''   
 |   |Subtensor{int64} [id EH] <TensorType(int64, scalar)> ''   
 |IncSubtensor{Set;:int64:} [id EP] <TensorType(float64, 3D)> ''   
 | |AllocEmpty{dtype='float64'} [id EQ] <TensorType(float64, 3D)> ''   
 | | |Elemwise{add,no_inplace} [id ER] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id ES] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id ET] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id EU] <TensorType(float64, 3D)> ''   
 | | |   |   |InplaceDimShuffle{x,0,1} [id EV] <TensorType(float64, (True, False, False))> ''   
 | | |   |     |Alloc [id EW] <TensorType(float64, matrix)> ''   
 | | |   |       |TensorConstant{0.0} [id EX] <TensorType(float64, scalar)>
 | | |   |       |Subtensor{int64} [id EY] <TensorType(int64, scalar)> ''   
 | | |   |       | |Shape [id EZ] <TensorType(int64, vector)> ''   
 | | |   |       | | |<TensorType(int32, vector)> [id CH] <TensorType(int32, vector)>
 | | |   |       | |Constant{0} [id T] <int64>
 | | |   |       |Subtensor{int64} [id FA] <TensorType(int32, scalar)> ''   
 | | |   |         |List with the number of surfaces [id FB] <TensorType(int32, vector)>
 | | |   |         |Constant{-1} [id FC] <int64>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id FD] <TensorType(int64, scalar)> ''   
 | | | |Shape [id ET] <TensorType(int64, vector)> ''   
 | | | |Constant{1} [id DO] <int64>
 | | |Subtensor{int64} [id FE] <TensorType(int64, scalar)> ''   
 | |   |Shape [id ET] <TensorType(int64, vector)> ''   
 | |   |Constant{2} [id DQ] <int64>
 | |Rebroadcast{0} [id EU] <TensorType(float64, 3D)> ''   
 | |ScalarFromTensor [id FF] <int64> ''   
 |   |Subtensor{int64} [id ES] <TensorType(int64, scalar)> ''   
 |IncSubtensor{Set;:int64:} [id FG] <TensorType(bool, 3D)> ''   
 | |AllocEmpty{dtype='bool'} [id FH] <TensorType(bool, 3D)> ''   
 | | |Elemwise{add,no_inplace} [id FI] <TensorType(int64, scalar)> ''   
 | | | |Elemwise{minimum,no_inplace} [id B] <TensorType(int64, scalar)> ''   
 | | | |Subtensor{int64} [id FJ] <TensorType(int64, scalar)> ''   
 | | |   |Shape [id FK] <TensorType(int64, vector)> ''   
 | | |   | |Rebroadcast{0} [id FL] <TensorType(bool, 3D)> ''   
 | | |   |   |InplaceDimShuffle{x,0,1} [id FM] <TensorType(bool, (True, False, False))> ''   
 | | |   |     |mask matrix [id FN] <TensorType(bool, matrix)>
 | | |   |Constant{0} [id T] <int64>
 | | |Subtensor{int64} [id FO] <TensorType(int64, scalar)> ''   
 | | | |Shape [id FK] <TensorType(int64, vector)> ''   
 | | | |Constant{1} [id DO] <int64>
 | | |Subtensor{int64} [id FP] <TensorType(int64, scalar)> ''   
 | |   |Shape [id FK] <TensorType(int64, vector)> ''   
 | |   |Constant{2} [id DQ] <int64>
 | |Rebroadcast{0} [id FL] <TensorType(bool, 3D)> ''   
 | |ScalarFromTensor [id FQ] <int64> ''   
 |   |Subtensor{int64} [id FJ] <TensorType(int64, scalar)> ''   
 |Number of points per surface used to split rest-ref [id FR] <TensorType(int32, vector)>
 |fault relation matrix [id FS] <TensorType(int32, matrix)>
 |<TensorType(float64, scalar)> [id FT] <TensorType(float64, scalar)>
 |<TensorType(float64, scalar)> [id FU] <TensorType(float64, scalar)>
 |Range [id FV] <TensorType(float64, scalar)>
 |Covariance at 0 [id FW] <TensorType(float64, scalar)>
 |<TensorType(float64, scalar)> [id FX] <TensorType(float64, scalar)>
 |Nugget effect of gradients [id FY] <TensorType(float64, scalar)>
 |Nugget effect of scalar [id FZ] <TensorType(float64, scalar)>
 |<TensorType(float64, scalar)> [id GA] <TensorType(float64, scalar)>
 |<TensorType(float64, scalar)> [id GB] <TensorType(float64, scalar)>
 |<TensorType(bool, vector)> [id GC] <TensorType(bool, vector)>
 |Coordinates of the grid points to interpolate [id GD] <TensorType(float64, matrix)>
 |All the surface_points points at once [id GE] <TensorType(float64, matrix)>
 |Position of the dips [id GF] <TensorType(float64, matrix)>
 |Angle of every dip [id GG] <TensorType(float64, vector)>
 |Azimuth [id GH] <TensorType(float64, vector)>
 |Polarity [id GI] <TensorType(float64, vector)>
 |Values that the blocks are taking [id GJ] <TensorType(float64, matrix)>
for{cpu,Looping}.1 [id A] <TensorType(float64, matrix)> ''   
for{cpu,Looping}.2 [id A] <TensorType(float64, 3D)> ''   
for{cpu,Looping}.3 [id A] <TensorType(float64, 3D)> ''   
for{cpu,Looping}.4 [id A] <TensorType(bool, 3D)> ''   

Inner graphs of the scan ops:

for{cpu,Looping}.0 [id A] <TensorType(float64, 4D)> ''   
 >IncSubtensor{Set;int32, ::} [id GK] <TensorType(float64, 3D)> ''   
 > |block matrix[t-1] [id GL] <TensorType(float64, 3D)> -> [id DF]
 > |if{} [id GM] <TensorType(float64, matrix)> ''   
 > | |Vector controlling if block matrix must be recomputed[t] [id GN] <TensorType(bool, scalar)> -> [id CZ]
 > | |if{} [id GO] <TensorType(float64, matrix)> ''   
 > | | |The series (fault) is finite[t] [id GP] <TensorType(int32, scalar)> -> [id DA]
 > | | |Sum{axis=[0], acc_dtype=float64} [id GQ] <TensorType(float64, matrix)> 'The chunk of block model of a specific series'   
 > | | |Sum{axis=[0], acc_dtype=float64} [id GR] <TensorType(float64, matrix)> 'The chunk of block model of a specific series'   
 > | |Subtensor{int32, ::} [id GS] <TensorType(float64, matrix)> ''   
 > |   |block matrix[t-1] [id GL] <TensorType(float64, 3D)> -> [id DF]
 > |   |ScalarFromTensor [id GT] <int32> ''   
 > |     |<TensorType(int32, scalar)> [id GU] <TensorType(int32, scalar)> -> [id DD]
 > |ScalarFromTensor [id GT] <int32> ''   
 >IncSubtensor{Set;int32:int32:} [id GV] <TensorType(float64, vector)> ''   
 > |Weights vector[t-1] [id GW] <TensorType(float64, vector)> -> [id DU]
 > |if{} [id GX] <TensorType(float64, vector)> ''   
 > | |Vector controlling if weights must be recomputed[t] [id GY] <TensorType(bool, scalar)> -> [id CX]
 > | |Reshape{1} [id GZ] <TensorType(float64, vector)> 'Dual Kriging parameters'   
 > | |Subtensor{int32:int32:} [id HA] <TensorType(float64, vector)> ''   
 > |   |Weights vector[t-1] [id GW] <TensorType(float64, vector)> -> [id DU]
 > |   |ScalarFromTensor [id HB] <int32> ''   
 > |   | |Length of weights in every series[t] [id HC] <TensorType(int32, scalar)> -> [id CS]
 > |   |ScalarFromTensor [id HD] <int32> ''   
 > |     |Length of weights in every series[t+1] [id HE] <TensorType(int32, scalar)> -> [id CT]
 > |ScalarFromTensor [id HB] <int32> ''   
 > |ScalarFromTensor [id HD] <int32> ''   
 >IncSubtensor{Set;int32} [id HF] <TensorType(float64, matrix)> ''   
 > |Scalar matrix[t-1] [id HG] <TensorType(float64, matrix)> -> [id EE]
 > |if{} [id HH] <TensorType(float64, vector)> ''   
 > | |Vector controlling if scalar matrix must be recomputed[t] [id HI] <TensorType(bool, scalar)> -> [id CY]
 > | |Subtensor{int64} [id HJ] <TensorType(float64, vector)> 'Value of the potential field at every point'   
 > | |Subtensor{int32} [id HK] <TensorType(float64, vector)> ''   
 > |   |Scalar matrix[t-1] [id HG] <TensorType(float64, matrix)> -> [id EE]
 > |   |ScalarFromTensor [id GT] <int32> ''   
 > |ScalarFromTensor [id GT] <int32> ''   
 >AdvancedIncSubtensor{inplace=False,  set_instead_of_inc=True} [id HL] <TensorType(float64, matrix)> ''   
 > |<TensorType(float64, matrix)> [id HM] <TensorType(float64, matrix)> -> [id EP]
 > |AdvancedSubtensor1 [id HN] <TensorType(float64, vector)> ''   
 > | |Subtensor{int64:int64:} [id HO] <TensorType(float64, vector)> ''   
 > | | |if{} [id HH] <TensorType(float64, vector)> ''   
 > | | |ScalarFromTensor [id HP] <int64> ''   
 > | | | |Elemwise{mul,no_inplace} [id HQ] <TensorType(int64, scalar)> ''   
 > | | |   |TensorConstant{-2} [id HR] <TensorType(int8, scalar)>
 > | | |   |Elemwise{sub,no_inplace} [id HS] <TensorType(int64, scalar)> ''   
 > | | |     |Subtensor{int64} [id HT] <TensorType(int64, scalar)> ''   
 > | | |     | |Shape [id HU] <TensorType(int64, vector)> ''   
 > | | |     | | |All the surface_points points at once_copy [id HV] <TensorType(float64, matrix)> -> [id GE]
 > | | |     | |Constant{0} [id HW] <int64>
 > | | |     |Subtensor{int64} [id HX] <TensorType(int64, scalar)> ''   
 > | | |       |Shape [id HY] <TensorType(int64, vector)> ''   
 > | | |       | |Number of points per surface used to split rest-ref_copy [id HZ] <TensorType(int32, vector)> -> [id FR]
 > | | |       |Constant{0} [id HW] <int64>
 > | | |ScalarFromTensor [id IA] <int64> ''   
 > | |   |Elemwise{neg,no_inplace} [id IB] <TensorType(int64, scalar)> ''   
 > | |     |Elemwise{sub,no_inplace} [id HS] <TensorType(int64, scalar)> ''   
 > | |Subtensor{int32:int32:} [id IC] <TensorType(int32, vector)> ''   
 > |   |CumOp{None, add} [id ID] <TensorType(int32, vector)> 'Number of points per surfaces after rest-ref. This is used for finding the differentsurface points withing a layer.'   
 > |   |ScalarFromTensor [id IE] <int32> ''   
 > |   | |List with the number of surfaces[t] [id IF] <TensorType(int32, scalar)> -> [id CU]
 > |   |ScalarFromTensor [id IG] <int32> ''   
 > |     |List with the number of surfaces[t+1] [id IH] <TensorType(int32, scalar)> -> [id CV]
 > |<TensorType(int32, scalar)> [id GU] <TensorType(int32, scalar)> -> [id DD]
 > |Elemwise{sub,no_inplace} [id II] <TensorType(int32, vector)> ''   
 >   |Subtensor{int32:int32:} [id IJ] <TensorType(int32, vector)> ''   
 >   | |TensorConstant{[   1    2..4998 4999]} [id IK] <TensorType(int32, vector)>
 >   | |ScalarFromTensor [id IE] <int32> ''   
 >   | |ScalarFromTensor [id IG] <int32> ''   
 >   |TensorConstant{(1,) of 1} [id IL] <TensorType(int8, (True,))>
 >IncSubtensor{Set;int32, ::} [id IM] <TensorType(bool, matrix)> ''   
 > |IncSubtensor{Set;int32, ::} [id IN] <TensorType(bool, matrix)> ''   
 > | |mask matrix[t-1] [id IO] <TensorType(bool, matrix)> -> [id FG]
 > | |if{} [id IP] <TensorType(bool, vector)> ''   
 > | | |<TensorType(int32, scalar)> [id IQ] <TensorType(int32, scalar)> -> [id DC]
 > | | |Elemwise{gt,no_inplace} [id IR] <TensorType(bool, vector)> ''   
 > | | | |if{} [id HH] <TensorType(float64, vector)> ''   
 > | | | |InplaceDimShuffle{x} [id IS] <TensorType(float64, (True,))> ''   
 > | | |   |MaxAndArgmax{axis=(0,)}.0 [id IT] <TensorType(float64, scalar)> 'max'   
 > | | |Subtensor{int32, ::} [id IU] <TensorType(bool, vector)> ''   
 > | |   |mask matrix[t-1] [id IO] <TensorType(bool, matrix)> -> [id FG]
 > | |   |ScalarFromTensor [id IV] <int32> ''   
 > | |     |Elemwise{sub,no_inplace} [id IW] <TensorType(int32, scalar)> ''   
 > | |       |<TensorType(int32, scalar)> [id GU] <TensorType(int32, scalar)> -> [id DD]
 > | |       |TensorConstant{1} [id IX] <TensorType(int8, scalar)>
 > | |ScalarFromTensor [id IV] <int32> ''   
 > |if{} [id IY] <TensorType(bool, vector)> ''   
 > | |<TensorType(int32, scalar)> [id IZ] <TensorType(int32, scalar)> -> [id DB]
 > | |Elemwise{gt,no_inplace} [id JA] <TensorType(bool, vector)> ''   
 > | | |if{} [id HH] <TensorType(float64, vector)> ''   
 > | | |InplaceDimShuffle{x} [id JB] <TensorType(float64, (True,))> ''   
 > | |   |Elemwise{neg,no_inplace} [id JC] <TensorType(float64, scalar)> ''   
 > | |     |MaxAndArgmax{axis=(0,)}.0 [id JD] <TensorType(float64, scalar)> 'max'   
 > | |Elemwise{mul,no_inplace} [id JE] <TensorType(bool, vector)> ''   
 > |   |InplaceDimShuffle{x} [id JF] <TensorType(bool, (True,))> ''   
 > |   | |Elemwise{invert,no_inplace} [id JG] <TensorType(bool, scalar)> ''   
 > |   |   |Subtensor{int32} [id JH] <TensorType(bool, scalar)> ''   
 > |   |     |<TensorType(bool, vector)> [id JI] <TensorType(bool, vector)> -> [id GC]
 > |   |     |ScalarFromTensor [id GT] <int32> ''   
 > |   |Elemwise{second,no_inplace} [id JJ] <TensorType(bool, vector)> ''   
 > |     |if{} [id HH] <TensorType(float64, vector)> ''   
 > |     |TensorConstant{(1,) of True} [id JK] <TensorType(bool, (True,))>
 > |ScalarFromTensor [id GT] <int32> ''   

for{cpu,Looping}.1 [id A] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int32, ::} [id GK] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32:int32:} [id GV] <TensorType(float64, vector)> ''   
 >IncSubtensor{Set;int32} [id HF] <TensorType(float64, matrix)> ''   
 >AdvancedIncSubtensor{inplace=False,  set_instead_of_inc=True} [id HL] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int32, ::} [id IM] <TensorType(bool, matrix)> ''   

for{cpu,Looping}.2 [id A] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32, ::} [id GK] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32:int32:} [id GV] <TensorType(float64, vector)> ''   
 >IncSubtensor{Set;int32} [id HF] <TensorType(float64, matrix)> ''   
 >AdvancedIncSubtensor{inplace=False,  set_instead_of_inc=True} [id HL] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int32, ::} [id IM] <TensorType(bool, matrix)> ''   

for{cpu,Looping}.3 [id A] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32, ::} [id GK] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32:int32:} [id GV] <TensorType(float64, vector)> ''   
 >IncSubtensor{Set;int32} [id HF] <TensorType(float64, matrix)> ''   
 >AdvancedIncSubtensor{inplace=False,  set_instead_of_inc=True} [id HL] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int32, ::} [id IM] <TensorType(bool, matrix)> ''   

for{cpu,Looping}.4 [id A] <TensorType(bool, 3D)> ''   
 >IncSubtensor{Set;int32, ::} [id GK] <TensorType(float64, 3D)> ''   
 >IncSubtensor{Set;int32:int32:} [id GV] <TensorType(float64, vector)> ''   
 >IncSubtensor{Set;int32} [id HF] <TensorType(float64, matrix)> ''   
 >AdvancedIncSubtensor{inplace=False,  set_instead_of_inc=True} [id HL] <TensorType(float64, matrix)> ''   
 >IncSubtensor{Set;int32, ::} [id IM] <TensorType(bool, matrix)> ''   

Storage map footprint:
 - Coordinates of the grid points to interpolate, Input, Shape: (1807200, 3), ElemSize: 8 Byte(s), TotalSize: 43372800 Byte(s)
 - IncSubtensor{Set;:int64:}.0, Shape: (2, 1, 1807640), ElemSize: 8 Byte(s), TotalSize: 28922240 Byte(s)
 - IncSubtensor{Set;:int64:}.0, Shape: (2, 1, 1, 1807640), ElemSize: 8 Byte(s), TotalSize: 28922240 Byte(s)
 - for{cpu,Looping}.0, Shape: (2, 1, 1, 1807640), ElemSize: 8 Byte(s), TotalSize: 28922240 Byte(s)
 - for{cpu,Looping}.2, Shape: (2, 1, 1807640), ElemSize: 8 Byte(s), TotalSize: 28922240 Byte(s)
 - block matrix, Shared Input, Shape: (1, 1, 1807640), ElemSize: 8 Byte(s), TotalSize: 14461120 Byte(s)
 - Scalar matrix, Shared Input, Shape: (1, 1807640), ElemSize: 8 Byte(s), TotalSize: 14461120 Byte(s)
 - IncSubtensor{Set;:int64:}.0, Shape: (2, 1, 1807640), ElemSize: 1 Byte(s), TotalSize: 3615280 Byte(s)
 - for{cpu,Looping}.4, Shape: (2, 1, 1807640), ElemSize: 1 Byte(s), TotalSize: 3615280 Byte(s)
 - mask matrix, Shared Input, Shape: (1, 1807640), ElemSize: 1 Byte(s), TotalSize: 1807640 Byte(s)
 - TensorConstant{[   0    1..4998 4999]}, Shape: (5000,), ElemSize: 4 Byte(s), TotalSize: 20000 Byte(s)
 - IncSubtensor{Set;:int64:}.0, Shape: (2, 499), ElemSize: 8 Byte(s), TotalSize: 7984 Byte(s)
 - for{cpu,Looping}.1, Shape: (2, 499), ElemSize: 8 Byte(s), TotalSize: 7984 Byte(s)
 - All the surface_points points at once, Input, Shape: (223, 3), ElemSize: 8 Byte(s), TotalSize: 5352 Byte(s)
 - Weights vector, Shared Input, Shape: (499,), ElemSize: 8 Byte(s), TotalSize: 3992 Byte(s)
 - Position of the dips, Input, Shape: (92, 3), ElemSize: 8 Byte(s), TotalSize: 2208 Byte(s)
 - Vector controlling if weights must be recomputed, Input, Shape: (1000,), ElemSize: 1 Byte(s), TotalSize: 1000 Byte(s)
 - Vector controlling if scalar matrix must be recomputed, Input, Shape: (1000,), ElemSize: 1 Byte(s), TotalSize: 1000 Byte(s)
 - Vector controlling if block matrix must be recomputed, Input, Shape: (1000,), ElemSize: 1 Byte(s), TotalSize: 1000 Byte(s)
 - Angle of every dip, Input, Shape: (92,), ElemSize: 8 Byte(s), TotalSize: 736 Byte(s)
 - Azimuth, Input, Shape: (92,), ElemSize: 8 Byte(s), TotalSize: 736 Byte(s)
 - Polarity, Input, Shape: (92,), ElemSize: 8 Byte(s), TotalSize: 736 Byte(s)
 - IncSubtensor{Set;:int64:}.0, Shape: (2, 1, 3), ElemSize: 8 Byte(s), TotalSize: 48 Byte(s)
 - for{cpu,Looping}.3, Shape: (2, 1, 3), ElemSize: 8 Byte(s), TotalSize: 48 Byte(s)
 - Values that the blocks are taking, Input, Shape: (1, 4), ElemSize: 8 Byte(s), TotalSize: 32 Byte(s)
 - fault relation matrix, Shared Input, Shape: (2, 2), ElemSize: 4 Byte(s), TotalSize: 16 Byte(s)
 - Number of points per surface used to split rest-ref, Shared Input, Shape: (3,), ElemSize: 4 Byte(s), TotalSize: 12 Byte(s)
 - Length of surface_points in every series, Shared Input, Shape: (2,), ElemSize: 4 Byte(s), TotalSize: 8 Byte(s)
 - Length of foliations in every series, Shared Input, Shape: (2,), ElemSize: 4 Byte(s), TotalSize: 8 Byte(s)
 - Length of weights in every series, Shared Input, Shape: (2,), ElemSize: 4 Byte(s), TotalSize: 8 Byte(s)
 - List with the number of surfaces, Shared Input, Shape: (2,), ElemSize: 4 Byte(s), TotalSize: 8 Byte(s)
 - The series (fault) is finite, Shared Input, Shape: (2,), ElemSize: 4 Byte(s), TotalSize: 8 Byte(s)
 - <TensorType(float64, scalar)>, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - <TensorType(float64, scalar)>, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Range, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Covariance at 0, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - <TensorType(float64, scalar)>, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Nugget effect of gradients, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Nugget effect of scalar, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - <TensorType(float64, scalar)>, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - <TensorType(float64, scalar)>, Shared Input, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Constant{0}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Constant{2}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Constant{1}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Constant{-1}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - TensorConstant{5000}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Elemwise{minimum,no_inplace}.0, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - TensorConstant{0.0}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Constant{3}, Shape: (), ElemSize: 8 Byte(s), TotalSize: 8.0 Byte(s)
 - Grade of the universal drift, Shared Input, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - <TensorType(int32, vector)>, Shared Input, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - <TensorType(int32, vector)>, Shared Input, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - TensorConstant{(1,) of -1}, Shape: (1,), ElemSize: 4 Byte(s), TotalSize: 4 Byte(s)
 - <TensorType(bool, vector)>, Shared Input, Shape: (2,), ElemSize: 1 Byte(s), TotalSize: 2 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 1 Byte(s), TotalSize: 1 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 1 Byte(s), TotalSize: 1 Byte(s)
 - Subtensor{:int64:}.0, Shape: (1,), ElemSize: 1 Byte(s), TotalSize: 1 Byte(s)
 - TensorConstant{0}, Shape: (), ElemSize: 1 Byte(s), TotalSize: 1.0 Byte(s)
 - Full block matrix for faults or drift. We take 2 times len points for the faultdrift., Input, Shape: (0, 1807640), ElemSize: 8 Byte(s), TotalSize: 0 Byte(s)
 TotalSize: 197075330.0 Byte(s) 0.184 GB
 TotalSize inputs: 74139687.0 Byte(s) 0.069 GB
Leguark commented 5 years ago

I guess this was fixed bu changing the theano flag "theano_optimizer" = 'fast_run' what consumes much less memory.