reduced global memory reads and writes. neighbors still updated every iteration