     dim3 blocks(gradInput->size[0]);
     dim3 threads(LOGSOFTMAX_THREADS);
 
-    cunn_OneVsAllMultiMarginCriterion_updateGradInput_kernel<1> <<<blocks,threads>>>(THCudaTensor_data(state, gradInput),
+    cunn_OneVsAllMultiMarginCriterion_updateGradInput_kernel <<<blocks,threads>>>(THCudaTensor_data(state, gradInput),
                                                                          THCudaTensor_data(state, input),
                                                                          THCudaTensor_data(state, target),
                                                                          gradInput->size[0], gradInput->size[1],


    THCudaTensor_fill(state, target, target_);

    cunn_OneVsAllMultiMarginCriterion_updateGradInput_kernel<1> <<<blocks,threads>>>(THCudaTensor_data(state, gradInput),
                                                                         THCudaTensor_data(state, input),
                                                                         THCudaTensor_data(state, target),
                                                                         1, gradInput->size[0],

    float y = (i==target_k) ? 1.0 : -1.0;
    float z = 1 - input_k[i]*y;         
    if(z > 0)
        buffer[threadIdx.x] += z;
  }
  __syncthreads();

