- About this Journal
- Abstracting and Indexing
- Aims and Scope
- Article Processing Charges
- Articles in Press
- Author Guidelines
- Bibliographic Information
- Citations to this Journal
- Contact Information
- Editorial Board
- Editorial Workflow
- Free eTOC Alerts
- Publication Ethics
- Reviewers Acknowledgment
- Submit a Manuscript
- Subscription Information
- Table of Contents
Volume 2012 (2012), Article ID 268402, 15 pages
Design Space Exploration of Deeply Nested Loop 2D Filtering and 6 Level FSBM Algorithm Mapped onto Systolic Array
Department of ECE, Amrita Vishwa Vidyapeetham, Coimbatore 641 112, India
Received 26 December 2011; Revised 9 April 2012; Accepted 23 April 2012
Academic Editor: Sungjoo Yoo
Copyright © 2012 B. Bala Tripura Sundari. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.
The high integration density in today's VLSI chips offers enormous computing power to be utilized by the design of parallel computing hardware. The implementation of computationally intensive algorithms represented by -dimensional (-D) nested loop algorithms, onto parallel array architecture is termed as mapping. The methodologies adopted for mapping these algorithms onto parallel hardware often use heuristic search that requires a lot of computational effort to obtain near optimal solutions. We propose a new mapping procedure wherein a lower dimensional subspace (of the -D problem space) of inner loop is identified, in which lies the computational expression that generates the output or outputs of the -D problem. The processing elements (PE array) are assigned to the identified sub-space and the reuse of the PE array is through the assignment of the PE array to the successive sub-spaces in consecutive clock cycles/periods (CPs) to complete the computational tasks of the -D problem. The above is used to develop our proposed modified heuristic search to arrive at optimal design and the complexity comparisons are given. The MATLAB results of the new search and the design space trade-off analysis using the high-level synthesis tool are presented for two typical computationally intensive nested loop algorithms—the 6D FSBM and the 4D edge detection alternatively known as the 2D filtering algorithm.
1.1. Prelude to the New Search Method
Today’s reconfigurable SoCs feature processing elements (PEs) with significant amount of programmable logic fabric present on the same die. The management of complexity and tapping the full potential of these RSoC architectures present many challenges . A large number of heuristic algorithms have been used in developing many novel scheduling and mapping algorithms [2–5]. However, these approaches face difficulties in dealing with large execution times.
-dimensional (-D) nested loop representations are used in the formulation of numerous computationally intensive multimedia computing/image processing and signal processing algorithms. Systolic array design style can effectively exploit parallelism inherent in the nested loop algorithm and, therefore, reduce processing time [2, 3]. Often heuristic procedures are used to search for the mapping transformations that are used to map the nested loop algorithms onto array architectures [4, 5]. Since the effort that goes into heuristic search is large and complex, the challenge lies in improving the process to reduce the computational effort in getting the mapping results.
Our main contribution in this paper is that we propose an augmented approach to the heuristic search. A new method of identifying the subspace to which the PE array is to be assigned is proposed based on the directional index of the computational expression that is explained in Section 2. The new vectors and terminologies used in the procedure are defined and elaborated in Section 2.
A modified heuristic search is implemented using the proposed procedure to determine the optimal solution to the -D problem. The complexity analysis is performed by comparing the search space used in our method with the search space in . The high-level synthesis tool GAUT is used to plot the design space trade-off curves to obtain the design space exploration curves.
The paper is organized as follows: in Section 3, mapping steps used in the heuristic method and our proposed modified search method are described. The 4D nested loop formulation of the 2D filtering problem is explained in Section 4. The methodology and the implementation of the above approach for the 2D filtering algorithm and the mapping results are presented in Section 4. The mapping process for 6D FSBM is elaborated in Section 5 followed by the results of the heuristic search for the reduced 4D FSBM and modified heuristic search for the same in Section 6. The design trade-off results using the high-level synthesis tool GAUT are presented in Section 6. Section 7 discusses the complexity considerations and comparisons. Section 8 gives the conclusion and future work.
2. Terminologies and Definitions
2.1. Axis Vector I
The multidimensional (-D) problem is associated with an -dimensional axis vector I. Its components are , where the subscripts of the components belong to the integer set . The components of the vector I represent the different axis directions of the -dimensional vector I. The letter K is used to represent a constant vector whose components are different constant numbers, K= . Each represents the upper limit of the corresponding vector component of the vector I. For example, axis component has a value varying from to .
2.2. Data Representations
Considering the input data set to the algorithm, the input data is represented using letter A with subscript . The input data set consists of collection of data where is some constant integer number. Each of this type of data is associated with the axis vector I. For example, for , we call it as . Now every such data is associated with a particular axis component in I. is the axis vector along which the data is read into the -D multidimensional algorithm using a set of ports. The input data is represented as . This means that input data is fed along axis. The corresponding word size is , and the port size required to feed this data is . The input data is reused either within the same computation or in different computations within iteration (depending on the application considered). If the reuse is within the same clock cycle/clock period CP, it is made possible by propagating the data (with zero delay) termed as data broadcast. The reuse direction of each data is represented by the directional vector termed as the “dependence vector”—. is determined as follows: as shown in Listing 1, the data on the LHS is assigned from the data on the RHS in equation (1a) in Listing 1. This means that it is broadcast within the same iteration in the direction and fed along the axis using ports (Figure 1).
The output data is represented as which means that the data is output along axis and propagated along direction. When we consider the output data, the word “propagation” is replaced by the term “update direction.” The vector associated with update direction is termed as the Computational Trail Vector (CTV). The updation of CTV may be with delay or without delay as demanded by the application.
The vector representing the update direction in this example is given as
The form of representation of the -D algorithm in Listing 1 wherein the broadcast direction and computations are shown with the complete detail is termed as the uniform recurrence relation or the URE form of the -D nested loop algorithm. In the expression (2) for CTV in Listing 1, the computational output data is represented as (arrow line on top of the symbol) which indicates that it is associated with an update direction. The corresponding vector in the RHS of (2) represents the CTV defined in (1).
The functions and in (3) in Listing 1 are simple commutative operators which are executed independent of any other output component computations of C. These are assumed to be operators with no precedence constraint. especially is an operator that has no precedence constraint. It needs not wait for any past computations. It can proceed independently provided as much parallel hardware is available. There is only one output computation expression in Listing 1. Listing 1 is said to have a single CTV with no precedence constraint.
2.3. -D Nested Loop Problem
A general -D nested loop algorithm is illustrated in Listing 1. , and are the loop indices. Together they form the -D (iteration) index space. Representation of the -D loop computations as a dependence graph (DG) leads to each point in the index space corresponding to a single node in the DG. Theoretically each node can be assigned a processing element (PE). The -D iteration space is constructed as follows.
2.3.1. An -D Iteration Space Computation in Terms of (−1)-D Subspace
First an (−1)-D dependence graph (DG) as in Figure 1 with an (−1) multidimensional indexed positions given by is constructed showing the data input directions and data broadcast directions. Here we show one of the data input directions and data broadcast directions for the sake of illustration. The data specifications or the dependence relations within each cell in the iteration space show the different data broadcast directions as shown in Figure 1.
The -D iteration space is constructed by replicating the (−1)-D iterationspace along the direction. Each (−1)-D subspace is termed as a cell (or iteration). An array of PE is assigned to this cell, and the computation of the cell is completed in 1 clock period (CP). In the next CP, the PE array is assigned to the next cell along the direction. The direction of PE array assignment to consecutive subspaces is termed as the scheduling direction represented as the scheduling vector . As per Listing 1, the CTV is also updated along the same direction. The CTV is partially updated in CP1, and the updation continues as the scheduling advances along the direction in every CP till the completion of computation in CPs.
2.4. Mapping and Scheduling
Any node in the iteration space is and is mapped onto the PE array assigned to the iteration subspace. This is termed as mapping. The time “” at which the node is mapped on the PE in the PE array is termed as scheduling. The mapping and scheduling are derived for each application in detail in the corresponding sections.
2.5. Computation of -D Iteration Space Using an (−2)-D Subspace
In an alternate generalization, we represent the -D nested loop problem as identified to have an iterative (−2)-D subspace as shown in Figure 2. An (−2)-D dependence graph (DG) with an (−2)-D multidimensional indexed positions is given by
The collection of indexed node positions in (3) is termed as the (−2)-D subspace or hyperplane, which is represented showing the data input directions and data broadcast directions in Figure 2(a). The -D iteration space computation is completed by replicating the (−2)-D DG. We expand the iteration space along the direction, followed by its expansion along direction. Each (−2)-D subspace is termed as a cell or iteration cell. An array of PE is assigned to this cell, and the computation of the cell is completed in 1 CP.
A part of the output expression termed as the computational expression is assumed to be computed in the inner loop formed by the (−2)-D iteration space as depicted in Figure 2(a). The directional index representing the propagation direction or the update direction of the computational expression is termed as the Computational Trail Vector (CTV). The CTV is partially updated in CP1, and the updation continues as the scheduling advances along the , showing that in the next CP the PE array is assigned to the next iteration cell along the direction (as shown in Figure 2(b)) to complete the first row of computation in CPs. The sequence direction of subspace assigned to the PE array in consecutive CPs is termed as the scheduling direction represented by the scheduling vector , which is along the direction, and CTV is also updated along the same direction.
Following this, the PE array assignment is done to next giving the scheduling vector as as in Figure 2(b). The total number of CPs used to complete the computation is.
2.6. -D to (−)-D with CTV and Scheduling Directions
In the previous section, the (−1)-D subspace is built using a sequence of (−2)-D subspaces by scheduling along the appropriate (−1)th dimension followed by scheduling along the appropriate th dimension—say along with an assumption that CTV has the same direction as the scheduling vector which may not be true always. There are two approaches to complete the -D computation using the (−2)-D subspaces. The PE array assignment to the (−2)-D subspace is one order closer to the physical realization. For a practical implementation, this process has to be continued down to 2D level.
In general, the direction of updation of the computational expression is defined as a vector termed as the Computational Trail Expression (CTV) of the -D problem. We identify the corresponding (−)-D computational hyperplane in which the CTV lies, forming an (−)-D subspace in the -D space. The PE array is assigned to this plane. This is followed by the reuse of the (−)-D plane along the scheduling direction/s.
3. Methodology of Mapping
The mapping methodology used in the heuristic search of the mapping transformation matrix is explained hereafter. In general, the mapping matrix is constituted of the timing vector or hyperplane and the space matrix or vector also called the space hyperplane [6, 7]. Any node in the iteration space is mapped onto a PE in the PE array using the matrix at a time “” determined by the vector of 
3.1. Heuristic Method 
Step 1. Generate the iteration space for the -D nested loop application under consideration.
Step 2. Find the data dependencies in the algorithm and formulate the dependence vector .
Step 3. The causality constraint is checked for using (5), that is, whether the condition for all dependencies is satisfied, where is dependence vector for each data variable (Table 1). Choose those elements of which satisfy the condition.
Step 4. Generate or modify the search space for the matrix to satisfy the rank condition .
Step 5. Chose a candidate matrix from the above set.
Step 6. Save the candidate matrix in .
3.2. The Proposed Modified Heuristic Method
The following are the steps in our approach for modification of the heuristic search based on the optimal allocation method evolved in Section 2.
Identify the scheduling direction. Once a layer of PEs is assigned to the (−)-D subspace, the same array of PEs is to be used in the next computation. This reuse direction is known as the scheduling direction in Section 2. All these conditions are used in the modified heuristic search procedure in the following steps.
Step 7. The scheduling vector representing the scheduling direction represented by the vector is used to prune down the valid matrices.
Step 8. Prune down the valid matrices by choosing the (−)-D subspace to which the PE plane is discussed. This is done by identifying the iterative subspace. To summarise, the selected is obtained by pruning down the using the CTV and PE plane assignment done as discussed in Section 2.
3.3. Direct Method
3.4. Mapping Process
The main objective is to find the matrix which consists of the processor allocation vector and the scheduling vector .
First we take the boundaries of the search space between which the and are to be searched. The selection of search space is an important factor, because there is an exponential growth in both area and time complexity of the mapping methodology. Consider that are the upper bounds of an -dimensional nested loop algorithm. The heuristic followed in this work is to generate the search space that can be obtained by the following element set .
3.5. Methods and Resources Used in Obtaining the Mapping Methodology
As a whole, the implementation of the mapping methodology consists of two parts. The first is the heuristic search for the mapping. The heuristic search allows us to obtain the near optimal solutions and then pick up the feasible architecture by pruning the solutions based on Steps 4–9 as described in Section 3.3. The new mapping methodology is explained with respect to the 2D filtering algorithm in Section 4. The modified heuristic method based on the new method followed after implementing the steps in Section 3.1 are implemented using MATLAB to obtain the results of the search procedure of Sections 3.1 and 3.2. Also the comparative results between the heuristic and the modified heuristic method for the 6D full search block motion estimation (FSBM) algorithm are given. The second part is the design space exploration of resultant architecture. It is obtained as explained in the next section.
3.6. High-Level Synthesis (HLS)
The input to high-level synthesis system is the problem represented in behavioural description in a high-level language. The optimization in a high-level synthesis is done at a level higher than the boolean optimization done by the RTL synthesis tools. This is suitable for hardware optimization of DSP and image processing algorithms . This is followed by scheduling and allocation . The GAUT  tool used incorporates all the above features and allows the design space exploration.
The algorithm is described in a high-level description in C, and this is used as the input design specification to the high-level synthesis tool. The high-level synthesis tool is used to obtain the Control Data Flow Graph (CDFG). The CDFG allows the designer to verify the design required at a later stage. It allows the tracing of data values as live variables in registers associated with the PE hardware. Also the high-level synthesis tool is used to obtain the design space exploration results which give the area Versus latency tradeoff.
4. Mapping of 2D Filtering Algorithm
4.1. 2D Filtering for Image Processing: A 4D Problem
The problem formulation of Section 2 and the methodology in Section 3 are applied to the 2D filtering problem. 2D filtering or convolution is one of the essential operations in digital image processing required for image enhancements. The grey levels are usually represented with a byte or 8-bit unsigned binary number, ranging from 0 to 255 in decimal. Equation (6) shows the two dimensional discrete convolution algorithm, where represents the input pixel data image, is the window coefficient, and is the output image. The movement of the mask window function to calculate the window function value for the whole image region is shown in Figure 3:
Digital convolution can be thought of as a moving window of operations, where the window that is, mask, is moved from left to right and from top to bottom.
The 2D image filtering problem is a representative example of a 4D nested loop involving 2D convolution, as in Listing 2 and Figure 3. The computation is highly redundant and requires high data reuse. This is considered here for systolic mapping. An image of size 0 to ; 0 to is considered convolved with a mask of size 0 to ; 0 to . The mask coefficients are stored in memory. The significant features of the algorithm are listed in the following section.
4.2. Nested Loop Formulation
The nested loop formulation for the 2D filtering algorithm for image size and window function size is given in Listing 2—the same is represented in uniform recurrence equation form (URE) in Listing 3.
4.3. Single Assignment Statement Formulation or Uniform Recurrence Equation (URE) Form of 2D Filtering
The SAS of the 4D edge detection algorithm is in Listing 3, and the dependence vectors for the four level algorithms have 4 indices and the index space is generated by varying the four index values till the upper limit of each index as in Listing 3. The dependencies give the propagation direction of the input variables and update direction of the output data. In Listing 3, represents the mask values in 2D filtering algorithm that are to be input at the fresh windowing and to indicate the loading of pixel values for a new frame of image.
4.4. Dependence Vectors for 2D Filtering Algorithm
4.5. Delay-Edge Matrix-Direct Method of Determining Delay and Edge Connectivity
The delay edge mapping is obtained by the product of dependence matrix and matrix as shown in Table 2.
Step 11 in the mapping process uses the dependence matrix to compute the edges and delays as follows: (Table 1); the first half in each vector in stands for the scheduling direction and the second half for the PE array directions. The first half (termed as sdd vector—) gives the delays associated with the corresponding edges given by the second half (sde vector = ): This is computed and presented in Table 2.
4.6. Space-Time Mapping Matrix Illustration
The mapping was performed for 1D array. The generalized form of space time mapping matrix is given here as shown in (3); if ; .
4.6.1. Delay-Edge Matrix
The delay edge mapping is obtained by the product of dependence matrix and matrix:
4.7. Direct Method-Edge Connectivity and Delay Registers
The direct method in deriving the delay edge connectivity is obtained from the dependence vector as given in Table 6.(1)The delay edge matrix based on the heuristic search is used to calculate the cost as given in Table 4(a) and the above can be used to pick up the good solution based on minimum cost, but does always guarantee the feasibility. So we do not consider the delay edge obtained from this method.(2)Using the proposed modified search algorithm, 9, 9 or 12, 12 are the number of PEs and number of clock cycles in Table 4(b) (for assumed window size in Table 4(b)) are arrived at after pruning down the search results using the PE-plane subspace based on CTV. (3)As mentioned above, the delay edge connectivity is obtained directly from the dependence matrix directly by considering the scheduling directions for delays and considering the PE directions for the edges as discussed in Section 4.5 and as shown in Table 2 and the architecture is obtained using the mapping results and direct delay_edge connectivity.
4.8. Mapping Results
The cost function is defined as (10) and is used as an additional constraint mentioned to Step 9 in Section 3.2 for selecting architecture according to the modified heuristic method heuristic search Here , , are the scalar coefficients which represent weights for the corresponding costs to minimize the overall cost function.
Figure 4 shows the architecture for edge-detection algorithm. It consists of 2 ports, one for accessing the image data and the other for the output. The architecture consists of PEs, where is the size of the window used. The intermediate output is propagated to the successive PEs within a row but has to be passed through a line buffer when passing the intermediate output between rows of PEs. The buffer width is equal to the number of pixels per row. The final output is at the PE.
Figure 5(a) shows the search results giving the possible solutions including the register cost. Registers represent the delays in the connecting edges which are the result of heuristic search, but which may not be feasible or realizable. The Pareto optimal and near optimal solutions are shown in the plots Figures 5(a) and 5(b) based on the heuristic search and the modified heuristic search, respectively. The modified heuristic search developed by us picks up the good solutions with respect to the number of PEs and cycles concerned, but we see that the register cost does not reflect the Pareto optimal solution and does not guarantee feasibility. The delay-edge connectivity is obtained directly from the dependency vectors as explained in Section 3.3 and in Table 2 for 2D filtering and leads to the feasible architecture in Figure 4.
5. Mapping of 6D FSBM
The main objective is to find the matrix which consists of the processor allocation vector and the scheduling vector . The method used is same as explained in Section 3.
5.1. Dependencies for 6-Level FSBM Algorithm
Dependence vectors formulations have been presented for a reduced index space 4D FSBM algorithm . Due to lack of space, it is not presented.
5.2. Results of Modified Method for FSBM Algorithm
The mapping results after the search are presented here.
5.3. Delay-Edge Connectivity for FSBM Algorithm Using Table 5 Results
(1); the edges we get are same as the elements in at the -direction (hence verified), and the delays . This is obtained as a good solution from Table 5 by selecting the optimum cost taking into consideration the feasibility. (2)The final delay edge is given as follows: The second row is the edge, and the first row is the registers connected obtained as the highest nonzero value, in the values along other indices other than -direction in Listing 2. -direction is the direction of orientation of the systolic array (PE array) in the -D problem space. The above gives a minimal cost connectivity and register delay elements simultaneously satisfying the feasibility and implementability checked by the direct method.
6. Architecture of the FSBM Algorithm
The architecture is arrived at, based on above is in Figure 7.
6.1. Design Space Exploration Using High-Level Synthesis
The design space exploration results are presented in the following based on the architecture arrived at.
6.2. CDFG of the Design
The architecture in Figure 7 is input using a behavioural description using a C type language to the GAUT tool, and it generates the control data flow graph (CDFG) architecture as in Figure 8 and also integrates into ModelSim and Xilinx ISE.
6.3. Results of Design Space Exploration
The high-level synthesis tool allows the designer to input the timing constraint as the cadency values to obtain the tradeoff of allocation of hardware as obtained in Table 7 for for FSBM algorithm.
6.4. Design Space Exploration for
The search range in FSBM algorithm is increased to , and the design space exploration is done in MATLAB for the modified heuristic and also using the HLS GAUT tool.
The results of the above are shown in Figure 9.
7. Complexity Analysis
The merit of the modified heuristic algorithm is measured in terms of the search space complexity.
7.1. Search Space Complexity
In general, in heuristic search procedures, the loop bounds are considered as the maximum values for searching. But as the loop bounds and the nested loop dimension increase, the search space will be huge if vectors are exhaustively generated. A graphical representation of search space expansion with respect to the different values of for -level nested loop algorithms is given in Figure 10.
The “a” bars show the search space obtained by taking the loop bounds, say to , as the limit for each variable, and the “b” bars are obtained by using our proposed modified heuristic elaborated in Section 3, where it is observed from the plot in Figure 10 that the increase in cost is not high.
7.2. Search Space Complexity Tables
Table 9(a) shows the complexity calculations for varying values of and gives a comparison between the general heuristic method and the method presented in this paper.
7.3. 6D Problem Reduced to 4D FSBM  and 4D Problem-2D FIR Filtering Problem
8. Conclusion and Future Work
Many of the computationally intensive algorithms are of -D deeply nested loop type. The methodology of mapping of algorithms involves heuristic search wherein the search complexity is large. The search space of the 2D filtering and 4D FSBM has been pruned down using the scheduling vector and the constraints imposed by it. The search has been performed using MATLAB, for the PE array assigned to the identified (−)-D subspace evolved with the nature of the CTV. The resultant mapping matrix is useful in determining the PE assignment and the exact clock cycle at which a particular node in -D space represented by the DG is mapped onto a PE in the PE array. The search results are presented for 2 computationally intensive applications—2D filtering and the reduced index space 4D FSBM algorithm. The graph in Figure 5(a) corresponds to Table 4(a) showing the heuristic search results that show the distribution of PEs and cycles and cost. Figure 5(b) corresponds to Table 5(b) that gives the number of PEs and cycles pruned down after applying the modified heuristic algorithm. The delay edge connectivity is determined by the proposed direct approach as described in Sections 3.3 and 4.5 using Tables 2 and 4, instead of using the Mapping Transformation Matrix or Tmat in Tables 4(a) and 5(a) as in . The use of high-level synthesis tool is to obtain the CDFG. Also the design space exploration results obtained using high-level synthesis tool GAUT have been presented. The search have been performed for varying search ranges of values and and the number of resources used, and latency for different input cadency values gives the design trade-off results presented in Tables 7 and 8(b) shown in the graph in the Figure 9. The output file of the GAUT tool could be used to interface with simulation tools and synthesis tools to build the RTL design and map it onto target FPGA architecture in the future for elaborate timing verification. The complexity comparison of our method with heuristic method is given in Tables 9(a) and 9(b).
- C. Lee, S. Kim, and S. Ha, “A systematic design space exploration of MPSoC based on synchronous data flow specification,” Journal of Signal Processing Systems, vol. 58, no. 2, pp. 193–213, 2010.
- U. Bondhugula, J. Ramanujam, and P. Sadayappan, “Automatic mapping of nested loops to FPGAS,” in Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP '07), pp. 101–111, San Jose, Calif, USA, March 2007.
- X. Zhang and K. K. Parhi, “High-speed VLSI architectures for the AES algorithm,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 12, no. 9, pp. 957–967, 2004.
- S. Kittitornkun and Y. H. Hu, “Mapping deep nested do-loop DSP algorithms to large scale FPGA array structures,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 11, no. 2, pp. 208–217, 2003.
- D. Peng and M. Lu, “On exploring inter-iteration parallelism within rate-balanced multirate multidimensional DSP algorithms,” IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 13, no. 1, pp. 106–125, 2005.
- P. Lee and Z. M. Kedem, “Synthesizing linear array algorithms from nested for loop algorithms,” IEEE Transactions on Computers, vol. 37, no. 12, pp. 1578–1598, 1988.
- L. Lamport, “The parallel execution of Do loops,” Journal of Communication ACM, vol. 17, no. 2, pp. 83–93, 1974.
- P. Coussy and A. Morawiec, Eds., High-Level Synthesis—From Algorithm to Digital Circuit, Springer, 2008.
- D. D. Gajski, N. D. Dutt, A. C. H. Wu, and S. Y. L. Lin, High Level Synthesis: Introduction to Chip and System Design, Kluwer Academic Press, 1992.
- B. Bala Tripura Sundari, “Dependence vectors and fast search of systolic mapping for computationally intensive image processing algorithms,” in Proceedings of the International Multi-Conference of Engineers and Computer Scientists 2011 (IMECS '11), Kowloon, Hong Kong, March 2011.