]> AND Private Git Repository - these_gilles.git/blob - paper_fast_median/paper_fast_median.lyx
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
modif finale lnivs + keywords
[these_gilles.git] / paper_fast_median / paper_fast_median.lyx
1 #LyX file created by tex2lyx 2.0.2
2 \lyxformat 413
3 \begin_document
4 \begin_header
5 \textclass article
6 \begin_preamble
7
8
9 %\usepackage[T1]{fontenc}
10 %\usepackage[latin1]{inputenc}
11 %\usepackage[cyr]{aeguill}
12 %\usepackage[frenchb]{babel}
13
14 \@ifundefined{definecolor}
15  {\usepackage{color}}{}
16 \usepackage{xcolor}\graphicspath{{img/}}
17 \usepackage{subfigure}%\usepackage{epsfig}
18 %\usepackage[sectionbib]{bibunits}
19 \usepackage{multicol}\usepackage{multirow}\usepackage{tabularx}\usepackage[ruled,lined,linesnumbered]{algorithm2e}\usepackage{array}
20
21
22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23 %      Listings
24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
25 \usepackage{listings}\lstset{
26   language=C,
27   columns=fixed,
28   basicstyle=\footnotesize\ttfamily,
29   numbers=left,
30   firstnumber=1,
31   numberstyle=\tiny,
32   stepnumber=5,             
33   numbersep=5pt,              
34   tabsize=3,                  
35   extendedchars=true,         
36   breaklines=true,       
37   keywordstyle=\textbf,
38   frame=single,         
39   % keywordstyle=[1]\textbf,   
40   %identifierstyle=\textbf,
41   commentstyle=\textbf,
42   stringstyle=\ttfamily,
43   % xleftmargin=17pt,
44   % framexleftmargin=17pt,
45   % framexrightmargin=5pt,
46   % framexbottommargin=4pt,
47   backgroundcolor=\color{lightgray},
48   }
49
50 \usepackage{caption}%\DeclareCaptionFont{blue}{\color{blue}} 
51 %\captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}}
52
53 %\DeclareCaptionFont{white}{\color{white}}
54 %\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
55 %\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singleline}
56 %%%%%%%%%%%%%%%%%%%%%%%% Fin Listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57
58 \newcommand{\kl}{\includegraphics[scale=0.4]{kernLeft.png}~}
59 \newcommand{\kr}{\includegraphics[scale=0.4]{kernRight.png}}
60
61
62 % \begin{VF}
63 % ``A ''
64
65 % \VA{Thomas Davenport}{Senior Adjutant to the Junior Marketing VP}
66 % \end{VF}
67
68
69
70 % \begin{shadebox}
71 % A component part for an electronic item is
72 % manufactured at one of three different factories, and then delivered to
73 % the main assembly line.Of the total number supplied, factory A supplies
74 % 50\%, factory B 30\%, and factory C 20\%. Of the components
75 % manufactured at factory A, 1\% are faulty and the corresponding
76 % proportions for factories B and C are 4\% and 2\% respectively. A
77 % component is picked at random from the assembly line. What is the
78 % probability that it is faulty? 
79 % \end{shadebox}
80
81
82 % \begin{equation}
83 % \mbox{var}\widehat{\Delta} = \sum_{j = 1}^t \sum_{k = j+1}^t
84 % \mbox{var}\,(\hat{\alpha}_j - \hat{\alpha}_k)  = \sum_{j = 1}^t
85 % \sum_{k = j+1}^t \sigma^2(1/n_j + 1/n_k). \label{2delvart2}
86 % \end{equation}
87
88
89 % \begin{shortbox}
90 % \Boxhead{Box Title Here}
91 % \end{shortbox}
92
93 % \begin{theorem}\label{1th:Z_m}
94 % Let $m$ be a prime number. With the addition and multiplication as 
95 % defined above, $Z_m$ is a field.
96 % \end{theorem}
97
98 % \begin{proof}
99 % \end{proof}
100
101 % \begin{notelist}{000000}
102 %  \notes{Note:}{The process of integrating reengineering is best accomplished with an engineer, a dog, and a cat.}
103 % \end{notelist}
104
105
106 % \begin{VT1}
107 % \VH{Think About It...}
108 % Com
109 % \VT
110 % \VTA{The Information Revolution}{Business Week}
111 % \end{VT1}
112
113
114 %\begin{definition}\label{1def:linearcomb}{}\end{definition}
115
116
117
118 % \begin{extract}
119 % text 
120 % \end{extract}
121
122 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123 %      Listings
124 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
125 \lstset{
126   language=C,
127   columns=fixed,
128   basicstyle=\footnotesize\ttfamily,
129   numbers=left,
130   firstnumber=1,
131   numberstyle=\tiny,
132   stepnumber=5,             
133   numbersep=5pt,              
134   tabsize=3,                  
135   extendedchars=true,         
136   breaklines=true,       
137   keywordstyle=\textbf,
138   frame=single,         
139   % keywordstyle=[1]\textbf,   
140   %identifierstyle=\textbf,
141   commentstyle=\textbf,
142   stringstyle=\ttfamily,
143   % xleftmargin=17pt,
144   % framexleftmargin=17pt,
145   % framexrightmargin=5pt,
146   % framexbottommargin=4pt,
147   backgroundcolor=\color{lightgray},
148   }
149
150 %\DeclareCaptionFont{blue}{\color{blue}} 
151 %\captionsetup[lstlisting]{singlelinecheck=false, labelfont={blue}, textfont={blue}}
152
153 %\DeclareCaptionFont{white}{\color{white}}
154 %\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
155 %\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singleline}
156 %%%%%%%%%%%%%%%%%%%%%%%% Fin Listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
157
158
159
160 \end_preamble
161 \use_default_options false
162 \language english
163 \language_package none
164 \inputencoding auto
165 \fontencoding default
166 \font_roman default
167 \font_sans default
168 \font_typewriter courier
169 \font_default_family default
170 \font_sc false
171 \font_osf false
172 \font_sf_scale 100
173 \font_tt_scale 100
174 \graphics default
175 \paperfontsize 11
176 \spacing single
177 \use_hyperref 0
178 \papersize a4paper
179 \use_geometry false
180 \use_amsmath 2
181 \use_esint 1
182 \use_mhchem 0
183 \use_mathdots 0
184 \cite_engine basic
185 \use_bibtopic false
186 \paperorientation portrait
187 \suppress_date false
188 \use_refstyle 0
189 \secnumdepth 3
190 \tocdepth 3
191 \paragraph_separation indent
192 \paragraph_indentation default
193 \quotes_language english
194 \papercolumns 2
195 \papersides 1
196 \paperpagestyle default
197 \tracking_changes false
198 \output_changes false
199 \html_math_output 0
200 \html_css_as_file 0
201 \html_be_strict false
202 \end_header
203
204 \begin_body
205
206 \begin_layout Title
207
208 Fine-tuned high-speed implementation 
209 \begin_inset Newline newline
210 \end_inset
211
212 of a GPU-based median filter.
213 \end_layout
214
215 \begin_layout Standard
216
217
218 \begin_inset ERT
219 status collapsed
220
221 \begin_layout Standard
222
223
224 \backslash
225 twocolumn[
226 \end_layout
227
228 \begin_layout Standard
229
230   
231 \backslash
232 begin{@twocolumnfalse}
233 \end_layout
234
235 \begin_layout Standard
236
237     
238 \backslash
239 maketitle
240 \end_layout
241
242 \begin_layout Standard
243
244
245 \backslash
246 begin{abstract}
247 \end_layout
248
249 \begin_layout Standard
250
251   Median filtering is a well-known method used in a wide range of application frameworks as well as a standalone filter, especially for 
252 \backslash
253 textit{salt-and-pepper} denoising. It is able to highly reduce the power of noise while minimizing edge blurring.
254 \end_layout
255
256 \begin_layout Standard
257
258 Currently, existing algorithms and implementations are quite efficient but may be improved as far as processing speed is concerned, which has led us to further investigate the specificities of modern GPUs.
259 \end_layout
260
261 \begin_layout Standard
262
263 In this paper, we propose the GPU implementation of fixed-size kernel median filters, able to output up to 1.85 billion pixels per second on C2070 Tesla cards. 
264 \end_layout
265
266 \begin_layout Standard
267
268 Based on a Branchless Vectorized Median class algorithm and implemented through memory fine tuning and the use of GPU registers, our median drastically outperforms existing implementations, resulting, as far as we know, in the fastest median filter to date.
269 \end_layout
270
271 \begin_layout Standard
272
273
274 \backslash
275 end{abstract}
276 \end_layout
277
278 \begin_layout Standard
279
280   
281 \backslash
282 end{@twocolumnfalse}
283 \end_layout
284
285 \begin_layout Standard
286
287 ]
288 \end_layout
289
290 \end_inset
291
292
293 \end_layout
294
295 \begin_layout Section
296
297 Introduction
298 \end_layout
299
300 \begin_layout Standard
301
302 First introduced by Tukey in 
303 \begin_inset CommandInset citation
304 LatexCommand cite
305 after ""
306 key "tukey77"
307
308 \end_inset
309
310 , median filtering has been widely studied since then, and many researchers have proposed efficient implementations of it, adapted to various hypothesis, architectures and processors. Originally, its main drawbacks were its compute complexity, its non linearity and its data-dependent runtime. Several researchers have addressed these issues and designed, for example, efficient histogram-based median filters featuring predictable runtimes 
311 \begin_inset CommandInset citation
312 LatexCommand cite
313 after ""
314 key "Huang:1981:TDS:539567, Weiss:2006:FMB:1179352.1141918"
315
316 \end_inset
317
318 . More recently, authors have managed to take advantage of the newly opened perspectives offered by modern GPUs, to develop CUDA-based filters such as the Branchless Vectorized Median filter (BVM) 
319 \begin_inset CommandInset citation
320 LatexCommand cite
321 after ""
322 key "5402362, chen09"
323
324 \end_inset
325
326  which allows very interesting runtimes and the histogram-based, PCMF median filter 
327 \begin_inset CommandInset citation
328 LatexCommand cite
329 after ""
330 key "6288187"
331
332 \end_inset
333
334  which was the fastest median filter implementation to our knowledge.
335 \end_layout
336
337 \begin_layout Standard
338
339 The use of a GPU as a general-purpose computing processor raises the issue of data transfers, especially when kernel runtime is fast and/or when large data sets are processed. In certain cases, data transfers between GPU and CPU are slower than the actual computation on GPU, even though global GPU processes can prove faster than similar ones run on CPU. In the following section, we propose the overall code structure to be used with our median kernels. For more concision and readability, our coding will be restricted to 8 or 16 bit gray-level input images whose height (
340 \begin_inset Formula $H$
341 \end_inset
342
343 ) and width (
344 \begin_inset Formula $W$
345 \end_inset
346
347 ) are both multiples of 512 pixels. Let us also point out that the following implementation, targeted on Nvidia Tesla GPU (Fermi architecture, compute capability 2.x), may easily be adapted to other models e.g. those of compute capability 1.3.
348 \end_layout
349
350 \begin_layout Section
351
352 General structure
353 \end_layout
354
355 \begin_layout Standard
356
357 Algorithm 
358 \begin_inset CommandInset ref
359 LatexCommand ref
360 reference "algo:memcopy"
361
362 \end_inset
363
364  describes how data is handled in our code. Input image data is stored in the GPU's texture memory so as to benefit from the 2-D caching mechanism. After kernel execution, copying output image back to CPU memory is done by use of pinned memory, which drastically accelerates data transfer. 
365 \begin_inset Float algorithm
366 wide false
367 sideways false
368 status open
369
370
371 \begin_layout Standard
372
373
374 \begin_inset ERT
375 status collapsed
376
377 \begin_layout Standard
378
379
380 \backslash
381 SetNlSty
382 \end_layout
383
384 \end_inset
385
386
387 \begin_inset ERT
388 status collapsed
389
390 \begin_layout Standard
391
392 {
393 \end_layout
394
395 \end_inset
396
397 textbf
398 \begin_inset ERT
399 status collapsed
400
401 \begin_layout Standard
402
403 }
404 \end_layout
405
406 \end_inset
407
408
409 \begin_inset ERT
410 status collapsed
411
412 \begin_layout Standard
413
414 {}
415 \end_layout
416
417 \end_inset
418
419
420 \begin_inset ERT
421 status collapsed
422
423 \begin_layout Standard
424
425 {
426 \end_layout
427
428 \end_inset
429
430 :
431 \begin_inset ERT
432 status collapsed
433
434 \begin_layout Standard
435
436 }
437 \end_layout
438
439 \end_inset
440
441  
442 \size footnotesize
443 allocate and populate CPU memory 
444 \series bold
445 h_in
446 \series default
447
448 \begin_inset ERT
449 status collapsed
450
451 \begin_layout Standard
452
453
454 \backslash
455 ;
456 \end_layout
457
458 \end_inset
459
460  allocate CPU pinned-memory 
461 \series bold
462 h_out
463 \series default
464
465 \begin_inset ERT
466 status collapsed
467
468 \begin_layout Standard
469
470
471 \backslash
472 ;
473 \end_layout
474
475 \end_inset
476
477  allocate GPU global memory 
478 \series bold
479 d_out
480 \series default
481
482 \begin_inset ERT
483 status collapsed
484
485 \begin_layout Standard
486
487
488 \backslash
489 ;
490 \end_layout
491
492 \end_inset
493
494  declare GPU texture reference 
495 \series bold
496 tex_img_in
497 \series default
498
499 \begin_inset ERT
500 status collapsed
501
502 \begin_layout Standard
503
504
505 \backslash
506 ;
507 \end_layout
508
509 \end_inset
510
511  allocate GPU array 
512 \series bold
513 array_img_in
514 \series default
515
516 \begin_inset ERT
517 status collapsed
518
519 \begin_layout Standard
520
521
522 \backslash
523 ;
524 \end_layout
525
526 \end_inset
527
528  bind 
529 \series bold
530 array_img_in
531 \series default
532  to texture 
533 \series bold
534 tex_img_in
535 \series default
536
537 \begin_inset ERT
538 status collapsed
539
540 \begin_layout Standard
541
542
543 \backslash
544 ;
545 \end_layout
546
547 \end_inset
548
549  copy data from 
550 \series bold
551 h_in
552 \series default
553  to 
554 \series bold
555 array_img_in
556 \series default
557
558 \begin_inset CommandInset label
559 LatexCommand label
560 name "algo:memcopy:H2D"
561
562 \end_inset
563
564
565 \begin_inset ERT
566 status collapsed
567
568 \begin_layout Standard
569
570
571 \backslash
572 ;
573 \end_layout
574
575 \end_inset
576
577  kernel
578 \begin_inset ERT
579 status collapsed
580
581 \begin_layout Standard
582
583
584 \backslash
585 kl
586 \end_layout
587
588 \end_inset
589
590  gridDim,blockDim
591 \begin_inset ERT
592 status collapsed
593
594 \begin_layout Standard
595
596
597 \backslash
598 kr
599 \end_layout
600
601 \end_inset
602
603
604 \begin_inset ERT
605 status collapsed
606
607 \begin_layout Standard
608
609
610 \backslash
611 tcc*
612 \end_layout
613
614 \end_inset
615
616 [f]
617 \begin_inset ERT
618 status collapsed
619
620 \begin_layout Standard
621
622 {
623 \end_layout
624
625 \end_inset
626
627 to d_out
628 \begin_inset ERT
629 status collapsed
630
631 \begin_layout Standard
632
633 }
634 \end_layout
635
636 \end_inset
637
638
639 \begin_inset CommandInset label
640 LatexCommand label
641 name "algo:memcopy:kernel"
642
643 \end_inset
644
645
646 \begin_inset ERT
647 status collapsed
648
649 \begin_layout Standard
650
651
652 \backslash
653 ;
654 \end_layout
655
656 \end_inset
657
658  copy data from 
659 \series bold
660 d_out
661 \series default
662  to 
663 \series bold
664 h_out
665 \series default
666  
667 \begin_inset CommandInset label
668 LatexCommand label
669 name "algo:memcopy:D2H"
670
671 \end_inset
672
673
674 \begin_inset ERT
675 status collapsed
676
677 \begin_layout Standard
678
679
680 \backslash
681 ;
682 \end_layout
683
684 \end_inset
685
686  
687 \begin_inset Caption
688
689 \begin_layout Standard
690
691 \size footnotesize
692
693 Global memory management on CPU and GPU sides.
694 \end_layout
695
696 \end_inset
697
698
699 \end_layout
700
701 \begin_layout Standard
702
703 \size footnotesize
704
705
706 \begin_inset CommandInset label
707 LatexCommand label
708 name "algo:memcopy"
709
710 \end_inset
711
712  
713 \end_layout
714
715 \end_inset
716
717
718 \end_layout
719
720 \begin_layout Section
721
722 Implementing a fast median filter
723 \end_layout
724
725 \begin_layout Subsection
726
727 Basic principles
728 \end_layout
729
730 \begin_layout Standard
731
732 Designing a 2-D median filter basically consists in defining a square window 
733 \begin_inset Formula $H(i,j)$
734 \end_inset
735
736  for each pixel 
737 \begin_inset Formula $I(i,j)$
738 \end_inset
739
740  of the input image, containing 
741 \begin_inset Formula $n=k\times k$
742 \end_inset
743
744  pixels and centered on 
745 \begin_inset Formula $I(i,j)$
746 \end_inset
747
748 . The output value 
749 \begin_inset Formula $I'(i,j)$
750 \end_inset
751
752  is the median value of the gray level values of the 
753 \begin_inset Formula $k\times k$
754 \end_inset
755
756  pixels of 
757 \begin_inset Formula $H(i,j)$
758 \end_inset
759
760 . Figure 
761 \begin_inset CommandInset ref
762 LatexCommand ref
763 reference "median1"
764
765 \end_inset
766
767  illustrates this principle with an example of a 5x5 median filter applied on pixel 
768 \begin_inset Formula $I(5,6)$
769 \end_inset
770
771 .
772 \end_layout
773
774 \begin_layout Standard
775
776 Obviously, one key issue is the selection method that identifies the median value, which can be done using either histogram-based or sorting methods. But, as shown in figure 
777 \begin_inset CommandInset ref
778 LatexCommand ref
779 reference "median1"
780
781 \end_inset
782
783 , since two neighboring pixels share part of the values to be sorted, a second key issue is how to rule redundancy between consecutive positions of the running window 
784 \begin_inset Formula $H(i,j)$
785 \end_inset
786
787 .
788 \end_layout
789
790 \begin_layout Standard
791
792
793 \begin_inset Float figure
794 wide false
795 sideways false
796 status open
797
798
799 \begin_layout Standard
800
801
802 \begin_inset ERT
803 status collapsed
804
805 \begin_layout Standard
806
807
808 \backslash
809 centering
810 \end_layout
811
812 \end_inset
813
814  
815 \begin_inset ERT
816 status collapsed
817
818 \begin_layout Standard
819
820
821 \backslash
822 subfigure[$5
823 \backslash
824 times 5$ median filtering applied on pixel of coordinates (5,6)]{
825 \end_layout
826
827 \end_inset
828
829  
830 \begin_inset Graphics 
831         filename median_1.png
832         width 6cm
833
834 \end_inset
835
836
837 \begin_inset ERT
838 status collapsed
839
840 \begin_layout Standard
841
842 }
843 \end_layout
844
845 \end_inset
846
847
848 \begin_inset space \qquad{}
849
850 \end_inset
851
852
853 \begin_inset ERT
854 status collapsed
855
856 \begin_layout Standard
857
858
859 \backslash
860 subfigure[window overlapping in $5
861 \backslash
862 times 5$ median filtering]{
863 \end_layout
864
865 \end_inset
866
867
868 \begin_inset Graphics 
869         filename median_overlap.png
870         width 4cm
871
872 \end_inset
873
874
875 \begin_inset ERT
876 status collapsed
877
878 \begin_layout Standard
879
880 }
881 \end_layout
882
883 \end_inset
884
885
886 \begin_inset Newline newline
887 \end_inset
888
889  
890 \begin_inset Caption
891
892 \begin_layout Standard
893
894 Illustration of 
895 \begin_inset Formula $5\times 5$
896 \end_inset
897
898  median filtering
899 \end_layout
900
901 \end_inset
902
903
904 \end_layout
905
906 \begin_layout Standard
907
908
909 \begin_inset CommandInset label
910 LatexCommand label
911 name "median1"
912
913 \end_inset
914
915  
916 \end_layout
917
918 \end_inset
919
920
921 \end_layout
922
923 \begin_layout Subsection
924
925 Using registers
926 \end_layout
927
928 \begin_layout Standard
929
930 As register access is at least 20 times faster than all the other memory types available on the GPU, it is natural to turn to the use of registers as a means to store temporary data, keeping in mind that on the 
931 \shape italic
932 fermi
933 \shape default
934  architecture, each individual thread can use a maximum of 63 registers within the limit of 32K per thread block. Consequently, it is important to use registers sparingly in order to preserve high pixel throughput values: to do so, we use the iterative 
935 \shape italic
936 forgetful selection
937 \shape default
938  algorithm. Its principle is, at each iteration, to identify and then to eliminate (forget) both elements showing the maximum and the minimum values among the current list, then to add the next candidate element left in the original list, till none is left; the last value remaining actually is the global median value. Figure 
939 \begin_inset CommandInset ref
940 LatexCommand ref
941 reference "forget"
942
943 \end_inset
944
945  illustrates the 
946 \shape italic
947 forgetful selection
948 \shape default
949  process applied to a 
950 \begin_inset Formula $3\times3$
951 \end_inset
952
953  pixel median filter. For clarity reasons, the nine values have been represented in a row. 
954 \begin_inset Float figure
955 wide false
956 sideways false
957 status open
958
959
960 \begin_layout Standard
961
962
963 \begin_inset ERT
964 status collapsed
965
966 \begin_layout Standard
967
968
969 \backslash
970 centering
971 \end_layout
972
973 \end_inset
974
975  
976 \begin_inset Graphics 
977         filename forgetful_selectionb.png
978         width 6cm
979
980 \end_inset
981
982  
983 \begin_inset Caption
984
985 \begin_layout Standard
986
987 Determination of the Median value by the forgetful selection process, applied to a 
988 \begin_inset Formula $3\times 3$
989 \end_inset
990
991  neighborhood window.
992 \end_layout
993
994 \end_inset
995
996
997 \end_layout
998
999 \begin_layout Standard
1000
1001
1002 \begin_inset CommandInset label
1003 LatexCommand label
1004 name "forget"
1005
1006 \end_inset
1007
1008  
1009 \end_layout
1010
1011 \end_inset
1012
1013
1014 \end_layout
1015
1016 \begin_layout Standard
1017
1018 The minimum register count 
1019 \begin_inset Formula $R_{n}$
1020 \end_inset
1021
1022  needed to start this iterative selection process among 
1023 \begin_inset Formula $k \times k$
1024 \end_inset
1025
1026  values is given by: 
1027 \begin_inset Formula \[R_{n}=\lceil \frac{n}{2}\rceil+1\]
1028 \end_inset
1029
1030  The selection of both 
1031 \shape italic
1032 extrema
1033 \shape default
1034  is implemented through a basic 2-element swapping function. This ensures that the GPU kernel code is free of divergent branches liable to severely impact performances.
1035 \end_layout
1036
1037 \begin_layout Subsection
1038
1039 Hiding Latencies
1040 \end_layout
1041
1042 \begin_layout Standard
1043
1044 Optimizing a GPU kernel also means hiding latencies. The offered massive thread parallelism helps in doing so transparently but, considering the actual computation performed by each thread, optimization may be taken a few steps further:
1045 \begin_inset Newline newline
1046 \end_inset
1047
1048  First, we maximized the Instruction Level Parallelism inside the 
1049 \shape italic
1050 forgetful selection
1051 \shape default
1052  method by re-arranging the instruction sequence of an incomplete 
1053 \shape italic
1054 bitonic sort
1055 \shape default
1056  
1057 \begin_inset CommandInset citation
1058 LatexCommand cite
1059 after ""
1060 key "Batcher:1968:SNA:1468075.1468121, cormen2001introduction"
1061
1062 \end_inset
1063
1064  so as to reduce the data dependency of consecutive instructions.
1065 \begin_inset Newline newline
1066 \end_inset
1067
1068  Second, we divided thread block size by 2, having each thread perform the computation of two neighbor input pixels instead of just one, thus keeping the grid size unchanged while reducing the effect of global memory access latency. Additionally, window overlapping also had to be managed, as illustrated by Figure 
1069 \begin_inset CommandInset ref
1070 LatexCommand ref
1071 reference "median1"
1072
1073 \end_inset
1074
1075 , in order to minimize the increase of register count per thread brought by the new computing organization. Two 
1076 \begin_inset Formula $k\times k$
1077 \end_inset
1078
1079  consecutive neighboring windows share 
1080 \begin_inset Formula $S_{n}=n-\sqrt{n}$
1081 \end_inset
1082
1083  pixels, which is more than the number of registers needed to perform the median selection, i.e. 
1084 \begin_inset Formula $R_{n}$
1085 \end_inset
1086
1087  (or equal for 
1088 \begin_inset Formula $3\times 3$
1089 \end_inset
1090
1091  median filter). The 
1092 \begin_inset Formula $(S_{n}-R_{n}+1)$
1093 \end_inset
1094
1095  first selection stages can then be considered common to both windows, leaving only the 
1096 \begin_inset Formula $k$
1097 \end_inset
1098
1099  non-shared pixels of each window to be processed separately. The above technique saves 
1100 \begin_inset Formula $k+1$
1101 \end_inset
1102
1103  registers for each pair of input pixels, which means that each thread block now uses fewer registers while processing the same pixel count, thus allowing a higher level of parallelism. Figure 
1104 \begin_inset CommandInset ref
1105 LatexCommand ref
1106 reference "median5overlap"
1107
1108 \end_inset
1109
1110  illustrates this by representing the different classes of pixels in the 
1111 \begin_inset Formula $5\times5$
1112 \end_inset
1113
1114  median example: the first 
1115 \begin_inset Formula $R_{25}=14$
1116 \end_inset
1117
1118  common pixels are used to generate the vector to be sorted at the first iteration, 6 more iterations are carried out with the remaining common pixels before entering into separate sorting processes.
1119 \end_layout
1120
1121 \begin_layout Subsection
1122
1123 Compute complexity
1124 \end_layout
1125
1126 \begin_layout Standard
1127
1128 Arithmetic instructions and texture fetches are easy to count but the number of element swaps needed to select the median value is data dependent and only its maximum can be evaluated. The incomplete sorting (
1129 \shape italic
1130 forgetful selection
1131 \shape default
1132 ) and the redundancy management performed when outputing two pixels per thread lead to the instruction count below: 
1133 \end_layout
1134
1135 \begin_layout Itemize
1136
1137 5 integer multiplications and 5 integer additions to compute thread indexes and ouput pixel coordinates. 
1138 \end_layout
1139
1140 \begin_layout Itemize
1141
1142
1143 \begin_inset Formula $2n-1$
1144 \end_inset
1145
1146  additions to compute neighbor pixel coordinates. 
1147 \end_layout
1148
1149 \begin_layout Itemize
1150
1151
1152 \begin_inset Formula $n-\sqrt{n}$
1153 \end_inset
1154
1155  texture fetches to load gray-level values. 
1156 \end_layout
1157
1158 \begin_layout Itemize
1159
1160 within a 
1161 \begin_inset Formula $m$
1162 \end_inset
1163
1164 -element vector and according to our selection method, the maximum number of element swaps needed to move the minimum value to the first position and the maximum to the last position is given by: 
1165 \begin_inset Formula \[sc(m)=-2+\lceil\frac{3.m}{2}\rceil\]
1166 \end_inset
1167
1168  Consequently, the number of element swaps needed by the entire selection of two median values performed by one thread is inferior or equal to: 
1169 \begin_inset Formula \[\left(\sum_{i=\lceil\frac{n}{2}\rceil+1}^{n-\sqrt{n}}{sc(i)}\right) + 2\left(\sum_{i=n-\sqrt{n}+1}^{n}{sc(i)}\right)\]
1170 \end_inset
1171
1172  The above sum equals 42,156 and 474 for typical window sizes of 
1173 \begin_inset Formula $3\times 3$
1174 \end_inset
1175
1176
1177 \begin_inset Formula $5\times 5$
1178 \end_inset
1179
1180  and 
1181 \begin_inset Formula $7\times 7$
1182 \end_inset
1183
1184 . The total instruction count is thus kept near a 
1185 \begin_inset Formula $O(nlog(n))$
1186 \end_inset
1187
1188  rule. 
1189 \end_layout
1190
1191 \begin_layout Standard
1192
1193
1194 \begin_inset Float figure
1195 wide false
1196 sideways false
1197 status open
1198
1199
1200 \begin_layout Standard
1201
1202
1203 \begin_inset ERT
1204 status collapsed
1205
1206 \begin_layout Standard
1207
1208
1209 \backslash
1210 centering
1211 \end_layout
1212
1213 \end_inset
1214
1215  
1216 \begin_inset Graphics 
1217         filename median5_overlap.png
1218         width 6cm
1219
1220 \end_inset
1221
1222  
1223 \begin_inset Caption
1224
1225 \begin_layout Standard
1226
1227 Reducing register count in a 5
1228 \begin_inset Formula $\times$
1229 \end_inset
1230
1231 5 register-only median kernel processing 2 input pixels. The first 7 forgetful selection stages are common to both processed center pixels: the first one needs 14 pixels, leaving 6 more pixels to be processedone after another.
1232 \end_layout
1233
1234 \end_inset
1235
1236
1237 \end_layout
1238
1239 \begin_layout Standard
1240
1241
1242 \begin_inset CommandInset label
1243 LatexCommand label
1244 name "median5overlap"
1245
1246 \end_inset
1247
1248  
1249 \end_layout
1250
1251 \end_inset
1252
1253
1254 \end_layout
1255
1256 \begin_layout Section
1257
1258 Experiments
1259 \end_layout
1260
1261 \begin_layout Standard
1262
1263 Runtimes have been obtained by averaging 1000 executions on a C2070 GPU card hosted by a system with one Xeon E5620
1264 \begin_inset ERT
1265 status collapsed
1266
1267 \begin_layout Standard
1268
1269
1270 \backslash
1271 @
1272 \end_layout
1273
1274 \end_inset
1275
1276 2.40GHz processor running a linux kernel 2.6.18x86_64 and CUDA v4.0. Each kernel has been run on images of sizes 512
1277 \begin_inset Formula $\times$
1278 \end_inset
1279
1280 512, 1024
1281 \begin_inset Formula $\times$
1282 \end_inset
1283
1284 1024, 2048
1285 \begin_inset Formula $\times$
1286 \end_inset
1287
1288 2048 and 4096
1289 \begin_inset Formula $\times$
1290 \end_inset
1291
1292 4096. Like many authors, we have used the pixel throughput value as our main performance indicator. It includes kernel runtime as well as transfer times to and from the GPU. We have also measured the maximum effective pixel throughput that our GPU/host couple is able to achieve, by running an identity kernel that fetches the gray-level of each pixel in texture memory and outputs it into global memory exclusive of any other instruction. Knowing this peak value allows us to evaluate the potential for improvement of each kernel and helps in deciding on further investigation. Those peak values are detailed in Table 
1293 \begin_inset CommandInset ref
1294 LatexCommand ref
1295 reference "tabmaxtp"
1296
1297 \end_inset
1298
1299 , which shows that the larger the image is, the higher the expected throughput is.
1300 \end_layout
1301
1302 \begin_layout Standard
1303
1304
1305 \begin_inset Float figure
1306 wide false
1307 sideways false
1308 status open
1309
1310
1311 \begin_layout Standard
1312
1313
1314 \begin_inset ERT
1315 status collapsed
1316
1317 \begin_layout Standard
1318
1319
1320 \backslash
1321 centering
1322 \end_layout
1323
1324 \end_inset
1325
1326  
1327 \begin_inset ERT
1328 status collapsed
1329
1330 \begin_layout Standard
1331
1332
1333 \backslash
1334 subfigure[512$
1335 \backslash
1336 times$512 pixel input image.]{
1337 \end_layout
1338
1339 \end_inset
1340
1341
1342 \begin_inset Graphics 
1343         filename comp512.png
1344         width 7cm
1345
1346 \end_inset
1347
1348
1349 \begin_inset ERT
1350 status collapsed
1351
1352 \begin_layout Standard
1353
1354 }
1355 \end_layout
1356
1357 \end_inset
1358
1359  
1360 \begin_inset ERT
1361 status collapsed
1362
1363 \begin_layout Standard
1364
1365
1366 \backslash
1367 subfigure[4096$
1368 \backslash
1369 times$4096 pixel input image]{
1370 \end_layout
1371
1372 \end_inset
1373
1374
1375 \begin_inset Graphics 
1376         filename comp4k.png
1377         width 7cm
1378
1379 \end_inset
1380
1381
1382 \begin_inset ERT
1383 status collapsed
1384
1385 \begin_layout Standard
1386
1387 }
1388 \end_layout
1389
1390 \end_inset
1391
1392  
1393 \begin_inset Caption
1394
1395 \begin_layout Standard
1396
1397 Pixel throughput value comparison, in million pixels per second, of several implementation against our PRMF. From left to right: PCMF, BVM, PRMF, ArrayFire (impossible with 4096
1398 \begin_inset Formula $\times$
1399 \end_inset
1400
1401 4096)
1402 \end_layout
1403
1404 \end_inset
1405
1406
1407 \end_layout
1408
1409 \begin_layout Standard
1410
1411
1412 \begin_inset CommandInset label
1413 LatexCommand label
1414 name "figcomp"
1415
1416 \end_inset
1417
1418  
1419 \end_layout
1420
1421 \end_inset
1422
1423
1424 \end_layout
1425
1426 \begin_layout Standard
1427
1428
1429 \begin_inset ERT
1430 status collapsed
1431
1432 \begin_layout Standard
1433
1434 %
1435 \backslash
1436 newcolumntype{I}{!{
1437 \backslash
1438 vrule width 1.5pt}}
1439 \end_layout
1440
1441 \begin_layout Standard
1442
1443
1444 \end_layout
1445
1446 \end_inset
1447
1448
1449 \begin_inset Float table
1450 placement ht
1451 wide true
1452 sideways false
1453 status open
1454
1455
1456 \begin_layout Standard
1457
1458
1459 \begin_inset ERT
1460 status collapsed
1461
1462 \begin_layout Standard
1463
1464
1465 \backslash
1466 newlength{
1467 \backslash
1468 savedwidth}
1469 \end_layout
1470
1471 \end_inset
1472
1473  
1474 \begin_inset FormulaMacro
1475 \newcommand{\whline}{\noalign{\global\savedwidth
1476   \arrayrulewidth\global\arrayrulewidth 1.5pt}
1477   \hline \noalign{\global\arrayrulewidth
1478   \savedwidth}
1479 }
1480 \end_inset
1481
1482  
1483 \begin_inset FormulaMacro
1484 \renewcommand{\arraystretch}{1.5}
1485 \end_inset
1486
1487  
1488 \begin_inset ERT
1489 status collapsed
1490
1491 \begin_layout Standard
1492
1493
1494 \backslash
1495 centering
1496 \end_layout
1497
1498 \end_inset
1499
1500  
1501 \size footnotesize
1502
1503 \begin_inset Tabular 
1504 <lyxtabular version="3" rows="13" columns="7">
1505 <features tabularvalignment="middle">
1506 <column alignment="center" valignment="top">
1507 <column alignment="center" valignment="top">
1508 <column alignment="center" valignment="top">
1509 <column alignment="center" valignment="top">
1510 <column alignment="center" valignment="top">
1511 <column alignment="center" valignment="top">
1512 <column alignment="center" valignment="top">
1513 <row>
1514 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1515 \begin_inset Text
1516
1517 \begin_layout Standard
1518
1519 \size footnotesize
1520
1521 Gray level format 
1522 \end_layout
1523
1524 \end_inset
1525 </cell>
1526 <cell multicolumn="1" alignment="none" valignment="top" topline="true" leftline="true" rightline="true" usebox="none" special="c">
1527 \begin_inset Text
1528
1529 \begin_layout Standard
1530
1531 \size footnotesize
1532
1533
1534 \series bold
1535 8 bits
1536 \series default
1537
1538 \end_layout
1539
1540 \end_inset
1541 </cell>
1542 <cell multicolumn="2" alignment="center" valignment="top" topline="true" usebox="none">
1543 \begin_inset Text
1544
1545 \end_inset
1546 </cell>
1547 <cell multicolumn="2" alignment="center" valignment="top" topline="true" usebox="none">
1548 \begin_inset Text
1549
1550 \end_inset
1551 </cell>
1552 <cell multicolumn="1" alignment="none" valignment="top" topline="true" rightline="true" usebox="none" special="c">
1553 \begin_inset Text
1554
1555 \begin_layout Standard
1556
1557 \size footnotesize
1558
1559
1560 \series bold
1561 16 bits
1562 \series default
1563
1564 \end_layout
1565
1566 \end_inset
1567 </cell>
1568 <cell multicolumn="2" alignment="center" valignment="top" topline="true" usebox="none">
1569 \begin_inset Text
1570
1571 \end_inset
1572 </cell>
1573 <cell multicolumn="2" alignment="center" valignment="top" topline="true" usebox="none">
1574 \begin_inset Text
1575
1576 \end_inset
1577 </cell>
1578 </row>
1579 <row>
1580 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1581 \begin_inset Text
1582
1583 \begin_layout Standard
1584
1585 \size footnotesize
1586
1587
1588 \begin_inset ERT
1589 status collapsed
1590
1591 \begin_layout Standard
1592
1593
1594 \backslash
1595 shortstack{
1596 \end_layout
1597
1598 \end_inset
1599
1600 time costs
1601 \begin_inset Formula $\rightarrow$
1602 \end_inset
1603
1604
1605 \begin_inset ERT
1606 status collapsed
1607
1608 \begin_layout Standard
1609
1610 }
1611 \end_layout
1612
1613 \end_inset
1614
1615
1616 \end_layout
1617
1618 \end_inset
1619 </cell>
1620 <cell alignment="none" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1621 \begin_inset Text
1622
1623 \end_inset
1624 </cell>
1625 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
1626 \begin_inset Text
1627
1628 \end_inset
1629 </cell>
1630 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
1631 \begin_inset Text
1632
1633 \end_inset
1634 </cell>
1635 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
1636 \begin_inset Text
1637
1638 \end_inset
1639 </cell>
1640 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
1641 \begin_inset Text
1642
1643 \end_inset
1644 </cell>
1645 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
1646 \begin_inset Text
1647
1648 \end_inset
1649 </cell>
1650 </row>
1651 <row>
1652 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1653 \begin_inset Text
1654
1655 \begin_layout Standard
1656
1657 \size footnotesize
1658
1659 image size (pixels)
1660 \begin_inset Formula $\downarrow$
1661 \end_inset
1662
1663
1664 \begin_inset ERT
1665 status collapsed
1666
1667 \begin_layout Standard
1668
1669 }
1670 \end_layout
1671
1672 \end_inset
1673
1674  
1675 \end_layout
1676
1677 \end_inset
1678 </cell>
1679 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1680 \begin_inset Text
1681
1682 \begin_layout Standard
1683
1684 \size footnotesize
1685
1686
1687 \begin_inset ERT
1688 status collapsed
1689
1690 \begin_layout Standard
1691
1692
1693 \backslash
1694 shortstack{
1695 \end_layout
1696
1697 \end_inset
1698
1699 to GPU
1700 \begin_inset ERT
1701 status collapsed
1702
1703 \begin_layout Standard
1704
1705 }
1706 \end_layout
1707
1708 \end_inset
1709
1710
1711 \end_layout
1712
1713 \end_inset
1714 </cell>
1715 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1716 \begin_inset Text
1717
1718 \end_inset
1719 </cell>
1720 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1721 \begin_inset Text
1722
1723 \end_inset
1724 </cell>
1725 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1726 \begin_inset Text
1727
1728 \end_inset
1729 </cell>
1730 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1731 \begin_inset Text
1732
1733 \end_inset
1734 </cell>
1735 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1736 \begin_inset Text
1737
1738 \end_inset
1739 </cell>
1740 </row>
1741 <row>
1742 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1743 \begin_inset Text
1744
1745 \begin_layout Standard
1746
1747 \size footnotesize
1748
1749 (ms)
1750 \begin_inset ERT
1751 status collapsed
1752
1753 \begin_layout Standard
1754
1755 }
1756 \end_layout
1757
1758 \end_inset
1759
1760
1761 \end_layout
1762
1763 \end_inset
1764 </cell>
1765 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1766 \begin_inset Text
1767
1768 \begin_layout Standard
1769
1770 \size footnotesize
1771
1772
1773 \begin_inset ERT
1774 status collapsed
1775
1776 \begin_layout Standard
1777
1778
1779 \backslash
1780 shortstack{
1781 \end_layout
1782
1783 \end_inset
1784
1785 from GPU
1786 \begin_inset ERT
1787 status collapsed
1788
1789 \begin_layout Standard
1790
1791 }
1792 \end_layout
1793
1794 \end_inset
1795
1796
1797 \end_layout
1798
1799 \end_inset
1800 </cell>
1801 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1802 \begin_inset Text
1803
1804 \end_inset
1805 </cell>
1806 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1807 \begin_inset Text
1808
1809 \end_inset
1810 </cell>
1811 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1812 \begin_inset Text
1813
1814 \end_inset
1815 </cell>
1816 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1817 \begin_inset Text
1818
1819 \end_inset
1820 </cell>
1821 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1822 \begin_inset Text
1823
1824 \end_inset
1825 </cell>
1826 </row>
1827 <row>
1828 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1829 \begin_inset Text
1830
1831 \begin_layout Standard
1832
1833 \size footnotesize
1834
1835 (ms)
1836 \begin_inset ERT
1837 status collapsed
1838
1839 \begin_layout Standard
1840
1841 }
1842 \end_layout
1843
1844 \end_inset
1845
1846
1847 \end_layout
1848
1849 \end_inset
1850 </cell>
1851 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1852 \begin_inset Text
1853
1854 \begin_layout Standard
1855
1856 \size footnotesize
1857
1858
1859 \begin_inset ERT
1860 status collapsed
1861
1862 \begin_layout Standard
1863
1864
1865 \backslash
1866 shortstack{
1867 \end_layout
1868
1869 \end_inset
1870
1871 Total
1872 \begin_inset ERT
1873 status collapsed
1874
1875 \begin_layout Standard
1876
1877 }
1878 \end_layout
1879
1880 \end_inset
1881
1882
1883 \end_layout
1884
1885 \end_inset
1886 </cell>
1887 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1888 \begin_inset Text
1889
1890 \end_inset
1891 </cell>
1892 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1893 \begin_inset Text
1894
1895 \end_inset
1896 </cell>
1897 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1898 \begin_inset Text
1899
1900 \end_inset
1901 </cell>
1902 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1903 \begin_inset Text
1904
1905 \end_inset
1906 </cell>
1907 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1908 \begin_inset Text
1909
1910 \end_inset
1911 </cell>
1912 </row>
1913 <row>
1914 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1915 \begin_inset Text
1916
1917 \begin_layout Standard
1918
1919 \size footnotesize
1920
1921 (ms) 
1922 \begin_inset ERT
1923 status collapsed
1924
1925 \begin_layout Standard
1926
1927 }
1928 \end_layout
1929
1930 \end_inset
1931
1932
1933 \end_layout
1934
1935 \end_inset
1936 </cell>
1937 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
1938 \begin_inset Text
1939
1940 \begin_layout Standard
1941
1942 \size footnotesize
1943
1944
1945 \begin_inset ERT
1946 status collapsed
1947
1948 \begin_layout Standard
1949
1950
1951 \backslash
1952 shortstack{
1953 \end_layout
1954
1955 \end_inset
1956
1957
1958 \begin_inset Formula $\rightarrow$
1959 \end_inset
1960
1961 GPU
1962 \begin_inset ERT
1963 status collapsed
1964
1965 \begin_layout Standard
1966
1967 }
1968 \end_layout
1969
1970 \end_inset
1971
1972
1973 \end_layout
1974
1975 \end_inset
1976 </cell>
1977 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1978 \begin_inset Text
1979
1980 \end_inset
1981 </cell>
1982 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1983 \begin_inset Text
1984
1985 \end_inset
1986 </cell>
1987 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1988 \begin_inset Text
1989
1990 \end_inset
1991 </cell>
1992 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1993 \begin_inset Text
1994
1995 \end_inset
1996 </cell>
1997 <cell alignment="none" valignment="top" rightline="true" usebox="none">
1998 \begin_inset Text
1999
2000 \end_inset
2001 </cell>
2002 </row>
2003 <row>
2004 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
2005 \begin_inset Text
2006
2007 \begin_layout Standard
2008
2009 \size footnotesize
2010
2011 (ms)
2012 \begin_inset ERT
2013 status collapsed
2014
2015 \begin_layout Standard
2016
2017 }
2018 \end_layout
2019
2020 \end_inset
2021
2022
2023 \end_layout
2024
2025 \end_inset
2026 </cell>
2027 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
2028 \begin_inset Text
2029
2030 \begin_layout Standard
2031
2032 \size footnotesize
2033
2034
2035 \begin_inset ERT
2036 status collapsed
2037
2038 \begin_layout Standard
2039
2040
2041 \backslash
2042 shortstack{
2043 \end_layout
2044
2045 \end_inset
2046
2047
2048 \begin_inset Formula $\rightarrow$
2049 \end_inset
2050
2051 GPU
2052 \begin_inset ERT
2053 status collapsed
2054
2055 \begin_layout Standard
2056
2057 }
2058 \end_layout
2059
2060 \end_inset
2061
2062
2063 \end_layout
2064
2065 \end_inset
2066 </cell>
2067 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2068 \begin_inset Text
2069
2070 \end_inset
2071 </cell>
2072 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2073 \begin_inset Text
2074
2075 \end_inset
2076 </cell>
2077 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2078 \begin_inset Text
2079
2080 \end_inset
2081 </cell>
2082 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2083 \begin_inset Text
2084
2085 \end_inset
2086 </cell>
2087 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2088 \begin_inset Text
2089
2090 \end_inset
2091 </cell>
2092 </row>
2093 <row>
2094 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
2095 \begin_inset Text
2096
2097 \begin_layout Standard
2098
2099 \size footnotesize
2100
2101 (ms)
2102 \begin_inset ERT
2103 status collapsed
2104
2105 \begin_layout Standard
2106
2107 }
2108 \end_layout
2109
2110 \end_inset
2111
2112
2113 \end_layout
2114
2115 \end_inset
2116 </cell>
2117 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
2118 \begin_inset Text
2119
2120 \begin_layout Standard
2121
2122 \size footnotesize
2123
2124
2125 \begin_inset ERT
2126 status collapsed
2127
2128 \begin_layout Standard
2129
2130
2131 \backslash
2132 shortstack{
2133 \end_layout
2134
2135 \end_inset
2136
2137 Total
2138 \begin_inset ERT
2139 status collapsed
2140
2141 \begin_layout Standard
2142
2143 }
2144 \end_layout
2145
2146 \end_inset
2147
2148
2149 \end_layout
2150
2151 \end_inset
2152 </cell>
2153 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2154 \begin_inset Text
2155
2156 \end_inset
2157 </cell>
2158 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2159 \begin_inset Text
2160
2161 \end_inset
2162 </cell>
2163 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2164 \begin_inset Text
2165
2166 \end_inset
2167 </cell>
2168 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2169 \begin_inset Text
2170
2171 \end_inset
2172 </cell>
2173 <cell alignment="none" valignment="top" rightline="true" usebox="none">
2174 \begin_inset Text
2175
2176 \end_inset
2177 </cell>
2178 </row>
2179 <row>
2180 <cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
2181 \begin_inset Text
2182
2183 \begin_layout Standard
2184
2185 \size footnotesize
2186
2187 (ms) 
2188 \begin_inset ERT
2189 status collapsed
2190
2191 \begin_layout Standard
2192
2193 }
2194 \end_layout
2195
2196 \end_inset
2197
2198  
2199 \end_layout
2200
2201 \end_inset
2202 </cell>
2203 <cell alignment="none" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
2204 \begin_inset Text
2205
2206 \end_inset
2207 </cell>
2208 <cell alignment="none" valignment="top" bottomline="true" rightline="true" usebox="none">
2209 \begin_inset Text
2210
2211 \end_inset
2212 </cell>
2213 <cell alignment="none" valignment="top" bottomline="true" rightline="true" usebox="none">
2214 \begin_inset Text
2215
2216 \end_inset
2217 </cell>
2218 <cell alignment="none" valignment="top" bottomline="true" rightline="true" usebox="none">
2219 \begin_inset Text
2220
2221 \end_inset
2222 </cell>
2223 <cell alignment="none" valignment="top" bottomline="true" rightline="true" usebox="none">
2224 \begin_inset Text
2225
2226 \end_inset
2227 </cell>
2228 <cell alignment="none" valignment="top" bottomline="true" rightline="true" usebox="none">
2229 \begin_inset Text
2230
2231 \end_inset
2232 </cell>
2233 </row>
2234 <row>
2235 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2236 \begin_inset Text
2237
2238 \begin_layout Standard
2239
2240 \size footnotesize
2241
2242 512
2243 \begin_inset Formula $\times$
2244 \end_inset
2245
2246 512 
2247 \end_layout
2248
2249 \end_inset
2250 </cell>
2251 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2252 \begin_inset Text
2253
2254 \begin_layout Standard
2255
2256 \size footnotesize
2257
2258 0.08 
2259 \end_layout
2260
2261 \end_inset
2262 </cell>
2263 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2264 \begin_inset Text
2265
2266 \begin_layout Standard
2267
2268 \size footnotesize
2269
2270 0.06 
2271 \end_layout
2272
2273 \end_inset
2274 </cell>
2275 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2276 \begin_inset Text
2277
2278 \begin_layout Standard
2279
2280 \size footnotesize
2281
2282 0.14 
2283 \end_layout
2284
2285 \end_inset
2286 </cell>
2287 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2288 \begin_inset Text
2289
2290 \begin_layout Standard
2291
2292 \size footnotesize
2293
2294 0.14 
2295 \end_layout
2296
2297 \end_inset
2298 </cell>
2299 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2300 \begin_inset Text
2301
2302 \begin_layout Standard
2303
2304 \size footnotesize
2305
2306 0.10 
2307 \end_layout
2308
2309 \end_inset
2310 </cell>
2311 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2312 \begin_inset Text
2313
2314 \begin_layout Standard
2315
2316 \size footnotesize
2317
2318 0.24 
2319 \end_layout
2320
2321 \end_inset
2322 </cell>
2323 </row>
2324 <row>
2325 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2326 \begin_inset Text
2327
2328 \begin_layout Standard
2329
2330 \size footnotesize
2331
2332 1024
2333 \begin_inset Formula $\times$
2334 \end_inset
2335
2336 1024 
2337 \end_layout
2338
2339 \end_inset
2340 </cell>
2341 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2342 \begin_inset Text
2343
2344 \begin_layout Standard
2345
2346 \size footnotesize
2347
2348 0.24 
2349 \end_layout
2350
2351 \end_inset
2352 </cell>
2353 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2354 \begin_inset Text
2355
2356 \begin_layout Standard
2357
2358 \size footnotesize
2359
2360 0.19 
2361 \end_layout
2362
2363 \end_inset
2364 </cell>
2365 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2366 \begin_inset Text
2367
2368 \begin_layout Standard
2369
2370 \size footnotesize
2371
2372 0.43 
2373 \end_layout
2374
2375 \end_inset
2376 </cell>
2377 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2378 \begin_inset Text
2379
2380 \begin_layout Standard
2381
2382 \size footnotesize
2383
2384 0.45 
2385 \end_layout
2386
2387 \end_inset
2388 </cell>
2389 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2390 \begin_inset Text
2391
2392 \begin_layout Standard
2393
2394 \size footnotesize
2395
2396 0.35 
2397 \end_layout
2398
2399 \end_inset
2400 </cell>
2401 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2402 \begin_inset Text
2403
2404 \begin_layout Standard
2405
2406 \size footnotesize
2407
2408 0.80 
2409 \end_layout
2410
2411 \end_inset
2412 </cell>
2413 </row>
2414 <row>
2415 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2416 \begin_inset Text
2417
2418 \begin_layout Standard
2419
2420 \size footnotesize
2421
2422 2048
2423 \begin_inset Formula $\times$
2424 \end_inset
2425
2426 2048 
2427 \end_layout
2428
2429 \end_inset
2430 </cell>
2431 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2432 \begin_inset Text
2433
2434 \begin_layout Standard
2435
2436 \size footnotesize
2437
2438 0.85 
2439 \end_layout
2440
2441 \end_inset
2442 </cell>
2443 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2444 \begin_inset Text
2445
2446 \begin_layout Standard
2447
2448 \size footnotesize
2449
2450 0.68 
2451 \end_layout
2452
2453 \end_inset
2454 </cell>
2455 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2456 \begin_inset Text
2457
2458 \begin_layout Standard
2459
2460 \size footnotesize
2461
2462 1.53 
2463 \end_layout
2464
2465 \end_inset
2466 </cell>
2467 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2468 \begin_inset Text
2469
2470 \begin_layout Standard
2471
2472 \size footnotesize
2473
2474 1.59 
2475 \end_layout
2476
2477 \end_inset
2478 </cell>
2479 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2480 \begin_inset Text
2481
2482 \begin_layout Standard
2483
2484 \size footnotesize
2485
2486 1.32 
2487 \end_layout
2488
2489 \end_inset
2490 </cell>
2491 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2492 \begin_inset Text
2493
2494 \begin_layout Standard
2495
2496 \size footnotesize
2497
2498 2.91 
2499 \end_layout
2500
2501 \end_inset
2502 </cell>
2503 </row>
2504 <row>
2505 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2506 \begin_inset Text
2507
2508 \begin_layout Standard
2509
2510 \size footnotesize
2511
2512 4096
2513 \begin_inset Formula $\times$
2514 \end_inset
2515
2516 4096 
2517 \end_layout
2518
2519 \end_inset
2520 </cell>
2521 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
2522 \begin_inset Text
2523
2524 \begin_layout Standard
2525
2526 \size footnotesize
2527
2528 3.27 
2529 \end_layout
2530
2531 \end_inset
2532 </cell>
2533 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
2534 \begin_inset Text
2535
2536 \begin_layout Standard
2537
2538 \size footnotesize
2539
2540 2.61 
2541 \end_layout
2542
2543 \end_inset
2544 </cell>
2545 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
2546 \begin_inset Text
2547
2548 \begin_layout Standard
2549
2550 \size footnotesize
2551
2552 5.88 
2553 \end_layout
2554
2555 \end_inset
2556 </cell>
2557 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
2558 \begin_inset Text
2559
2560 \begin_layout Standard
2561
2562 \size footnotesize
2563
2564 6.21 
2565 \end_layout
2566
2567 \end_inset
2568 </cell>
2569 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
2570 \begin_inset Text
2571
2572 \begin_layout Standard
2573
2574 \size footnotesize
2575
2576 5.21 
2577 \end_layout
2578
2579 \end_inset
2580 </cell>
2581 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
2582 \begin_inset Text
2583
2584 \begin_layout Standard
2585
2586 \size footnotesize
2587
2588 11.42 
2589 \end_layout
2590
2591 \end_inset
2592 </cell>
2593 </row>
2594 </lyxtabular>
2595
2596 \end_inset
2597
2598
2599 \size default
2600  
2601 \begin_inset Caption
2602
2603 \begin_layout Standard
2604
2605 Time cost of data transfer for each image size and gray-level format on C2070 GPU.
2606 \end_layout
2607
2608 \end_inset
2609
2610
2611 \end_layout
2612
2613 \begin_layout Standard
2614
2615
2616 \begin_inset CommandInset label
2617 LatexCommand label
2618 name "tabmemcpy"
2619
2620 \end_inset
2621
2622  
2623 \end_layout
2624
2625 \end_inset
2626
2627
2628 \end_layout
2629
2630 \begin_layout Section
2631
2632 Results
2633 \end_layout
2634
2635 \begin_layout Standard
2636
2637 The main contribution of this work is to show how to tune a CUDA GPU implementation in order to achieve the highest pixel throughput values. Runtimes, as well as pixel throughput values are gathered in Table 
2638 \begin_inset CommandInset ref
2639 LatexCommand ref
2640 reference "tabresults"
2641
2642 \end_inset
2643
2644 . Figure 
2645 \begin_inset CommandInset ref
2646 LatexCommand ref
2647 reference "figcomp"
2648
2649 \end_inset
2650
2651  compares the throughput values of several implementations against ours, labeled PRMF for Parallel Register-only Median Filter. Due to the lack of available source code, our comparison is based on the most recent results published in 
2652 \begin_inset CommandInset citation
2653 LatexCommand cite
2654 after ""
2655 key "Sanchez-2-2012"
2656
2657 \end_inset
2658
2659 , obtained with the same GPU as ours and with 8 bit-coded gray-level images. While the algorithm implemented here is similar to the one in 
2660 \shape italic
2661 ArrayFire
2662 \shape default
2663 , what makes the difference is our fine tuning of the implementation that leads to the fastest GPU median filter known to date with 1854
2664 \begin_inset space ~
2665
2666 \end_inset
2667
2668 MPix/s. Let us also note that such considerable throughput values come very close to the peak effective pixel throughput value of 2444
2669 \begin_inset space ~
2670
2671 \end_inset
2672
2673 Mpix/s allowed by our developpement platform. Consequently further investigation would likely bring little performance improvement.
2674 \end_layout
2675
2676 \begin_layout Standard
2677
2678
2679 \begin_inset ERT
2680 status collapsed
2681
2682 \begin_layout Standard
2683
2684 %
2685 \backslash
2686 newcolumntype{I}{!{
2687 \backslash
2688 vrule width 1.5pt}}
2689 \end_layout
2690
2691 \begin_layout Standard
2692
2693
2694 \end_layout
2695
2696 \end_inset
2697
2698
2699 \begin_inset ERT
2700 status collapsed
2701
2702 \begin_layout Standard
2703
2704 %
2705 \backslash
2706 newlength
2707 \backslash
2708 savedwidth
2709 \end_layout
2710
2711 \begin_layout Standard
2712
2713
2714 \end_layout
2715
2716 \end_inset
2717
2718
2719 \begin_inset Float table
2720 placement h
2721 wide false
2722 sideways false
2723 status open
2724
2725
2726 \begin_layout Standard
2727
2728
2729 \begin_inset FormulaMacro
2730 \newcommand{\whline}{\noalign{\global\savedwidth
2731   \arrayrulewidth\global\arrayrulewidth 1.5pt}
2732   \hline \noalign{\global\arrayrulewidth
2733   \savedwidth}
2734 }
2735 \end_inset
2736
2737  
2738 \begin_inset FormulaMacro
2739 \renewcommand{\arraystretch}{1.5}
2740 \end_inset
2741
2742  
2743 \begin_inset ERT
2744 status collapsed
2745
2746 \begin_layout Standard
2747
2748
2749 \backslash
2750 centering
2751 \end_layout
2752
2753 \end_inset
2754
2755  
2756 \size small
2757
2758 \begin_inset Tabular 
2759 <lyxtabular version="3" rows="6" columns="3">
2760 <features tabularvalignment="middle">
2761 <column alignment="center" valignment="top">
2762 <column alignment="center" valignment="top">
2763 <column alignment="center" valignment="top">
2764 <row>
2765 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2766 \begin_inset Text
2767
2768 \begin_layout Standard
2769
2770 \size small
2771
2772
2773 \begin_inset ERT
2774 status collapsed
2775
2776 \begin_layout Standard
2777
2778
2779 \backslash
2780 shortstack{
2781 \end_layout
2782
2783 \end_inset
2784
2785 Gray-level format
2786 \begin_inset Formula $\rightarrow$
2787 \end_inset
2788
2789
2790 \begin_inset ERT
2791 status collapsed
2792
2793 \begin_layout Standard
2794
2795 }
2796 \end_layout
2797
2798 \end_inset
2799
2800
2801 \end_layout
2802
2803 \end_inset
2804 </cell>
2805 <cell alignment="none" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2806 \begin_inset Text
2807
2808 \end_inset
2809 </cell>
2810 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
2811 \begin_inset Text
2812
2813 \end_inset
2814 </cell>
2815 </row>
2816 <row>
2817 <cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
2818 \begin_inset Text
2819
2820 \begin_layout Standard
2821
2822 \size small
2823
2824 image size
2825 \begin_inset Formula $\downarrow$
2826 \end_inset
2827
2828
2829 \begin_inset ERT
2830 status collapsed
2831
2832 \begin_layout Standard
2833
2834 }
2835 \end_layout
2836
2837 \end_inset
2838
2839  
2840 \end_layout
2841
2842 \end_inset
2843 </cell>
2844 <cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
2845 \begin_inset Text
2846
2847 \begin_layout Standard
2848
2849 \size small
2850
2851
2852 \begin_inset ERT
2853 status collapsed
2854
2855 \begin_layout Standard
2856
2857 {
2858 \end_layout
2859
2860 \end_inset
2861
2862
2863 \begin_inset Formula $\mathbf{ T_8}$
2864 \end_inset
2865
2866
2867 \begin_inset ERT
2868 status collapsed
2869
2870 \begin_layout Standard
2871
2872 }
2873 \end_layout
2874
2875 \end_inset
2876
2877  
2878 \end_layout
2879
2880 \end_inset
2881 </cell>
2882 <cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
2883 \begin_inset Text
2884
2885 \begin_layout Standard
2886
2887 \size small
2888
2889
2890 \begin_inset ERT
2891 status collapsed
2892
2893 \begin_layout Standard
2894
2895 {
2896 \end_layout
2897
2898 \end_inset
2899
2900
2901 \begin_inset Formula $\mathbf{T_{16}}$
2902 \end_inset
2903
2904
2905 \begin_inset ERT
2906 status collapsed
2907
2908 \begin_layout Standard
2909
2910 }
2911 \end_layout
2912
2913 \end_inset
2914
2915  
2916 \end_layout
2917
2918 \end_inset
2919 </cell>
2920 </row>
2921 <row>
2922 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2923 \begin_inset Text
2924
2925 \begin_layout Standard
2926
2927 \size small
2928
2929 512
2930 \begin_inset Formula $\times$
2931 \end_inset
2932
2933 512 
2934 \end_layout
2935
2936 \end_inset
2937 </cell>
2938 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2939 \begin_inset Text
2940
2941 \begin_layout Standard
2942
2943 \size small
2944
2945 1598 
2946 \end_layout
2947
2948 \end_inset
2949 </cell>
2950 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2951 \begin_inset Text
2952
2953 \begin_layout Standard
2954
2955 \size small
2956
2957 975 
2958 \end_layout
2959
2960 \end_inset
2961 </cell>
2962 </row>
2963 <row>
2964 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2965 \begin_inset Text
2966
2967 \begin_layout Standard
2968
2969 \size small
2970
2971 1024
2972 \begin_inset Formula $\times$
2973 \end_inset
2974
2975 1024 
2976 \end_layout
2977
2978 \end_inset
2979 </cell>
2980 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2981 \begin_inset Text
2982
2983 \begin_layout Standard
2984
2985 \size small
2986
2987 2101 
2988 \end_layout
2989
2990 \end_inset
2991 </cell>
2992 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
2993 \begin_inset Text
2994
2995 \begin_layout Standard
2996
2997 \size small
2998
2999 1200 
3000 \end_layout
3001
3002 \end_inset
3003 </cell>
3004 </row>
3005 <row>
3006 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3007 \begin_inset Text
3008
3009 \begin_layout Standard
3010
3011 \size small
3012
3013 2048
3014 \begin_inset Formula $\times$
3015 \end_inset
3016
3017 2048 
3018 \end_layout
3019
3020 \end_inset
3021 </cell>
3022 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3023 \begin_inset Text
3024
3025 \begin_layout Standard
3026
3027 \size small
3028
3029 2359 
3030 \end_layout
3031
3032 \end_inset
3033 </cell>
3034 <cell alignment="center" valignment="top" topline="true" rightline="true" usebox="none">
3035 \begin_inset Text
3036
3037 \begin_layout Standard
3038
3039 \size small
3040
3041 1308 
3042 \end_layout
3043
3044 \end_inset
3045 </cell>
3046 </row>
3047 <row>
3048 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3049 \begin_inset Text
3050
3051 \begin_layout Standard
3052
3053 \size small
3054
3055 4096
3056 \begin_inset Formula $\times$
3057 \end_inset
3058
3059 4096 
3060 \end_layout
3061
3062 \end_inset
3063 </cell>
3064 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
3065 \begin_inset Text
3066
3067 \begin_layout Standard
3068
3069 \size small
3070
3071 2444 
3072 \end_layout
3073
3074 \end_inset
3075 </cell>
3076 <cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
3077 \begin_inset Text
3078
3079 \begin_layout Standard
3080
3081 \size small
3082
3083 1335 
3084 \end_layout
3085
3086 \end_inset
3087 </cell>
3088 </row>
3089 </lyxtabular>
3090
3091 \end_inset
3092
3093
3094 \size default
3095  
3096 \begin_inset Caption
3097
3098 \begin_layout Standard
3099
3100 Maximum effective pixel throughput values for 
3101 \begin_inset Formula $T_8$
3102 \end_inset
3103
3104  and 
3105 \begin_inset Formula $T_{16}$
3106 \end_inset
3107
3108  (in MPixel per second) on C2070, achieved when processing 8 and 16 bit-coded gray-level images.
3109 \end_layout
3110
3111 \end_inset
3112
3113
3114 \end_layout
3115
3116 \begin_layout Standard
3117
3118
3119 \begin_inset CommandInset label
3120 LatexCommand label
3121 name "tabmaxtp"
3122
3123 \end_inset
3124
3125  
3126 \end_layout
3127
3128 \end_inset
3129
3130
3131 \end_layout
3132
3133 \begin_layout Standard
3134
3135
3136 \begin_inset ERT
3137 status collapsed
3138
3139 \begin_layout Standard
3140
3141 %
3142 \backslash
3143 newcolumntype{I}{!{
3144 \backslash
3145 vrule width 1.5pt}}
3146 \end_layout
3147
3148 \begin_layout Standard
3149
3150
3151 \end_layout
3152
3153 \end_inset
3154
3155
3156 \begin_inset ERT
3157 status collapsed
3158
3159 \begin_layout Standard
3160
3161 %
3162 \backslash
3163 newlength
3164 \backslash
3165 savedwidth
3166 \end_layout
3167
3168 \begin_layout Standard
3169
3170
3171 \end_layout
3172
3173 \end_inset
3174
3175
3176 \begin_inset Float table
3177 placement h
3178 wide false
3179 sideways false
3180 status open
3181
3182
3183 \begin_layout Standard
3184
3185
3186 \begin_inset FormulaMacro
3187 \newcommand{\whline}{\noalign{\global\savedwidth
3188   \arrayrulewidth\global\arrayrulewidth 1.5pt}
3189   \hline \noalign{\global\arrayrulewidth
3190   \savedwidth}
3191 }
3192 \end_inset
3193
3194  
3195 \begin_inset FormulaMacro
3196 \renewcommand{\arraystretch}{1.5}
3197 \end_inset
3198
3199  
3200 \begin_inset ERT
3201 status collapsed
3202
3203 \begin_layout Standard
3204
3205
3206 \backslash
3207 centering
3208 \end_layout
3209
3210 \end_inset
3211
3212  
3213 \size footnotesize
3214
3215 \begin_inset Tabular 
3216 <lyxtabular version="3" rows="15" columns="11">
3217 <features tabularvalignment="middle">
3218 <column alignment="center" valignment="top">
3219 <column alignment="left" valignment="top">
3220 <column alignment="center" valignment="top">
3221 <column alignment="center" valignment="top">
3222 <column alignment="center" valignment="top">
3223 <column alignment="center" valignment="top">
3224 <column alignment="center" valignment="top">
3225 <column alignment="center" valignment="top">
3226 <column alignment="center" valignment="top">
3227 <column alignment="center" valignment="top">
3228 <column alignment="center" valignment="top">
3229 <row>
3230 <cell multicolumn="1" alignment="none" valignment="top" topline="true" leftline="true" rightline="true" usebox="none" special="l|">
3231 \begin_inset Text
3232
3233 \begin_layout Standard
3234
3235 \size footnotesize
3236
3237
3238 \begin_inset ERT
3239 status collapsed
3240
3241 \begin_layout Standard
3242
3243
3244 \backslash
3245 shortstack{
3246 \end_layout
3247
3248 \end_inset
3249
3250 Window size
3251 \begin_inset Formula $\rightarrow$
3252 \end_inset
3253
3254
3255 \begin_inset ERT
3256 status collapsed
3257
3258 \begin_layout Standard
3259
3260 }
3261 \end_layout
3262
3263 \end_inset
3264
3265
3266 \end_layout
3267
3268 \end_inset
3269 </cell>
3270 <cell multicolumn="2" alignment="center" valignment="top" topline="true" usebox="none">
3271 \begin_inset Text
3272
3273 \end_inset
3274 </cell>
3275 <cell alignment="none" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3276 \begin_inset Text
3277
3278 \end_inset
3279 </cell>
3280 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3281 \begin_inset Text
3282
3283 \end_inset
3284 </cell>
3285 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3286 \begin_inset Text
3287
3288 \end_inset
3289 </cell>
3290 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3291 \begin_inset Text
3292
3293 \end_inset
3294 </cell>
3295 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3296 \begin_inset Text
3297
3298 \end_inset
3299 </cell>
3300 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3301 \begin_inset Text
3302
3303 \end_inset
3304 </cell>
3305 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3306 \begin_inset Text
3307
3308 \end_inset
3309 </cell>
3310 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3311 \begin_inset Text
3312
3313 \end_inset
3314 </cell>
3315 <cell alignment="none" valignment="top" topline="true" rightline="true" usebox="none">
3316 \begin_inset Text
3317
3318 \end_inset
3319 </cell>
3320 </row>
3321 <row>
3322 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3323 \begin_inset Text
3324
3325 \begin_layout Standard
3326
3327 \size footnotesize
3328
3329 Image size - perf.
3330 \begin_inset Formula $\downarrow$
3331 \end_inset
3332
3333
3334 \begin_inset ERT
3335 status collapsed
3336
3337 \begin_layout Standard
3338
3339 }
3340 \end_layout
3341
3342 \end_inset
3343
3344
3345 \begin_inset ERT
3346 status collapsed
3347
3348 \begin_layout Standard
3349
3350 }
3351 \end_layout
3352
3353 \end_inset
3354
3355  
3356 \end_layout
3357
3358 \end_inset
3359 </cell>
3360 <cell alignment="left" valignment="top" rightline="true" usebox="none">
3361 \begin_inset Text
3362
3363 \begin_layout Standard
3364
3365 \size footnotesize
3366
3367
3368 \series bold
3369 3
3370 \begin_inset Formula $\times$
3371 \end_inset
3372
3373 3
3374 \series default
3375  
3376 \end_layout
3377
3378 \end_inset
3379 </cell>
3380 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3381 \begin_inset Text
3382
3383 \begin_layout Standard
3384
3385 \size footnotesize
3386
3387
3388 \series bold
3389 5
3390 \begin_inset Formula $\times$
3391 \end_inset
3392
3393 5
3394 \series default
3395  
3396 \end_layout
3397
3398 \end_inset
3399 </cell>
3400 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3401 \begin_inset Text
3402
3403 \begin_layout Standard
3404
3405 \size footnotesize
3406
3407
3408 \series bold
3409 7
3410 \begin_inset Formula $\times$
3411 \end_inset
3412
3413 7
3414 \series default
3415  
3416 \end_layout
3417
3418 \end_inset
3419 </cell>
3420 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3421 \begin_inset Text
3422
3423 \end_inset
3424 </cell>
3425 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3426 \begin_inset Text
3427
3428 \end_inset
3429 </cell>
3430 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3431 \begin_inset Text
3432
3433 \end_inset
3434 </cell>
3435 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3436 \begin_inset Text
3437
3438 \end_inset
3439 </cell>
3440 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3441 \begin_inset Text
3442
3443 \end_inset
3444 </cell>
3445 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3446 \begin_inset Text
3447
3448 \end_inset
3449 </cell>
3450 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3451 \begin_inset Text
3452
3453 \end_inset
3454 </cell>
3455 </row>
3456 <row>
3457 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3458 \begin_inset Text
3459
3460 \begin_layout Standard
3461
3462 \size footnotesize
3463
3464
3465 \begin_inset ERT
3466 status collapsed
3467
3468 \begin_layout Standard
3469
3470
3471 \backslash
3472 whline
3473 \end_layout
3474
3475 \end_inset
3476
3477  
3478 \begin_inset ERT
3479 status collapsed
3480
3481 \begin_layout Standard
3482
3483
3484 \backslash
3485 multirow
3486 \end_layout
3487
3488 \end_inset
3489
3490
3491 \begin_inset ERT
3492 status collapsed
3493
3494 \begin_layout Standard
3495
3496 {
3497 \end_layout
3498
3499 \end_inset
3500
3501 3
3502 \begin_inset ERT
3503 status collapsed
3504
3505 \begin_layout Standard
3506
3507 }
3508 \end_layout
3509
3510 \end_inset
3511
3512 *
3513 \begin_inset ERT
3514 status collapsed
3515
3516 \begin_layout Standard
3517
3518 {
3519 \end_layout
3520
3521 \end_inset
3522
3523
3524 \begin_inset ERT
3525 status collapsed
3526
3527 \begin_layout Standard
3528
3529
3530 \backslash
3531 rotatebox{90}{
3532 \end_layout
3533
3534 \end_inset
3535
3536 512
3537 \begin_inset Formula $^2$
3538 \end_inset
3539
3540
3541 \begin_inset ERT
3542 status collapsed
3543
3544 \begin_layout Standard
3545
3546 }
3547 \end_layout
3548
3549 \end_inset
3550
3551
3552 \begin_inset ERT
3553 status collapsed
3554
3555 \begin_layout Standard
3556
3557 }
3558 \end_layout
3559
3560 \end_inset
3561
3562  
3563 \end_layout
3564
3565 \end_inset
3566 </cell>
3567 <cell alignment="left" valignment="top" rightline="true" usebox="none">
3568 \begin_inset Text
3569
3570 \begin_layout Standard
3571
3572 \size footnotesize
3573
3574 t (ms) 
3575 \end_layout
3576
3577 \end_inset
3578 </cell>
3579 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3580 \begin_inset Text
3581
3582 \begin_layout Standard
3583
3584 \size footnotesize
3585
3586 0.05 
3587 \end_layout
3588
3589 \end_inset
3590 </cell>
3591 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3592 \begin_inset Text
3593
3594 \begin_layout Standard
3595
3596 \size footnotesize
3597
3598 0.19 
3599 \end_layout
3600
3601 \end_inset
3602 </cell>
3603 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3604 \begin_inset Text
3605
3606 \begin_layout Standard
3607
3608 \size footnotesize
3609
3610 0.60 
3611 \end_layout
3612
3613 \end_inset
3614 </cell>
3615 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3616 \begin_inset Text
3617
3618 \end_inset
3619 </cell>
3620 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3621 \begin_inset Text
3622
3623 \end_inset
3624 </cell>
3625 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3626 \begin_inset Text
3627
3628 \end_inset
3629 </cell>
3630 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3631 \begin_inset Text
3632
3633 \end_inset
3634 </cell>
3635 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3636 \begin_inset Text
3637
3638 \end_inset
3639 </cell>
3640 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3641 \begin_inset Text
3642
3643 \end_inset
3644 </cell>
3645 </row>
3646 <row>
3647 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3648 \begin_inset Text
3649
3650 \end_inset
3651 </cell>
3652 <cell alignment="left" valignment="top" rightline="true" usebox="none">
3653 \begin_inset Text
3654
3655 \begin_layout Standard
3656
3657 \size footnotesize
3658
3659
3660 \begin_inset Formula $T_{8}$
3661 \end_inset
3662
3663  (Mpix/s)
3664 \end_layout
3665
3666 \end_inset
3667 </cell>
3668 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3669 \begin_inset Text
3670
3671 \begin_layout Standard
3672
3673 \size footnotesize
3674
3675 1291 
3676 \end_layout
3677
3678 \end_inset
3679 </cell>
3680 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3681 \begin_inset Text
3682
3683 \begin_layout Standard
3684
3685 \size footnotesize
3686
3687 773 
3688 \end_layout
3689
3690 \end_inset
3691 </cell>
3692 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3693 \begin_inset Text
3694
3695 \begin_layout Standard
3696
3697 \size footnotesize
3698
3699 348 
3700 \end_layout
3701
3702 \end_inset
3703 </cell>
3704 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3705 \begin_inset Text
3706
3707 \end_inset
3708 </cell>
3709 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3710 \begin_inset Text
3711
3712 \end_inset
3713 </cell>
3714 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3715 \begin_inset Text
3716
3717 \end_inset
3718 </cell>
3719 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3720 \begin_inset Text
3721
3722 \end_inset
3723 </cell>
3724 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3725 \begin_inset Text
3726
3727 \end_inset
3728 </cell>
3729 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3730 \begin_inset Text
3731
3732 \end_inset
3733 </cell>
3734 </row>
3735 <row>
3736 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3737 \begin_inset Text
3738
3739 \end_inset
3740 </cell>
3741 <cell alignment="left" valignment="top" rightline="true" usebox="none">
3742 \begin_inset Text
3743
3744 \begin_layout Standard
3745
3746 \size footnotesize
3747
3748
3749 \begin_inset Formula $T_{16}$
3750 \end_inset
3751
3752  (Mpix/s)
3753 \end_layout
3754
3755 \end_inset
3756 </cell>
3757 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3758 \begin_inset Text
3759
3760 \begin_layout Standard
3761
3762 \size footnotesize
3763
3764 865 
3765 \end_layout
3766
3767 \end_inset
3768 </cell>
3769 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3770 \begin_inset Text
3771
3772 \begin_layout Standard
3773
3774 \size footnotesize
3775
3776 607 
3777 \end_layout
3778
3779 \end_inset
3780 </cell>
3781 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3782 \begin_inset Text
3783
3784 \begin_layout Standard
3785
3786 \size footnotesize
3787
3788 307 
3789 \end_layout
3790
3791 \end_inset
3792 </cell>
3793 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3794 \begin_inset Text
3795
3796 \end_inset
3797 </cell>
3798 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3799 \begin_inset Text
3800
3801 \end_inset
3802 </cell>
3803 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3804 \begin_inset Text
3805
3806 \end_inset
3807 </cell>
3808 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3809 \begin_inset Text
3810
3811 \end_inset
3812 </cell>
3813 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3814 \begin_inset Text
3815
3816 \end_inset
3817 </cell>
3818 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3819 \begin_inset Text
3820
3821 \end_inset
3822 </cell>
3823 </row>
3824 <row>
3825 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3826 \begin_inset Text
3827
3828 \begin_layout Standard
3829
3830 \size footnotesize
3831
3832
3833 \begin_inset ERT
3834 status collapsed
3835
3836 \begin_layout Standard
3837
3838
3839 \backslash
3840 whline
3841 \end_layout
3842
3843 \end_inset
3844
3845  
3846 \begin_inset ERT
3847 status collapsed
3848
3849 \begin_layout Standard
3850
3851
3852 \backslash
3853 multirow
3854 \end_layout
3855
3856 \end_inset
3857
3858
3859 \begin_inset ERT
3860 status collapsed
3861
3862 \begin_layout Standard
3863
3864 {
3865 \end_layout
3866
3867 \end_inset
3868
3869 3
3870 \begin_inset ERT
3871 status collapsed
3872
3873 \begin_layout Standard
3874
3875 }
3876 \end_layout
3877
3878 \end_inset
3879
3880 *
3881 \begin_inset ERT
3882 status collapsed
3883
3884 \begin_layout Standard
3885
3886 {
3887 \end_layout
3888
3889 \end_inset
3890
3891
3892 \begin_inset ERT
3893 status collapsed
3894
3895 \begin_layout Standard
3896
3897
3898 \backslash
3899 rotatebox{90}{
3900 \end_layout
3901
3902 \end_inset
3903
3904 1024
3905 \begin_inset Formula $^2$
3906 \end_inset
3907
3908
3909 \begin_inset ERT
3910 status collapsed
3911
3912 \begin_layout Standard
3913
3914 }
3915 \end_layout
3916
3917 \end_inset
3918
3919
3920 \begin_inset ERT
3921 status collapsed
3922
3923 \begin_layout Standard
3924
3925 }
3926 \end_layout
3927
3928 \end_inset
3929
3930
3931 \end_layout
3932
3933 \end_inset
3934 </cell>
3935 <cell alignment="left" valignment="top" rightline="true" usebox="none">
3936 \begin_inset Text
3937
3938 \begin_layout Standard
3939
3940 \size footnotesize
3941
3942 t (ms) 
3943 \end_layout
3944
3945 \end_inset
3946 </cell>
3947 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
3948 \begin_inset Text
3949
3950 \begin_layout Standard
3951
3952 \size footnotesize
3953
3954 0.20 
3955 \end_layout
3956
3957 \end_inset
3958 </cell>
3959 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3960 \begin_inset Text
3961
3962 \begin_layout Standard
3963
3964 \size footnotesize
3965
3966 0.74 
3967 \end_layout
3968
3969 \end_inset
3970 </cell>
3971 <cell alignment="center" valignment="top" rightline="true" usebox="none">
3972 \begin_inset Text
3973
3974 \begin_layout Standard
3975
3976 \size footnotesize
3977
3978 2.39 
3979 \end_layout
3980
3981 \end_inset
3982 </cell>
3983 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3984 \begin_inset Text
3985
3986 \end_inset
3987 </cell>
3988 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3989 \begin_inset Text
3990
3991 \end_inset
3992 </cell>
3993 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3994 \begin_inset Text
3995
3996 \end_inset
3997 </cell>
3998 <cell alignment="none" valignment="top" rightline="true" usebox="none">
3999 \begin_inset Text
4000
4001 \end_inset
4002 </cell>
4003 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4004 \begin_inset Text
4005
4006 \end_inset
4007 </cell>
4008 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4009 \begin_inset Text
4010
4011 \end_inset
4012 </cell>
4013 </row>
4014 <row>
4015 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4016 \begin_inset Text
4017
4018 \end_inset
4019 </cell>
4020 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4021 \begin_inset Text
4022
4023 \begin_layout Standard
4024
4025 \size footnotesize
4026
4027
4028 \begin_inset Formula $T_{8}$
4029 \end_inset
4030
4031  (Mpix/s)
4032 \end_layout
4033
4034 \end_inset
4035 </cell>
4036 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4037 \begin_inset Text
4038
4039 \begin_layout Standard
4040
4041 \size footnotesize
4042
4043 1644 
4044 \end_layout
4045
4046 \end_inset
4047 </cell>
4048 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4049 \begin_inset Text
4050
4051 \begin_layout Standard
4052
4053 \size footnotesize
4054
4055 889 
4056 \end_layout
4057
4058 \end_inset
4059 </cell>
4060 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4061 \begin_inset Text
4062
4063 \begin_layout Standard
4064
4065 \size footnotesize
4066
4067 371 
4068 \end_layout
4069
4070 \end_inset
4071 </cell>
4072 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4073 \begin_inset Text
4074
4075 \end_inset
4076 </cell>
4077 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4078 \begin_inset Text
4079
4080 \end_inset
4081 </cell>
4082 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4083 \begin_inset Text
4084
4085 \end_inset
4086 </cell>
4087 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4088 \begin_inset Text
4089
4090 \end_inset
4091 </cell>
4092 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4093 \begin_inset Text
4094
4095 \end_inset
4096 </cell>
4097 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4098 \begin_inset Text
4099
4100 \end_inset
4101 </cell>
4102 </row>
4103 <row>
4104 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4105 \begin_inset Text
4106
4107 \end_inset
4108 </cell>
4109 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4110 \begin_inset Text
4111
4112 \begin_layout Standard
4113
4114 \size footnotesize
4115
4116
4117 \begin_inset Formula $T_{16}$
4118 \end_inset
4119
4120  (Mpix/s)
4121 \end_layout
4122
4123 \end_inset
4124 </cell>
4125 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4126 \begin_inset Text
4127
4128 \begin_layout Standard
4129
4130 \size footnotesize
4131
4132 1045 
4133 \end_layout
4134
4135 \end_inset
4136 </cell>
4137 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4138 \begin_inset Text
4139
4140 \begin_layout Standard
4141
4142 \size footnotesize
4143
4144 692 
4145 \end_layout
4146
4147 \end_inset
4148 </cell>
4149 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4150 \begin_inset Text
4151
4152 \begin_layout Standard
4153
4154 \size footnotesize
4155
4156 329 
4157 \end_layout
4158
4159 \end_inset
4160 </cell>
4161 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4162 \begin_inset Text
4163
4164 \end_inset
4165 </cell>
4166 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4167 \begin_inset Text
4168
4169 \end_inset
4170 </cell>
4171 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4172 \begin_inset Text
4173
4174 \end_inset
4175 </cell>
4176 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4177 \begin_inset Text
4178
4179 \end_inset
4180 </cell>
4181 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4182 \begin_inset Text
4183
4184 \end_inset
4185 </cell>
4186 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4187 \begin_inset Text
4188
4189 \end_inset
4190 </cell>
4191 </row>
4192 <row>
4193 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4194 \begin_inset Text
4195
4196 \begin_layout Standard
4197
4198 \size footnotesize
4199
4200
4201 \begin_inset ERT
4202 status collapsed
4203
4204 \begin_layout Standard
4205
4206
4207 \backslash
4208 whline
4209 \end_layout
4210
4211 \end_inset
4212
4213  
4214 \begin_inset ERT
4215 status collapsed
4216
4217 \begin_layout Standard
4218
4219
4220 \backslash
4221 multirow
4222 \end_layout
4223
4224 \end_inset
4225
4226
4227 \begin_inset ERT
4228 status collapsed
4229
4230 \begin_layout Standard
4231
4232 {
4233 \end_layout
4234
4235 \end_inset
4236
4237 3
4238 \begin_inset ERT
4239 status collapsed
4240
4241 \begin_layout Standard
4242
4243 }
4244 \end_layout
4245
4246 \end_inset
4247
4248 *
4249 \begin_inset ERT
4250 status collapsed
4251
4252 \begin_layout Standard
4253
4254 {
4255 \end_layout
4256
4257 \end_inset
4258
4259
4260 \begin_inset ERT
4261 status collapsed
4262
4263 \begin_layout Standard
4264
4265
4266 \backslash
4267 rotatebox{90}{
4268 \end_layout
4269
4270 \end_inset
4271
4272 2048
4273 \begin_inset Formula $^2$
4274 \end_inset
4275
4276
4277 \begin_inset ERT
4278 status collapsed
4279
4280 \begin_layout Standard
4281
4282 }
4283 \end_layout
4284
4285 \end_inset
4286
4287
4288 \begin_inset ERT
4289 status collapsed
4290
4291 \begin_layout Standard
4292
4293 }
4294 \end_layout
4295
4296 \end_inset
4297
4298
4299 \end_layout
4300
4301 \end_inset
4302 </cell>
4303 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4304 \begin_inset Text
4305
4306 \begin_layout Standard
4307
4308 \size footnotesize
4309
4310 t (ms) 
4311 \end_layout
4312
4313 \end_inset
4314 </cell>
4315 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4316 \begin_inset Text
4317
4318 \begin_layout Standard
4319
4320 \size footnotesize
4321
4322 0.79 
4323 \end_layout
4324
4325 \end_inset
4326 </cell>
4327 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4328 \begin_inset Text
4329
4330 \begin_layout Standard
4331
4332 \size footnotesize
4333
4334 2.95 
4335 \end_layout
4336
4337 \end_inset
4338 </cell>
4339 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4340 \begin_inset Text
4341
4342 \begin_layout Standard
4343
4344 \size footnotesize
4345
4346 9.53 
4347 \end_layout
4348
4349 \end_inset
4350 </cell>
4351 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4352 \begin_inset Text
4353
4354 \end_inset
4355 </cell>
4356 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4357 \begin_inset Text
4358
4359 \end_inset
4360 </cell>
4361 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4362 \begin_inset Text
4363
4364 \end_inset
4365 </cell>
4366 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4367 \begin_inset Text
4368
4369 \end_inset
4370 </cell>
4371 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4372 \begin_inset Text
4373
4374 \end_inset
4375 </cell>
4376 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4377 \begin_inset Text
4378
4379 \end_inset
4380 </cell>
4381 </row>
4382 <row>
4383 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4384 \begin_inset Text
4385
4386 \end_inset
4387 </cell>
4388 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4389 \begin_inset Text
4390
4391 \begin_layout Standard
4392
4393 \size footnotesize
4394
4395
4396 \begin_inset Formula $T_{8}$
4397 \end_inset
4398
4399  (Mpix/s)
4400 \end_layout
4401
4402 \end_inset
4403 </cell>
4404 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4405 \begin_inset Text
4406
4407 \begin_layout Standard
4408
4409 \size footnotesize
4410
4411 1805 
4412 \end_layout
4413
4414 \end_inset
4415 </cell>
4416 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4417 \begin_inset Text
4418
4419 \begin_layout Standard
4420
4421 \size footnotesize
4422
4423 936 
4424 \end_layout
4425
4426 \end_inset
4427 </cell>
4428 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4429 \begin_inset Text
4430
4431 \begin_layout Standard
4432
4433 \size footnotesize
4434
4435 379 
4436 \end_layout
4437
4438 \end_inset
4439 </cell>
4440 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4441 \begin_inset Text
4442
4443 \end_inset
4444 </cell>
4445 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4446 \begin_inset Text
4447
4448 \end_inset
4449 </cell>
4450 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4451 \begin_inset Text
4452
4453 \end_inset
4454 </cell>
4455 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4456 \begin_inset Text
4457
4458 \end_inset
4459 </cell>
4460 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4461 \begin_inset Text
4462
4463 \end_inset
4464 </cell>
4465 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4466 \begin_inset Text
4467
4468 \end_inset
4469 </cell>
4470 </row>
4471 <row>
4472 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4473 \begin_inset Text
4474
4475 \end_inset
4476 </cell>
4477 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4478 \begin_inset Text
4479
4480 \begin_layout Standard
4481
4482 \size footnotesize
4483
4484
4485 \begin_inset Formula $T_{16}$
4486 \end_inset
4487
4488  (Mpix/s)
4489 \end_layout
4490
4491 \end_inset
4492 </cell>
4493 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4494 \begin_inset Text
4495
4496 \begin_layout Standard
4497
4498 \size footnotesize
4499
4500 1130 
4501 \end_layout
4502
4503 \end_inset
4504 </cell>
4505 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4506 \begin_inset Text
4507
4508 \begin_layout Standard
4509
4510 \size footnotesize
4511
4512 729 
4513 \end_layout
4514
4515 \end_inset
4516 </cell>
4517 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4518 \begin_inset Text
4519
4520 \begin_layout Standard
4521
4522 \size footnotesize
4523
4524 338 
4525 \end_layout
4526
4527 \end_inset
4528 </cell>
4529 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4530 \begin_inset Text
4531
4532 \end_inset
4533 </cell>
4534 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4535 \begin_inset Text
4536
4537 \end_inset
4538 </cell>
4539 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4540 \begin_inset Text
4541
4542 \end_inset
4543 </cell>
4544 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4545 \begin_inset Text
4546
4547 \end_inset
4548 </cell>
4549 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4550 \begin_inset Text
4551
4552 \end_inset
4553 </cell>
4554 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4555 \begin_inset Text
4556
4557 \end_inset
4558 </cell>
4559 </row>
4560 <row>
4561 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4562 \begin_inset Text
4563
4564 \begin_layout Standard
4565
4566 \size footnotesize
4567
4568
4569 \begin_inset ERT
4570 status collapsed
4571
4572 \begin_layout Standard
4573
4574
4575 \backslash
4576 whline
4577 \end_layout
4578
4579 \end_inset
4580
4581  
4582 \begin_inset ERT
4583 status collapsed
4584
4585 \begin_layout Standard
4586
4587
4588 \backslash
4589 multirow
4590 \end_layout
4591
4592 \end_inset
4593
4594
4595 \begin_inset ERT
4596 status collapsed
4597
4598 \begin_layout Standard
4599
4600 {
4601 \end_layout
4602
4603 \end_inset
4604
4605 3
4606 \begin_inset ERT
4607 status collapsed
4608
4609 \begin_layout Standard
4610
4611 }
4612 \end_layout
4613
4614 \end_inset
4615
4616 *
4617 \begin_inset ERT
4618 status collapsed
4619
4620 \begin_layout Standard
4621
4622 {
4623 \end_layout
4624
4625 \end_inset
4626
4627
4628 \begin_inset ERT
4629 status collapsed
4630
4631 \begin_layout Standard
4632
4633
4634 \backslash
4635 rotatebox{90}{
4636 \end_layout
4637
4638 \end_inset
4639
4640 4096
4641 \begin_inset Formula $^2$
4642 \end_inset
4643
4644
4645 \begin_inset ERT
4646 status collapsed
4647
4648 \begin_layout Standard
4649
4650 }
4651 \end_layout
4652
4653 \end_inset
4654
4655
4656 \begin_inset ERT
4657 status collapsed
4658
4659 \begin_layout Standard
4660
4661 }
4662 \end_layout
4663
4664 \end_inset
4665
4666
4667 \end_layout
4668
4669 \end_inset
4670 </cell>
4671 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4672 \begin_inset Text
4673
4674 \begin_layout Standard
4675
4676 \size footnotesize
4677
4678 t (ms) 
4679 \end_layout
4680
4681 \end_inset
4682 </cell>
4683 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4684 \begin_inset Text
4685
4686 \begin_layout Standard
4687
4688 \size footnotesize
4689
4690 3.17 
4691 \end_layout
4692
4693 \end_inset
4694 </cell>
4695 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4696 \begin_inset Text
4697
4698 \begin_layout Standard
4699
4700 \size footnotesize
4701
4702 11.77 
4703 \end_layout
4704
4705 \end_inset
4706 </cell>
4707 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4708 \begin_inset Text
4709
4710 \begin_layout Standard
4711
4712 \size footnotesize
4713
4714 38.06 
4715 \end_layout
4716
4717 \end_inset
4718 </cell>
4719 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4720 \begin_inset Text
4721
4722 \end_inset
4723 </cell>
4724 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4725 \begin_inset Text
4726
4727 \end_inset
4728 </cell>
4729 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4730 \begin_inset Text
4731
4732 \end_inset
4733 </cell>
4734 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4735 \begin_inset Text
4736
4737 \end_inset
4738 </cell>
4739 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4740 \begin_inset Text
4741
4742 \end_inset
4743 </cell>
4744 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4745 \begin_inset Text
4746
4747 \end_inset
4748 </cell>
4749 </row>
4750 <row>
4751 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4752 \begin_inset Text
4753
4754 \end_inset
4755 </cell>
4756 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4757 \begin_inset Text
4758
4759 \begin_layout Standard
4760
4761 \size footnotesize
4762
4763
4764 \begin_inset Formula $T_{8}$
4765 \end_inset
4766
4767  (Mpix/s)
4768 \end_layout
4769
4770 \end_inset
4771 </cell>
4772 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4773 \begin_inset Text
4774
4775 \begin_layout Standard
4776
4777 \size footnotesize
4778
4779 1854 
4780 \end_layout
4781
4782 \end_inset
4783 </cell>
4784 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4785 \begin_inset Text
4786
4787 \begin_layout Standard
4788
4789 \size footnotesize
4790
4791 951 
4792 \end_layout
4793
4794 \end_inset
4795 </cell>
4796 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4797 \begin_inset Text
4798
4799 \begin_layout Standard
4800
4801 \size footnotesize
4802
4803 382 
4804 \end_layout
4805
4806 \end_inset
4807 </cell>
4808 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4809 \begin_inset Text
4810
4811 \end_inset
4812 </cell>
4813 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4814 \begin_inset Text
4815
4816 \end_inset
4817 </cell>
4818 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4819 \begin_inset Text
4820
4821 \end_inset
4822 </cell>
4823 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4824 \begin_inset Text
4825
4826 \end_inset
4827 </cell>
4828 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4829 \begin_inset Text
4830
4831 \end_inset
4832 </cell>
4833 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4834 \begin_inset Text
4835
4836 \end_inset
4837 </cell>
4838 </row>
4839 <row>
4840 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4841 \begin_inset Text
4842
4843 \end_inset
4844 </cell>
4845 <cell alignment="left" valignment="top" rightline="true" usebox="none">
4846 \begin_inset Text
4847
4848 \begin_layout Standard
4849
4850 \size footnotesize
4851
4852
4853 \begin_inset Formula $T_{16}$
4854 \end_inset
4855
4856  (Mpix/s)
4857 \end_layout
4858
4859 \end_inset
4860 </cell>
4861 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4862 \begin_inset Text
4863
4864 \begin_layout Standard
4865
4866 \size footnotesize
4867
4868 1151 
4869 \end_layout
4870
4871 \end_inset
4872 </cell>
4873 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4874 \begin_inset Text
4875
4876 \begin_layout Standard
4877
4878 \size footnotesize
4879
4880 738 
4881 \end_layout
4882
4883 \end_inset
4884 </cell>
4885 <cell alignment="center" valignment="top" rightline="true" usebox="none">
4886 \begin_inset Text
4887
4888 \begin_layout Standard
4889
4890 \size footnotesize
4891
4892 340 
4893 \end_layout
4894
4895 \end_inset
4896 </cell>
4897 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4898 \begin_inset Text
4899
4900 \end_inset
4901 </cell>
4902 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4903 \begin_inset Text
4904
4905 \end_inset
4906 </cell>
4907 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4908 \begin_inset Text
4909
4910 \end_inset
4911 </cell>
4912 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4913 \begin_inset Text
4914
4915 \end_inset
4916 </cell>
4917 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4918 \begin_inset Text
4919
4920 \end_inset
4921 </cell>
4922 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4923 \begin_inset Text
4924
4925 \end_inset
4926 </cell>
4927 </row>
4928 <row>
4929 <cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
4930 \begin_inset Text
4931
4932 \begin_layout Standard
4933
4934 \size footnotesize
4935
4936
4937 \begin_inset ERT
4938 status collapsed
4939
4940 \begin_layout Standard
4941
4942
4943 \backslash
4944 whline
4945 \end_layout
4946
4947 \end_inset
4948
4949
4950 \end_layout
4951
4952 \end_inset
4953 </cell>
4954 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4955 \begin_inset Text
4956
4957 \end_inset
4958 </cell>
4959 <cell alignment="none" valignment="top" leftline="true" rightline="true" usebox="none">
4960 \begin_inset Text
4961
4962 \end_inset
4963 </cell>
4964 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4965 \begin_inset Text
4966
4967 \end_inset
4968 </cell>
4969 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4970 \begin_inset Text
4971
4972 \end_inset
4973 </cell>
4974 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4975 \begin_inset Text
4976
4977 \end_inset
4978 </cell>
4979 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4980 \begin_inset Text
4981
4982 \end_inset
4983 </cell>
4984 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4985 \begin_inset Text
4986
4987 \end_inset
4988 </cell>
4989 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4990 \begin_inset Text
4991
4992 \end_inset
4993 </cell>
4994 <cell alignment="none" valignment="top" rightline="true" usebox="none">
4995 \begin_inset Text
4996
4997 \end_inset
4998 </cell>
4999 <cell alignment="none" valignment="top" rightline="true" usebox="none">
5000 \begin_inset Text
5001
5002 \end_inset
5003 </cell>
5004 </row>
5005 </lyxtabular>
5006
5007 \end_inset
5008
5009
5010 \size default
5011  
5012 \begin_inset Caption
5013
5014 \begin_layout Standard
5015
5016 Runtime and pixel throughput of fast median kernels processing 8 and 16 bit-coded gray-level images and run by C2070 GPU.
5017 \end_layout
5018
5019 \end_inset
5020
5021
5022 \end_layout
5023
5024 \begin_layout Standard
5025
5026
5027 \begin_inset CommandInset label
5028 LatexCommand label
5029 name "tabresults"
5030
5031 \end_inset
5032
5033  
5034 \end_layout
5035
5036 \end_inset
5037
5038
5039 \end_layout
5040
5041 \begin_layout Standard
5042
5043  
5044 \begin_inset CommandInset bibtex
5045 LatexCommand bibtex
5046 bibfiles "biblio3"
5047 options "plain"
5048
5049 \end_inset
5050
5051  
5052 \end_layout
5053
5054 \end_body
5055 \end_document