Skip to content

Commit ebe4d49

Browse files
committed
Allow to select witch type of speed test to do float64,float32 and/or gpu.
1 parent 230e17f commit ebe4d49

1 file changed

Lines changed: 79 additions & 62 deletions

File tree

code/test.py

Lines changed: 79 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ def speed():
4949
to_exec=[True]*len(algo)
5050
# to_exec=[False]*len(algo)
5151
# to_exec[-1]=True
52+
do_float64=True
53+
do_float32=True
54+
do_gpu=True
5255

5356
expected_times_64=numpy.asarray([ 12.42313051, 28.09523582, 106.35365391, 116.79225969, 153.12310314,
5457
425.09175086, 642.72824597, 652.52828193])
@@ -87,69 +90,83 @@ def do_tests():
8790

8891

8992
#test in float64 in FAST_RUN mode on the cpu
90-
print >> sys.stderr, algo
91-
theano.config.floatX='float64'
92-
theano.config.mode='FAST_RUN'
93-
float64_times=numpy.zeros(len(algo))
94-
float64_times=do_tests()
95-
print >> sys.stderr, 'float64 times',float64_times
96-
print >> sys.stderr, 'float64 expected',expected_times_64
97-
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
93+
if do_float64:
94+
print >> sys.stderr, algo
95+
theano.config.floatX='float64'
96+
theano.config.mode='FAST_RUN'
97+
float64_times=numpy.zeros(len(algo))
98+
float64_times=do_tests()
99+
print >> sys.stderr, 'float64 times',float64_times
100+
print >> sys.stderr, 'float64 expected',expected_times_64
101+
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
98102

99103
#test in float32 in FAST_RUN mode on the cpu
100104
theano.config.floatX='float32'
101-
float32_times=numpy.zeros(len(algo))
102-
float32_times=do_tests()
103-
print >> sys.stderr, 'float32 times',float32_times
104-
print >> sys.stderr, 'float32 expected',expected_times_32
105-
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
106-
print >> sys.stderr, 'float64/float32',float64_times/float32_times
107-
108-
print >> sys.stderr
109-
print >> sys.stderr, 'Duplicate the timing to have everything in one place'
110-
print >> sys.stderr, algo
111-
print >> sys.stderr, 'float64 times',float64_times
112-
print >> sys.stderr, 'float64 expected',expected_times_64
113-
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
114-
print >> sys.stderr, 'float32 times',float32_times
115-
print >> sys.stderr, 'float32 expected',expected_times_32
116-
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
117-
118-
print >> sys.stderr, 'float64/float32',float64_times/float32_times
119-
print >> sys.stderr, 'expected float64/float32',expected_times_64/float32_times
120-
121-
#test in float64 in FAST_RUN mode on the gpu
105+
if do_float32:
106+
float32_times=numpy.zeros(len(algo))
107+
float32_times=do_tests()
108+
print >> sys.stderr, 'float32 times',float32_times
109+
print >> sys.stderr, 'float32 expected',expected_times_32
110+
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
111+
112+
if do_float64:
113+
print >> sys.stderr, 'float64/float32',float64_times/float32_times
114+
print >> sys.stderr
115+
print >> sys.stderr, 'Duplicate the timing to have everything in one place'
116+
print >> sys.stderr, algo
117+
print >> sys.stderr, 'float64 times',float64_times
118+
print >> sys.stderr, 'float64 expected',expected_times_64
119+
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
120+
print >> sys.stderr, 'float32 times',float32_times
121+
print >> sys.stderr, 'float32 expected',expected_times_32
122+
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
123+
124+
print >> sys.stderr, 'float64/float32',float64_times/float32_times
125+
print >> sys.stderr, 'expected float64/float32',expected_times_64/float32_times
126+
127+
#test in float32 in FAST_RUN mode on the gpu
122128
import theano.sandbox.cuda
123-
theano.sandbox.cuda.use('gpu')
124-
gpu_times=do_tests()
125-
print >> sys.stderr, 'gpu times',gpu_times
126-
print >> sys.stderr, 'gpu expected',expected_times_gpu
127-
print >> sys.stderr, 'gpu % expected/get',expected_times_gpu/gpu_times
128-
print >> sys.stderr, 'float64/gpu',float64_times/gpu_times
129-
130-
print >> sys.stderr
131-
print >> sys.stderr, 'Duplicate the timing to have everything in one place'
132-
print >> sys.stderr, algo
133-
print >> sys.stderr, 'float64 times',float64_times
134-
print >> sys.stderr, 'float64 expected',expected_times_64
135-
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
136-
print >> sys.stderr, 'float32 times',float32_times
137-
print >> sys.stderr, 'float32 expected',expected_times_32
138-
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
139-
print >> sys.stderr, 'gpu times',gpu_times
140-
print >> sys.stderr, 'gpu expected',expected_times_gpu
141-
print >> sys.stderr, 'gpu % expected/get',expected_times_gpu/gpu_times
142-
143-
print >> sys.stderr, 'float64/float32',float64_times/float32_times
144-
print >> sys.stderr, 'float64/gpu',float64_times/gpu_times
145-
print >> sys.stderr, 'float32/gpu',float32_times/gpu_times
146-
147-
print >> sys.stderr, 'expected float64/float32',expected_times_64/float32_times
148-
print >> sys.stderr, 'expected float64/gpu',expected_times_64/gpu_times
149-
print >> sys.stderr, 'expected float32/gpu',expected_times_32/gpu_times
150-
151-
print >> sys.stderr, 'speed_failure_float64='+str(sum((expected_times_64/float64_times)>0.95))
152-
print >> sys.stderr, 'speed_failure_float32='+str(sum((expected_times_32/float32_times)>0.95))
153-
print >> sys.stderr, 'speed_failure_gpu='+str(sum((expected_times_gpu/gpu_times)>0.95))
154-
155-
assert not numpy.isnan(gpu_times).any()
129+
if do_gpu:
130+
theano.sandbox.cuda.use('gpu')
131+
gpu_times=do_tests()
132+
print >> sys.stderr, 'gpu times',gpu_times
133+
print >> sys.stderr, 'gpu expected',expected_times_gpu
134+
print >> sys.stderr, 'gpu % expected/get',expected_times_gpu/gpu_times
135+
if do_float64:
136+
print >> sys.stderr, 'float64/gpu',float64_times/gpu_times
137+
138+
if (do_float64 + do_float32 + do_gpu) > 1:
139+
print >> sys.stderr
140+
print >> sys.stderr, 'Duplicate the timing to have everything in one place'
141+
print >> sys.stderr, algo
142+
if do_float64:
143+
print >> sys.stderr, 'float64 times',float64_times
144+
print >> sys.stderr, 'float64 expected',expected_times_64
145+
print >> sys.stderr, 'float64 % expected/get',expected_times_64/float64_times
146+
if do_float32:
147+
print >> sys.stderr, 'float32 times',float32_times
148+
print >> sys.stderr, 'float32 expected',expected_times_32
149+
print >> sys.stderr, 'float32 % expected/get',expected_times_32/float32_times
150+
if do_gpu:
151+
print >> sys.stderr, 'gpu times',gpu_times
152+
print >> sys.stderr, 'gpu expected',expected_times_gpu
153+
print >> sys.stderr, 'gpu % expected/get',expected_times_gpu/gpu_times
154+
155+
if do_float64 and do_float32:
156+
print >> sys.stderr, 'float64/float32',float64_times/float32_times
157+
print >> sys.stderr, 'expected float64/float32',expected_times_64/float32_times
158+
if do_float64 and do_gpu:
159+
print >> sys.stderr, 'float64/gpu',float64_times/gpu_times
160+
print >> sys.stderr, 'expected float64/gpu',expected_times_64/gpu_times
161+
if do_float32 and do_gpu:
162+
print >> sys.stderr, 'float32/gpu',float32_times/gpu_times
163+
print >> sys.stderr, 'expected float32/gpu',expected_times_32/gpu_times
164+
165+
if do_float64:
166+
print >> sys.stderr, 'speed_failure_float64='+str(sum((expected_times_64/float64_times)>0.95))
167+
if do_float32:
168+
print >> sys.stderr, 'speed_failure_float32='+str(sum((expected_times_32/float32_times)>0.95))
169+
if do_gpu:
170+
print >> sys.stderr, 'speed_failure_gpu='+str(sum((expected_times_gpu/gpu_times)>0.95))
171+
172+
assert not numpy.isnan(gpu_times).any()

0 commit comments

Comments
 (0)