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

Merge pull request #1270 from nouiz/multiple_mode

Multiple mode
......@@ -135,6 +135,8 @@ List of Implemented Operations
The grad implemented is regular.
- :class:`SquareDiagonal <theano.sparse.basic.SquareDiagonal>` and ``square_diagonal``.
The grad implemented is regular.
- :class:`ConstructSparseFromList <theano.sparse.basic.ConstructSparseFromList>` and ``construct_sparse_from_list``.
The grad implemented is regular.
- Cast
- :class:`Cast <theano.sparse.basic.Cast>` with ``bcast``, ``wcast``, ``icast``, ``lcast``,
......@@ -190,7 +192,8 @@ List of Implemented Operations
- ``sqrt``
- 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.
- :class:`StructuredDot <theano.sparse.basic.StructuredDot>`
and :func:`structured_dot <theano.sparse.basic.structured_dot>`.
......
......@@ -1286,48 +1286,7 @@ def orig_function(inputs, outputs, mode=None, accept_inplace=False,
defaults = [getattr(input, 'value', None) for input in inputs]
if isinstance(mode, (list, tuple)): # "mode comparison" semantics
_logger.warning('Passing multiple modes is deprecated (20091019)')
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)
raise Exception("We do not support the passing of multiple mode")
else:
Maker = getattr(mode, 'function_maker', FunctionMaker)
fn = Maker(inputs,
......
......@@ -43,6 +43,7 @@ def execute(execute=True, verbose=True, M=2000, N=2000, K=2000,
print ' blas.ldflags=', theano.config.blas.ldflags
print ' compiledir=', theano.config.compiledir
print ' floatX=', theano.config.floatX
print ' device=', theano.config.device
print 'Some environment variables:'
print ' MKL_NUM_THREADS=', os.getenv('MKL_NUM_THREADS')
print ' OMP_NUM_THREADS=', os.getenv('OMP_NUM_THREADS')
......@@ -202,11 +203,12 @@ if __name__ == "__main__":
C2075 0.25s
C1060 0.46s
GTX680 0.154s 0.218s
GTX580 0.164s 0.203s
GTX480 0.192s 0.237s 0.27s
GTX470 0.238s 0.297s 0.34s
GTX660 0.24s
GTX Titan(D15U-50)0.06s don't work
GTX680 0.12s 0.154s 0.218s
GTX580 0.16s 0.164s 0.203s
GTX480 0.19s 0.192s 0.237s 0.27s
GTX470 0.23s 0.238s 0.297s 0.34s
GTX660 0.20s 0.23s
GTX560 0.30s
GTX460 0.37s 0.45s
GTX285 0.452s 0.452s 0.40s # cuda 3.0 seam faster? driver version?
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论