3
3
import os
4
4
import pytest
5
5
import sparse
6
- from util import ImagePydataSparseTensorLoader , safeCastPydataTensorToInts , TnsFileDumper # plot_image
6
+ from util import ImagePydataSparseTensorLoader , safeCastPydataTensorToInts , TnsFileDumper #, plot_image
7
7
8
8
# import matplotlib.pyplot as plt
9
9
10
10
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
11
- @pytest .mark .parametrize ("pt1" , [0.5 ])
11
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
12
12
def bench_edge_detection_pydata (tacoBench , num , pt1 , plot ):
13
13
loader = ImagePydataSparseTensorLoader ()
14
14
sparse_bin_img1 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 , 1 ))
@@ -44,7 +44,7 @@ def dense_bench():
44
44
#plot_image(loader.img[num], bin_img1, bin_img2, xor_img, sparse_xor_img, t1, t2)
45
45
46
46
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
47
- @pytest .mark .parametrize ("pt1" , [0.5 ])
47
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
48
48
def bench_edge_detection_dense (tacoBench , num , pt1 ):
49
49
loader = ImagePydataSparseTensorLoader ()
50
50
bin_img1 = loader .dense_image (num , pt1 , 1 )
@@ -56,7 +56,7 @@ def dense_bench():
56
56
tacoBench (dense_bench )
57
57
58
58
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
59
- @pytest .mark .parametrize ("pt1" , [0.5 ])
59
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
60
60
def bench_edge_detection_fused_pydata (tacoBench , num , pt1 , plot ):
61
61
loader = ImagePydataSparseTensorLoader ()
62
62
sparse_bin_img1 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 , 1 ))
@@ -94,12 +94,12 @@ def dense_bench():
94
94
sparse_xor_img = sparse_xor_img .todense ()
95
95
t1 = round (loader .max [num ]* pt1 , 2 )
96
96
t2 = round (loader .max [num ]* (pt1 + 0.05 ), 2 )
97
- # plot_image(loader.img[num], bin_img1, bin_img2, xor_img, sparse_xor_img, t1, t2, bin_window)
97
+ plot_image (loader .img [num ], bin_img1 , bin_img2 , xor_img , sparse_xor_img , t1 , t2 , bin_window )
98
98
99
99
assert (sparse_xor_img .nnz == np .sum (xor_img != 0 ))
100
100
101
101
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
102
- @pytest .mark .parametrize ("pt1" , [0.5 ])
102
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
103
103
def bench_edge_detection_fused_dense (tacoBench , num , pt1 ):
104
104
loader = ImagePydataSparseTensorLoader ()
105
105
bin_img1 = loader .dense_image (num , pt1 , 1 )
@@ -115,7 +115,7 @@ def dense_bench():
115
115
116
116
#TODO: Add in a benchmark that uses windowing for medical imaging as well.
117
117
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
118
- @pytest .mark .parametrize ("pt1" , [0.5 ])
118
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
119
119
@pytest .mark .parametrize ("window_size" , [0.25 , 0.2 , 0.15 , 0.1 ])
120
120
def bench_edge_detection_window_pydata (tacoBench , num , pt1 , window_size , plot ):
121
121
loader = ImagePydataSparseTensorLoader ()
@@ -168,7 +168,7 @@ def dense_bench():
168
168
assert (sparse_xor_img .nnz == np .sum (xor_img != 0 ))
169
169
170
170
@pytest .mark .parametrize ("num" , list (range (1 , 99 )))
171
- @pytest .mark .parametrize ("pt1" , [0.5 ])
171
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
172
172
@pytest .mark .parametrize ("window_size" , [0.25 , 0.2 , 0.15 , 0.1 ])
173
173
def bench_edge_detection_window_dense (tacoBench , num , pt1 , window_size ):
174
174
loader = ImagePydataSparseTensorLoader ()
@@ -192,6 +192,7 @@ def dense_bench():
192
192
# USED FOR TESTING ITTERATION LATTICE CONSTRUCTION TACO CODE ONLY
193
193
def testOp (a , b , c ):
194
194
return np .logical_and (np .logical_not (np .logical_and (a , c ).astype ('int' )).astype ('int' ), np .logical_not (np .logical_and (b , c ).astype ('int' )).astype ('int' )).astype ('int' )
195
+
195
196
@pytest .mark .skip (reason = "Used for verification only" )
196
197
@pytest .mark .parametrize ("num" , list (range (1 , 11 )))
197
198
@pytest .mark .parametrize ("pt1" , [0.5 ])
@@ -233,3 +234,74 @@ def dense_bench():
233
234
print ("Sparse xor NNF = " , sparse_xor_img .nnz , "\t " , "Dense xor NNF = " , np .sum (xor_img != int (f )))
234
235
print ("Dense xor NNZ = " , np .sum (xor_img != 0 ))
235
236
assert (sparse_xor_img .nnz == np .sum (xor_img != 1 ))
237
+
238
+ @pytest .mark .skip (reason = "for getting the input matrices statistics only" )
239
+ @pytest .mark .parametrize ("num" , list (range (1 , 99 )))
240
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
241
+ def bench_edge_detection_statistics (tacoBench , num , pt1 ):
242
+ loader = ImagePydataSparseTensorLoader ()
243
+ sparse_bin_img1 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 , 1 ))
244
+ sparse_bin_img2 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 + 0.05 , 2 ))
245
+ sparse_bin_window = loader .sparse_window (num , 3 )
246
+
247
+ print (sparse_bin_img1 .shape )
248
+ print (sparse_bin_img2 .shape )
249
+ extra_info = dict ()
250
+ extra_info ['nnz1' ] = sparse_bin_img1 .nnz
251
+ extra_info ['nnz2' ] = sparse_bin_img2 .nnz
252
+ extra_info ['nnz3' ] = sparse_bin_window .nnz
253
+ extra_info ['dimx' ] = sparse_bin_window .shape [0 ]
254
+ extra_info ['dimy' ] = sparse_bin_window .shape [1 ]
255
+
256
+ def sparse_bench ():
257
+ sbi1 = np .logical_and (sparse_bin_img1 , sparse_bin_window )
258
+ sbi2 = np .logical_and (sparse_bin_img2 , sparse_bin_window )
259
+ sparse_xor_img = np .logical_xor (sbi1 , sbi2 ).astype ('int' )
260
+ return sparse_xor_img
261
+
262
+ tacoBench (sparse_bench , extra_info )
263
+
264
+ @pytest .mark .skip (reasoun = "For image generation only" )
265
+ @pytest .mark .parametrize ("num" , [42 , 44 , 50 , 63 , 92 ])
266
+ @pytest .mark .parametrize ("pt1" , [0.75 ])
267
+ def bench_edge_detection_fused_pydata (tacoBench , num , pt1 , plot ):
268
+ loader = ImagePydataSparseTensorLoader ()
269
+ sparse_bin_img1 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 , 1 ))
270
+ sparse_bin_img2 = safeCastPydataTensorToInts (loader .sparse_image (num , pt1 + 0.05 , 2 ))
271
+ sparse_bin_window = loader .sparse_window (num , 3 )
272
+ bin_img1 = loader .dense_image (num , pt1 , 1 )
273
+ bin_img2 = loader .dense_image (num , pt1 + 0.05 , 2 )
274
+ bin_window = loader .dense_window (num )
275
+
276
+ if plot :
277
+ print (sparse_bin_img1 .shape )
278
+ print (sparse_bin_img2 .shape )
279
+
280
+ def sparse_bench ():
281
+ sbi1 = np .logical_and (sparse_bin_img1 , sparse_bin_window )
282
+ sbi2 = np .logical_and (sparse_bin_img2 , sparse_bin_window )
283
+ sparse_xor_img = np .logical_xor (sbi1 , sbi2 ).astype ('int' )
284
+ return sparse_xor_img
285
+
286
+ def dense_bench ():
287
+ bi1 = np .logical_and (bin_img1 , bin_window ).astype ('int' )
288
+ bi2 = np .logical_and (bin_img2 , bin_window ).astype ('int' )
289
+ xor_img = np .logical_xor (bi1 , bi2 ).astype ('int' )
290
+ return xor_img
291
+ ret = tacoBench (sparse_bench )
292
+ sparse_xor_img = sparse_bench ()
293
+ xor_img = dense_bench ()
294
+
295
+ if plot :
296
+ num_elements = float (np .prod (bin_img1 .shape ))
297
+ print ("Sparse xor NNZ = " , sparse_xor_img .nnz , "\t " , "Dense xor NNZ = " , np .sum (xor_img != 0 ))
298
+ print ("Sparsity img 1 " , np .sum (bin_img1 != 0 ) / num_elements )
299
+ print ("Sparsity img 2 " , np .sum (bin_img2 != 0 ) / num_elements )
300
+ print ("Sparsity xor " , np .sum (xor_img != 0 ) / num_elements )
301
+ sparse_xor_img = sparse_xor_img .todense ()
302
+ t1 = round (loader .max [num ]* pt1 , 2 )
303
+ t2 = round (loader .max [num ]* (pt1 + 0.05 ), 2 )
304
+ #plot_image(loader.img[num], bin_img1, bin_img2, xor_img, sparse_xor_img, t1, t2, bin_window)
305
+
306
+ assert (sparse_xor_img .nnz == np .sum (xor_img != 0 ))
307
+
0 commit comments