提交 6922c2f9 authored 作者: Frederic's avatar Frederic

pep8

上级 3c02813f
...@@ -20,30 +20,35 @@ def test_no_reuse(): ...@@ -20,30 +20,35 @@ def test_no_reuse():
return return
assert not 'should not get here' assert not 'should not get here'
def test_gc_never_pickles_temporaries(): def test_gc_never_pickles_temporaries():
x = T.dvector() x = T.dvector()
#print >> sys.stderr, 'BUILDING GRAPH' #print >> sys.stderr, 'BUILDING GRAPH'
for i in xrange(2): #TODO: 30 causes like LONG compilation due to MERGE for i in xrange(2): # TODO: 30 causes like LONG compilation due to MERGE
if i : if i:
r = r + r/10 r = r + r/10
else: else:
r = x r = x
optimizer=None optimizer = None
optimizer='fast_run' optimizer = 'fast_run'
for f_linker, g_linker in [ for f_linker, g_linker in [
(theano.PerformLinker(allow_gc = True), theano.PerformLinker(allow_gc=False)), (theano.PerformLinker(allow_gc=True),
(theano.OpWiseCLinker(allow_gc = True), theano.OpWiseCLinker(allow_gc=False))]: theano.PerformLinker(allow_gc=False)),
(theano.OpWiseCLinker(allow_gc=True),
theano.OpWiseCLinker(allow_gc=False))]:
#f_linker has garbage collection #f_linker has garbage collection
#g_linker has no garbage collection #g_linker has no garbage collection
#print >> sys.stderr, 'COMPILING' #print >> sys.stderr, 'COMPILING'
f = theano.function([x], r,mode=theano.Mode(optimizer=optimizer, linker=f_linker)) f = theano.function([x], r, mode=theano.Mode(optimizer=optimizer,
g = theano.function([x], r,mode=theano.Mode(optimizer=optimizer, linker=g_linker)) linker=f_linker))
g = theano.function([x], r, mode=theano.Mode(optimizer=optimizer,
linker=g_linker))
len_pre_f = len(cPickle.dumps(f)) len_pre_f = len(cPickle.dumps(f))
len_pre_g = len(cPickle.dumps(g)) len_pre_g = len(cPickle.dumps(g))
...@@ -70,7 +75,6 @@ def test_gc_never_pickles_temporaries(): ...@@ -70,7 +75,6 @@ def test_gc_never_pickles_temporaries():
assert c(f) == c(f) # some sanity checks on the pickling mechanism assert c(f) == c(f) # some sanity checks on the pickling mechanism
assert c(g) == c(g) # some sanity checks on the pickling mechanism assert c(g) == c(g) # some sanity checks on the pickling mechanism
# now run the function once to create temporaries within the no-gc # now run the function once to create temporaries within the no-gc
# linker # linker
f(numpy.ones(100, dtype='float64')) f(numpy.ones(100, dtype='float64'))
...@@ -86,28 +90,32 @@ def test_gc_never_pickles_temporaries(): ...@@ -86,28 +90,32 @@ def test_gc_never_pickles_temporaries():
# allow_gc should leave the function un-changed by calling # allow_gc should leave the function un-changed by calling
assert len_pre_f == len_post_f assert len_pre_f == len_post_f
#assert that g() didn't cause g to grow #assert that g() didn't cause g to grow because temporaries
# because temporaries that weren't collected shouldn't be pickled anyway # that weren't collected shouldn't be pickled anyway
assert len_post_f == len_post_g, (f_linker, len_post_f, len_post_g) assert len_post_f == len_post_g, (f_linker, len_post_f, len_post_g)
def test_merge_opt_runtime(): def test_merge_opt_runtime():
"""In the original merge optimization, the following graph took like caused the MERGE """In the original merge optimization, the following graph took
optimizer to exhibit really bad performance (quadratic? exponential?) like caused the MERGE optimizer to exhibit really bad performance
(quadratic? exponential?)
Ironically, there is actually no merging to do in this graph. Ironically, there is actually no merging to do in this graph.
""" """
x = T.dvector() x = T.dvector()
for i in xrange(50): for i in xrange(50):
if i : if i:
r = r + r/10 r = r + r/10
else: else:
r = x r = x
t = time.time() t = time.time()
f = theano.function([x], r, mode='FAST_COMPILE') f = theano.function([x], r, mode='FAST_COMPILE')
# FAST_RUN does in-place optimizer which requires a lot of toposorting, which is actually # FAST_RUN does in-place optimizer which requires a lot of
# pretty slow at the moment. This test was designed to test MergeOptimizer... so I'm # toposorting, which is actually pretty slow at the moment. This
# leaving toposort optimizations for a later date. # test was designed to test MergeOptimizer... so I'm leaving
# toposort optimizations for a later date.
dt = time.time() - t dt = time.time() - t
assert dt < 5.0 #it should never take longer than 5 seconds to compile this graph # it should never take longer than 5 seconds to compile this graph
assert dt < 5.0
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论