提交 dc13bfca authored 作者: Frédéric Bastien's avatar Frédéric Bastien

Merge pull request #3339 from nouiz/davikrehalt-master

[CRASH] fix crash on Raspberry Pi 1
......@@ -541,22 +541,35 @@ import theano and print the config variable, as in:
.. attribute:: config.dnn.conv.workmem
String value: 'none', 'small', 'large'
Deprecated, use dnn.conv.algo_fwd.
Default: 'small'
The default value for the amount of working memory that is
tolerated in the convolution implementation in cudnn.
.. attribute:: config.dnn.conv.workmem_bwd
'none'
Don't allow any extra memory.
Deprecated, use dnn.conv.algo_bwd.
'small'
Allow extra memory that is much smaller than the input sizes.
.. attribute:: config.dnn.conv.algo_fwd
'large'
Allow extra memory that is on the order of the input sizes.
String value: ``small``, ``none``, ``large``, ``fft``, ``guess_once``,
``guess_on_shape_change``, ``time_once``,
``time_on_shape_change``.
Default: ``small``
3d convolution only support ``none``, ``guess_once``,
``guess_on_shape_change``, ``time_once``, ``time_on_shape_change``.
.. attribute:: config.dnn.conv.algo_bwd
String value: ``none``, ``deterministic``, ``fft``, ``guess_once``,
``guess_on_shape_change``, ``time_once``,
``time_on_shape_change``.
Default: ``none``
3d convolution only support ``none``, ``guess_once``,
``guess_on_shape_change``, ``time_once``, ``time_on_shape_change``.
.. attribute:: config.gcc.cxxflags
......
......@@ -2003,7 +2003,8 @@ class GCC_compiler(Compiler):
# or 64 bit and compile accordingly. This step is ignored for ARM
# architectures in order to make Theano compatible with the Raspberry
# Pi, and Raspberry Pi 2.
if not any(['arm' in flag for flag in cxxflags]) and platform.machine() != 'armv7l':
if (not any(['arm' in flag for flag in cxxflags]) and
'arm' not in platform.machine()):
n_bits = local_bitwidth()
cxxflags.append('-m%d' % n_bits)
_logger.debug("Compiling for %s bit architecture", n_bits)
......@@ -2116,8 +2117,9 @@ class GCC_compiler(Compiler):
cppfile.write('\n')
cppfile.close()
lib_filename = os.path.join(location, '%s.%s' %
(module_name, get_lib_extension()))
lib_filename = os.path.join(
location,
'%s.%s' % (module_name, get_lib_extension()))
_logger.debug('Generating shared lib %s', lib_filename)
cmd = [theano.config.cxx, get_gcc_shared_library_arg(), '-g']
......
......@@ -767,11 +767,9 @@ def pydotprint(fct, outfile=None,
varstr = '%s %s' % (dstr, str(var.type))
elif (var in input_update and
input_update[var].name is not None):
if var_with_name_simple:
varstr = input_update[var].variable.name
else:
varstr = (input_update[var].variable.name +
str(var.type))
varstr = input_update[var].name
if not var_with_name_simple:
varstr += str(var.type)
else:
# a var id is needed as otherwise var with the same type will be
# merged in the graph.
......
......@@ -423,8 +423,12 @@ class GpuDnnConv(DnnBase, COp):
descr
The convolution descriptor.
workmem
*deprecated*, use parameter algo instead.
algo : {'small', 'none', 'large', 'fft', 'guess_once', 'guess_on_shape_change', 'time_once', 'time_on_shape_change'}
*deprecated*, use parameter algo instead.
algo
['none', 'small', 'large', 'fft', 'guess_once',
'guess_on_shape_change', 'time_once',
'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_fwd`.
"""
......@@ -607,18 +611,17 @@ class GpuDnnConv3d(GpuDnnConv):
:param image:
:param kernel:
:param descr: the convolution descriptor
:param workmem:
*deprecated*, use parameter algo instead.
:param algo: ['none', 'guess_once', 'guess_on_shape_change',
'time_once', 'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_fwd.
"""
__props__ = ('algo', 'inplace')
__input_name__ = ('image', 'kernel', 'output',
'descriptor', 'alpha', 'beta')
def __init__(self, workmem=None, inplace=False, algo=None):
"""
:param workmem: *deprecated*, use param algo instead
:param algo: either 'none', 'guess_once', 'guess_on_shape_change',
'time_once' or 'time_on_shape_change'.
Default is the value of :attr:`config.dnn.conv.algo_fwd.
"""
if workmem is not None:
warnings.warn(("GpuDnnConv3d: parameter 'workmem' is deprecated. "
"Use 'algo' instead."), stacklevel=3)
......@@ -712,6 +715,14 @@ class GpuDnnConvGradW(DnnBase, COp):
kernel
descr
The convolution descriptor.
workmem
*deprecated*, use parameter algo instead.
algo
['none', 'deterministic', 'fft', 'guess_once',
'guess_on_shape_change', 'time_once',
'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_bwd`.
"""
......@@ -719,12 +730,6 @@ class GpuDnnConvGradW(DnnBase, COp):
__input_name__ = ('image', 'grad', 'output', 'descriptor', 'alpha', 'beta')
def __init__(self, inplace=False, workmem=None, algo=None):
"""
:param workmem: *deprecated*, use param algo instead
:param algo: either 'none', 'deterministic', 'fft', 'guess_once',
'guess_on_shape_change', 'time_once' or 'time_on_shape_change'.
Default is the value of :attr:`config.dnn.conv.algo_bwd`.
"""
COp.__init__(self, ["dnn_base.c", "dnn_conv_base.c", "dnn_gw.c"],
"APPLY_SPECIFIC(conv_gw)")
......@@ -849,18 +854,17 @@ class GpuDnnConv3dGradW(GpuDnnConvGradW):
:param image:
:param kernel:
:param descr: the convolution descriptor
:param workmem:
*deprecated*, use parameter algo instead.
:param algo: ['none', 'guess_once', 'guess_on_shape_change',
'time_once', 'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_bwd`.
"""
__props__ = ('algo', 'inplace',)
__input_name__ = ('image', 'grad', 'output', 'descriptor', 'alpha', 'beta')
def __init__(self, inplace=False, workmem=None, algo=None):
"""
:param workmem: *deprecated*, use param algo instead
:param algo: either 'none', 'guess_once', 'guess_on_shape_change',
'time_once' or 'time_on_shape_change'.
Default is the value of :attr:`config.dnn.conv.algo_bwd.
"""
if workmem is not None:
warnings.warn(("GpuDnnConv3dGradW: parameter 'workmem' is "
"deprecated. Use 'algo' instead."), stacklevel=3)
......@@ -920,8 +924,12 @@ class GpuDnnConvGradI(DnnBase, COp):
descr
The convolution descriptor.
workmem
*deprecated*, use parameter algo instead.
algo : {'none', 'deterministic', 'fft', 'guess_once', 'guess_on_shape_change', 'time_once', 'time_on_shape_change'}
*deprecated*, use parameter algo instead.
algo
['none', 'deterministic', 'fft', 'guess_once',
'guess_on_shape_change', 'time_once',
'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_bwd`.
"""
......@@ -1055,6 +1063,12 @@ class GpuDnnConv3dGradI(GpuDnnConvGradI):
:param image:
:param kernel:
:param descr: the convolution descriptor
:param workmem:
*deprecated*, use parameter algo instead.
:param algo: ['none', 'guess_once', 'guess_on_shape_change',
'time_once', 'time_on_shape_change']
Default is the value of :attr:`config.dnn.conv.algo_bwd`.
"""
__props__ = ('algo', 'inplace',)
......@@ -1062,12 +1076,6 @@ class GpuDnnConv3dGradI(GpuDnnConvGradI):
'beta')
def __init__(self, inplace=False, workmem=None, algo=None):
"""
:param workmem: *deprecated*, use param algo instead
:param algo: either 'none', 'guess_once', 'guess_on_shape_change',
'time_once' or 'time_on_shape_change'.
Default is the value of :attr:`config.dnn.conv.algo_bwd.
"""
if workmem is not None:
warnings.warn(("GpuDnnConv3dGradI: parameter 'workmem' is "
"deprecated. Use 'algo' instead."), stacklevel=3)
......
......@@ -5300,7 +5300,7 @@ def _tensordot_as_dot(a, b, axes, dot, batched):
if not numpy.isscalar(axes) and len(axes) != 2:
raise ValueError('Axes should be an integer or a '
'list/tuple of len 2 (%s was provided)'
% repr(axes))
% str(axes))
# if 'axes' is a number of axes to multiply and sum over (trailing axes
# of a, leading axes of b), we can just reshape and use dot.
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论