Lattice Sieving - Treatments of The Inmost Loop

Treatments of The Inmost Loop

There are a number of clever approaches to implementing the inmost loop, since listing the elements of a lattice within a rectangular region efficiently is itself a non-trivial problem, and efficiently batching together updates to a sieve region in order to take advantage of cache structures is another non-trivial problem. The normal solution to the first is to have an ordering of the lattice points defined by couple of generators picked so that the decision rule which takes you from one lattice point to the next is straightforward; the normal solution to the second is to collect a series of lists of updates to sub-regions of the array smaller than the size of the level-2 cache, with the number of lists being roughly the number of lines in the L1 cache so that adding an entry to a list is generally a cache hit, and then applying the lists of updates one at a time, where each application will be a level-2 cache hit. For this to be efficient you need to be able to store a number of updates at least comparable to the size of the sieve array, so this can be quite profligate in memory usage.

Read more about this topic:  Lattice Sieving

Famous quotes containing the word inmost:

    Until I was twenty-five, I had no development at all. From my twenty-fifth year I date my life. Three weeks have scarcely passed, at any time between then and now, that I have not unfolded within myself. But I feel that I am now come to the inmost leaf of the bulb, and that shortly the flower must fall to the mould.
    Herman Melville (1819–1891)