 ////////////////////////////////////////////////////////////////////////////////
 
 ////////////////////////////////////////////////////////////////////////////////
-__global__ void update_shared_single(float* device_u, float* device_u_, float2* device_p,
+__global__ void update_shared_single(float* device_u, float2* device_p,
                                      float tau, float theta, float sigma, float lambda,
                                      int width, int height, int stride1, int stride2)
 {


  if(x<width && y<height)
  {
    // Load p
    __shared__ float2 p[BSX][BSY];
    p[threadIdx.x][threadIdx.y] = tex2D(rof_tex_p, x+0.5f, y+0.5f);

    // Load u_
    __shared__ float u_[BSX][BSY];
    u_[threadIdx.x][threadIdx.y] = tex2D(rof_tex_u_, x+0.5f, y+0.5f);

    syncthreads();


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void rof_primal_dual_shared_single(iu::ImageGpu_32f_C1* device_f, iu::ImageGpu_32f_C1* device_u,
                                   iu::ImageGpu_32f_C1* device_u_, iu::ImageGpu_32f_C2* device_p,
                                   float lambda, int max_iter)
{
  int width = device_f->width();
  int height = device_f->height();
