On 2013-02-10 02:22, Sparsh Mittal wrote:
The current reply answers my question, but I was just curious. Can we have a
method which divides the 2d region as follows: 8*12 divided into 4*6 to each of
4 threads.

Think again if you need that. Things start getting pretty ugly. :)

    const uint parts = 2; // in each dimension
    foreach (block; parallel(iota(parts*parts))) {
        uint p1 = block / parts;
        foreach (i; (p1*N/parts)..(p1==parts-1 ? N : (p1+1)*N/parts)) {
            uint p2 = block % parts;
            foreach (j; (p2*M/parts)..(p2==parts-1 ? M : (p2+1)*M/parts)) {
                func(i, j, p1, p2, block);
            }
        }
    }


Reply via email to