diff --git a/RTCP/Cobalt/GPUProc/src/cuda/gpu_utils.cc b/RTCP/Cobalt/GPUProc/src/cuda/gpu_utils.cc
index 4735370869e384a492085f931019379a25078431..f7a9f2f9956d1344ac66ba20554eb054d011709a 100644
--- a/RTCP/Cobalt/GPUProc/src/cuda/gpu_utils.cc
+++ b/RTCP/Cobalt/GPUProc/src/cuda/gpu_utils.cc
@@ -53,8 +53,10 @@ namespace LOFAR
         unsigned major = device.getComputeCapabilityMajor();
         unsigned minor = device.getComputeCapabilityMinor();
 
+#if CUDA_VERSION >= 8000 // possibly holds for 6.x and 7.x as well
+        return (CUjit_target)(major * 10 + minor);
+#else
         switch (major) {
-#ifdef CU_TARGET_COMPUTE_10
           case 0:
             return CU_TARGET_COMPUTE_10;
 
@@ -71,7 +73,7 @@ namespace LOFAR
               default:
                 return CU_TARGET_COMPUTE_13;
             }
-#endif
+
           case 2:
             switch (minor) {
               case 0:
@@ -96,8 +98,8 @@ namespace LOFAR
           default:
             return CU_TARGET_COMPUTE_30;
 #endif
-
         }
+#endif
       }
 
       // Return the highest compute target supported by all the given devices
@@ -124,11 +126,13 @@ namespace LOFAR
       // the .cu file is written in).
       string get_virtarch(CUjit_target target)
       {
+#if CUDA_VERSION >= 8000 // possibly holds for 6.x and 7.x as well
+        return str(format("compute_%d") % target);
+#else
         switch (target) {
         default:
           return "compute_unknown";
 
-#ifdef CU_TARGET_COMPUTE_10
         case CU_TARGET_COMPUTE_10:
           return "compute_10";
 
@@ -140,7 +144,6 @@ namespace LOFAR
 
         case CU_TARGET_COMPUTE_13:
           return "compute_13";
-#endif
 
         case CU_TARGET_COMPUTE_20:
         case CU_TARGET_COMPUTE_21:
@@ -155,17 +158,20 @@ namespace LOFAR
           return "compute_35";
 #endif
         }
+#endif
       }
 
       // Translate a compute target to a GPU architecture (= the instruction
       // set supported by the actual GPU).
       string get_gpuarch(CUjit_target target)
       {
+#if CUDA_VERSION >= 8000 // possibly holds for 6.x and 7.x as well
+        return str(format("sm_%d") % target);
+#else
         switch (target) {
         default:
           return "sm_unknown";
 
-#ifdef CU_TARGET_COMPUTE_10
         case CU_TARGET_COMPUTE_10:
           return "sm_10";
 
@@ -177,7 +183,6 @@ namespace LOFAR
 
         case CU_TARGET_COMPUTE_13:
           return "sm_13";
-#endif
 
         case CU_TARGET_COMPUTE_20:
           return "sm_20";
@@ -193,6 +198,7 @@ namespace LOFAR
           return "sm_35";
 #endif
         }
+#endif
       }
 
       string lofarRoot()