                 + ts.frame_y * (ti.bx * dstress.y);                      // ( 0,  bx,   0) * dstress
         Deriv dfa = -dfb-dfc;
 
-//        df[t.ia] -= dfa;
-//        df[t.ib] -= dfb;
-//        df[t.ic] -= dfc;
+#if defined(__CUDA_ARCH__) &&  __CUDA_ARCH__ < 110
+        df[t.ia] -= dfa;
+        df[t.ib] -= dfb;
+        df[t.ic] -= dfc;
+#else
         atomicAdd(&(df[t.ia].x), -dfa.x);
         atomicAdd(&(df[t.ia].y), -dfa.y);
         atomicAdd(&(df[t.ia].z), -dfa.z);

        atomicAdd(&(f[t.ic].x), fc.x);
        atomicAdd(&(f[t.ic].y), fc.y);
        atomicAdd(&(f[t.ic].z), fc.z);

}

typedef CudaVec3<float> Coord;

#include "CudaCommon.h"
#include "CudaMath.h"
#include "cuda.h"

#if defined(__CUDA_ARCH__) &&  __CUDA_ARCH__ < 110
#if defined(_MSC_VER)
#pragma warning __CUDA_ARCH__ is too low for atomics
#else
#warning __CUDA_ARCH__ is too low for atomics
#endif
#endif

#if defined(__cplusplus) && CUDA_VERSION < 2000
namespace sofa
