Bank conflicts in 2D kernel

Suppose our hardware has 32 banks of 4 byte width. And we have a 1D kernel
of size 32, and a local 1D array of ints.

Then, ensuring that each consecutive thread accesses consecutive
memory locations in the array should avoid bank conflicts.

But, suppose we have an 8 x 4 2D kernel and the same 1D array.
How can I ensure that there are no bank conflicts? How do we define
“consecutive thread” for a 2D array?