         {
             int I_q = I + mq*zs;  
             double gupdate = 0.5*dtdx*bpasdq[mq];
-            gm[I_q + ys] -= gupdate;
-            gp[I_q + ys] -= gupdate;
+            //gm[I_q + ys] -= gupdate;
+            //gp[I_q + ys] -= gupdate;
+            atomicAdd(&gm[I_q + ys],-gupdate);
+            atomicAdd(&gp[I_q + ys],-gupdate);
         }
         
     } 
-    __syncthreads();
+    //__syncthreads();
 
     
     /* ----------------------------- Transverse : Y-faces ----------------------------- */

        {
            int I_q = I + mq*zs;  
            double gupdate = 0.5*dtdx*bpasdq[mq];
            gm[I_q - 1 + ys] -= gupdate;
            gp[I_q - 1 + ys] -= gupdate;
        }        
    }
    __syncthreads();


    /*     transverse-x

        {
            int I_q = I + mq*zs;  
            double gupdate = 0.5*dtdx*bmasdq[mq];
            //gm[I_q] -= gupdate;       
            //gp[I_q] -= gupdate;
            atomicAdd(&gm[I_q],-gupdate);
            atomicAdd(&gp[I_q],-gupdate);
        }
    }
    //__syncthreads();


    /*     transverse-x
