diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
index 5ffec8bdb9c5e3271d7b2772c92a83a5c4e43fb9..57779b77c71fe27d7aa66b789458ac4842f4ccb2 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -44,7 +44,7 @@ if(DOWNLOAD_EXTERNALS)
 
   download_project_if_needed(PROJECT           xpu
                              GIT_REPOSITORY    "https://github.com/fweig/xpu"
-                             GIT_TAG           "00fd050b65d5798800517710fbc241c062acd927"
+                             GIT_TAG           "7944bf1ea3537c6d49a0ee52326740d7145b546f" #v0.7.3
                              SOURCE_DIR        ${CMAKE_CURRENT_SOURCE_DIR}/xpu
                              CONFIGURE_COMMAND ""
                              BUILD_COMMAND     ""
diff --git a/reco/detectors/sts/experimental/CbmStsGpuHitFinder.h b/reco/detectors/sts/experimental/CbmStsGpuHitFinder.h
index 5708982fab38ce0117271d1d59a2db47c0e8a0a6..5d3a5319ef02a1acaf219ca377485254e1e613ce 100644
--- a/reco/detectors/sts/experimental/CbmStsGpuHitFinder.h
+++ b/reco/detectors/sts/experimental/CbmStsGpuHitFinder.h
@@ -73,14 +73,14 @@ namespace experimental
     float dX;
   };
 
-  using SortDigisT = xpu::block_sort<unsigned long int, ::CbmStsDigi, xpu::block_size<SortDigis> {},
+  using SortDigisT = xpu::block_sort<unsigned long int, ::CbmStsDigi, xpu::block_size<SortDigis>::value.x,
                                      CBM_STS_SORT_DIGIS_ITEMS_PER_THREAD>;
 
   struct CbmStsSortDigiSmem {
     typename SortDigisT::storage_t sortBuf;
   };
 
-  using SortClustersT = xpu::block_sort<CbmStsTimeNs, CbmStsClusterIdx, xpu::block_size<SortClusters> {},
+  using SortClustersT = xpu::block_sort<CbmStsTimeNs, CbmStsClusterIdx, xpu::block_size<SortClusters>::value.x,
                                         CBM_STS_SORT_CLUSTERS_ITEMS_PER_THREAD>;
 
   struct CbmStsSortClusterSmem {
diff --git a/reco/detectors/sts/experimental/CbmStsGpuRecoDevice.h b/reco/detectors/sts/experimental/CbmStsGpuRecoDevice.h
index 1d5f9020e521538cb87a14f934beb55ab54aaab6..fdb674e973a332d85984ca7c196a7350693255ba 100644
--- a/reco/detectors/sts/experimental/CbmStsGpuRecoDevice.h
+++ b/reco/detectors/sts/experimental/CbmStsGpuRecoDevice.h
@@ -27,29 +27,29 @@ struct CbmStsGpuRecoDevice {
 };
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, SortDigis);
-XPU_BLOCK_SIZE(SortDigis, CBM_STS_SORT_DIGIS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(SortDigis, CBM_STS_SORT_DIGIS_BLOCK_SIZE);
 
 // Combine substeps for finding clusters into a single kernel
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, FindClustersSingleStep);
-XPU_BLOCK_SIZE(FindClustersSingleStep, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(FindClustersSingleStep, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, CalculateOffsets);
-XPU_BLOCK_SIZE(CalculateOffsets, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(CalculateOffsets, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, FindClusters);
-XPU_BLOCK_SIZE(FindClusters, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(FindClusters, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, FindClustersBasic);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, CalculateClusters);
-XPU_BLOCK_SIZE(CalculateClusters, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(CalculateClusters, CBM_STS_FIND_CLUSTERS_BLOCK_SIZE);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, CalculateClustersBasic);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, SortClusters);
-XPU_BLOCK_SIZE(SortClusters, CBM_STS_SORT_CLUSTERS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(SortClusters, CBM_STS_SORT_CLUSTERS_BLOCK_SIZE);
 
 XPU_EXPORT_KERNEL(CbmStsGpuRecoDevice, FindHits);
-XPU_BLOCK_SIZE(FindHits, CBM_STS_FIND_HITS_BLOCK_SIZE);
+XPU_BLOCK_SIZE_1D(FindHits, CBM_STS_FIND_HITS_BLOCK_SIZE);
 
 #endif