diff --git a/modules/gpu/src/cuda/ccomponetns.cu b/modules/gpu/src/cuda/ccomponetns.cu
index 1f9dc114ef8f7a5c1739b53a8725103fb3b69470..c11031bcd845ffdbe889107e95c0db401267a49b 100644
--- a/modules/gpu/src/cuda/ccomponetns.cu
+++ b/modules/gpu/src/cuda/ccomponetns.cu
@@ -474,7 +474,7 @@ namespace cv { namespace gpu { namespace device
                         }
                     }
                 }
-            } while (__syncthreads_or(changed));
+            } while (Emulation::sycthOr(changed));
         }
 
         __global__ void flatten(const DevMem2D edges, DevMem2Di comps)
diff --git a/modules/gpu/src/opencv2/gpu/device/emulation.hpp b/modules/gpu/src/opencv2/gpu/device/emulation.hpp
index 0999495aeba91608661b54c1625bfebb890c72f3..e116c50ad00ba44ba46ababb104b886173abb68e 100644
--- a/modules/gpu/src/opencv2/gpu/device/emulation.hpp
+++ b/modules/gpu/src/opencv2/gpu/device/emulation.hpp
@@ -53,7 +53,7 @@ namespace cv { namespace gpu { namespace device
 
         static __device__ __forceinline__ int sycthOr(int pred)
         {
-#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120)
+#if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 200)
                 // just campilation stab
                 return false;
 #else
@@ -119,7 +119,7 @@ namespace cv { namespace gpu { namespace device
             static __device__ __forceinline__ T atomicMin(T* address, T val)
             {
 #if defined (__CUDA_ARCH__) && (__CUDA_ARCH__ < 120)
-                T count = min(*address, val);
+                T count = ::min(*address, val);
                 do
                 {
                     *address = count;