Research Article

Three Strategies for Improving Shortest Vector Enumeration Using GPUs

Algorithm 4

The proposed GPU-based pruned enumeration.
(1)Input: basis , and a small integer
(2)Compute the quadratic norm of the Gram–Schmidt orthogonalization basis and coefficients and for
(3)Generate a better basis using Algorithm 2
(4)Determine the best choice of level using the strategy shown in Section 5.1.2,
(5)while true do
(6) denotes the number of elements
(7) Generate GPU-points on level using Algorithm 3
(8)
(9)ifthen
(10)  Enumerate the GPU-points in on CPU
(11)  ;
(12)end if
(13) Copy to GPU memories
(14) Start the GPU stage
(15)for eachdo
(16)  if the current enumeration corresponding to a start-point is cut off or reaches level then
(17)   Produce a neighbor-point of the start-point
(18)   Calculate for the neighbor-point
(19)   ifthen
(20)    The enumeration corresponding to is launched on the current thread
(21)   else
(22)    if this start-point is the last point in then
(23)     Stop enumeration on GPU and return to CPU
(24)    end if
(25)    Set a flag that indicates that the start-point terminates its corresponding enumeration
(26)    Select a new start-point and launch its corresponding enumeration on the current thread
(27)   end if
(28)  end if
(29)end for each
(30) Stop the GPU stage
(31) Copy start points that terminate their enumerations in GPU to
(32)
(33)end while
(34)Output: a shorter vector