assume c ordering for kernels

This commit is contained in:
Jan Petykiewicz 2017-03-26 18:26:59 -07:00
parent c9f093ca6a
commit f364fbc8b6

View File

@ -9,7 +9,7 @@ const int sx = {{shape[0]}};
const int sy = {{shape[1]}}; const int sy = {{shape[1]}};
const int sz = {{shape[2]}}; const int sz = {{shape[2]}};
//Since we use i to index into Ex[], E[], ... rather than E[], do nothing if //Since we use i to index into Ex[], Ey[], ... rather than E[], do nothing if
// i is outside the bounds of Ex[]. // i is outside the bounds of Ex[].
if (i >= sx * sy * sz) { if (i >= sx * sy * sz) {
PYOPENCL_ELWISE_CONTINUE; PYOPENCL_ELWISE_CONTINUE;
@ -18,15 +18,15 @@ if (i >= sx * sy * sz) {
// Given a linear index i and shape (sx, sy, sz), defines x, y, and z // Given a linear index i and shape (sx, sy, sz), defines x, y, and z
// as the 3D indices of the current element (i). // as the 3D indices of the current element (i).
// (ie, converts linear index [i] to field indices (x, y, z) // (ie, converts linear index [i] to field indices (x, y, z)
const int z = i / (sx * sy); const int x = i / (sz * sy);
const int y = (i - z * sx * sy) / sx; const int y = (i - x * sz * sy) / sz;
const int x = (i - y * sx - z * sx * sy); const int z = (i - y * sz - x * sz * sy);
// Calculate linear index offsets corresponding to offsets in 3D // Calculate linear index offsets corresponding to offsets in 3D
// (ie, if E[i] <-> E(x, y, z), then E[i + diy] <-> E(x, y + 1, z) // (ie, if E[i] <-> E(x, y, z), then E[i + diy] <-> E(x, y + 1, z)
const int dix = 1; const int dix = sz * sy;
const int diy = sx; const int diy = sz;
const int diz = sx * sy; const int diz = 1;
//Pointer offsets into the components of a linearized vector-field //Pointer offsets into the components of a linearized vector-field
// (eg. Hx = H + XX, where H and Hx are pointers) // (eg. Hx = H + XX, where H and Hx are pointers)