@@ -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