'ArrayFire: Translate a batch of images at the same time

I'm using arrayfire and I need to translate a lot of images at once and store it in a new array. The images are contained in a single array of size (w, h, c, b) and the amount by which each image needs to be translated is inside a (2, 1, 1, b) array.

The sequential implementation is as follows

for (int i=0; i<b; i++)
{
    float x = coords(0, 0, 0, i).scalar<float>();
    float y = coords(1, 0, 0, i).scalar<float>();
    af::array t_imgs(af::span,af::span,af::span,i) = 
        af::translate(imgs(af::span,af::span,af::span,i), x, y);
}

How could I parallelize it? Translate doesn't accept arrays as arguments, so I can't do something like this:

gfor(af::seq i, b)
{
    af::array x = coords(0, 0, 0, i);
    af::array y = coords(1, 0, 0, i);
    t_imgs(af::span,af::span,af::span,i) = 
       af::translate(imgs(af::span,af::span,af::span,i), x, y);
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source