提交 3805afa3 authored 作者: lamblin's avatar lamblin

Merge pull request #1270 from nouiz/multiple_mode

Multiple mode
...@@ -135,6 +135,8 @@ List of Implemented Operations ...@@ -135,6 +135,8 @@ List of Implemented Operations
The grad implemented is regular. The grad implemented is regular.
- :class:`SquareDiagonal <theano.sparse.basic.SquareDiagonal>` and ``square_diagonal``. - :class:`SquareDiagonal <theano.sparse.basic.SquareDiagonal>` and ``square_diagonal``.
The grad implemented is regular. The grad implemented is regular.
- :class:`ConstructSparseFromList <theano.sparse.basic.ConstructSparseFromList>` and ``construct_sparse_from_list``.
The grad implemented is regular.
- Cast - Cast
- :class:`Cast <theano.sparse.basic.Cast>` with ``bcast``, ``wcast``, ``icast``, ``lcast``, - :class:`Cast <theano.sparse.basic.Cast>` with ``bcast``, ``wcast``, ``icast``, ``lcast``,
...@@ -190,7 +192,8 @@ List of Implemented Operations ...@@ -190,7 +192,8 @@ List of Implemented Operations
- ``sqrt`` - ``sqrt``
- Dot Product - Dot Product
- :class:`Dot <theano.sparse.basic.Dot>` and ``dot``. - :class:`Dot <theano.sparse.basic.Dot>` and
:func:`dot <theano.sparse.basic.dot>`.
The grad implemented is regular. The grad implemented is regular.
- :class:`StructuredDot <theano.sparse.basic.StructuredDot>` - :class:`StructuredDot <theano.sparse.basic.StructuredDot>`
and :func:`structured_dot <theano.sparse.basic.structured_dot>`. and :func:`structured_dot <theano.sparse.basic.structured_dot>`.
......
...@@ -1286,48 +1286,7 @@ def orig_function(inputs, outputs, mode=None, accept_inplace=False, ...@@ -1286,48 +1286,7 @@ def orig_function(inputs, outputs, mode=None, accept_inplace=False,
defaults = [getattr(input, 'value', None) for input in inputs] defaults = [getattr(input, 'value', None) for input in inputs]
if isinstance(mode, (list, tuple)): # "mode comparison" semantics if isinstance(mode, (list, tuple)): # "mode comparison" semantics
_logger.warning('Passing multiple modes is deprecated (20091019)') raise Exception("We do not support the passing of multiple mode")
if not mode:
raise ValueError("Please provide at least one mode.")
elif len(mode) == 1:
fn = FunctionMaker(
inputs,
outputs,
mode[0],
accept_inplace=accept_inplace,
profile=profile,
on_unused_input=on_unused_input).create(defaults)
else:
if profile:
raise NotImplementedError('profiling not implemented in this '
'kind of mode')
#return a different kind of function
def dup_defaults():
# TODO This may need to be changed to use containers as
# defaults.
retval = []
for default in defaults:
if isinstance(default, gof.Container):
retval += [copy.copy(default.value)]
else:
retval += [copy.copy(default)]
return retval
#backport
#return [copy.copy(default.value)
# if isinstance(default, gof.Container) else
# copy.copy(default)
# for default in defaults]
makers = [FunctionMaker(inputs, outputs, m,
accept_inplace=accept_inplace)
for m in mode[1:]]
fns = [maker.create(dup_defaults(), trustme=True)
for maker in makers]
builder = partial(SanityCheckFunction, fns, check_equal)
maker1 = FunctionMaker(inputs, outputs, mode[0],
accept_inplace=accept_inplace,
function_builder=builder)
fn = maker1.create(defaults)
else: else:
Maker = getattr(mode, 'function_maker', FunctionMaker) Maker = getattr(mode, 'function_maker', FunctionMaker)
fn = Maker(inputs, fn = Maker(inputs,
......
...@@ -43,6 +43,7 @@ def execute(execute=True, verbose=True, M=2000, N=2000, K=2000, ...@@ -43,6 +43,7 @@ def execute(execute=True, verbose=True, M=2000, N=2000, K=2000,
print ' blas.ldflags=', theano.config.blas.ldflags print ' blas.ldflags=', theano.config.blas.ldflags
print ' compiledir=', theano.config.compiledir print ' compiledir=', theano.config.compiledir
print ' floatX=', theano.config.floatX print ' floatX=', theano.config.floatX
print ' device=', theano.config.device
print 'Some environment variables:' print 'Some environment variables:'
print ' MKL_NUM_THREADS=', os.getenv('MKL_NUM_THREADS') print ' MKL_NUM_THREADS=', os.getenv('MKL_NUM_THREADS')
print ' OMP_NUM_THREADS=', os.getenv('OMP_NUM_THREADS') print ' OMP_NUM_THREADS=', os.getenv('OMP_NUM_THREADS')
...@@ -202,11 +203,12 @@ if __name__ == "__main__": ...@@ -202,11 +203,12 @@ if __name__ == "__main__":
C2075 0.25s C2075 0.25s
C1060 0.46s C1060 0.46s
GTX680 0.154s 0.218s GTX Titan(D15U-50)0.06s don't work
GTX580 0.164s 0.203s GTX680 0.12s 0.154s 0.218s
GTX480 0.192s 0.237s 0.27s GTX580 0.16s 0.164s 0.203s
GTX470 0.238s 0.297s 0.34s GTX480 0.19s 0.192s 0.237s 0.27s
GTX660 0.24s GTX470 0.23s 0.238s 0.297s 0.34s
GTX660 0.20s 0.23s
GTX560 0.30s GTX560 0.30s
GTX460 0.37s 0.45s GTX460 0.37s 0.45s
GTX285 0.452s 0.452s 0.40s # cuda 3.0 seam faster? driver version? GTX285 0.452s 0.452s 0.40s # cuda 3.0 seam faster? driver version?
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论