diff -ruN sobfu-master/CMakeLists.txt sobfu-spd/CMakeLists.txt
--- sobfu-master/CMakeLists.txt	2019-01-10 13:34:00.000000000 +0100
+++ sobfu-spd/CMakeLists.txt	2021-11-08 14:54:28.999563415 +0100
@@ -22,7 +22,9 @@
 SET(CMAKE_CONFIGURATION_TYPES "Debug;Release")
 
 # Set CXX to compile with C++11 standard
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -MP -MD -pthread -fpermissive")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -MP -MD -pthread -fpermissive")
+set(CMAKE_C_COMPILER "/usr/bin/gcc-9")
+set(CMAKE_CXX_COMPILER "/usr/bin/g++-9")
 
 # ---------------------------------------------------------------------------- #
 # DEPENDENCIES
diff -ruN sobfu-master/include/kfusion/cuda/marching_cubes.hpp sobfu-spd/include/kfusion/cuda/marching_cubes.hpp
--- sobfu-master/include/kfusion/cuda/marching_cubes.hpp	2019-01-10 13:34:00.000000000 +0100
+++ sobfu-spd/include/kfusion/cuda/marching_cubes.hpp	2021-11-08 14:51:58.075840577 +0100
@@ -22,7 +22,7 @@
     enum { POINTS_PER_TRIANGLE = 3, DEFAULT_TRIANGLES_BUFFER_SIZE = 2 * 1000 * 1000 * POINTS_PER_TRIANGLE };
 
     /** \brief Smart pointer. */
-    typedef boost::shared_ptr<MarchingCubes> Ptr;
+    typedef pcl::shared_ptr<MarchingCubes> Ptr;
 
     /** \brief Default constructor */
     MarchingCubes();
diff -ruN sobfu-master/include/kfusion/cuda/temp_utils.hpp sobfu-spd/include/kfusion/cuda/temp_utils.hpp
--- sobfu-master/include/kfusion/cuda/temp_utils.hpp	2019-01-10 13:34:00.000000000 +0100
+++ sobfu-spd/include/kfusion/cuda/temp_utils.hpp	2021-10-29 14:01:19.326837179 +0200
@@ -422,7 +422,7 @@
     }
 
     static __kf_device__ int laneMaskLt() {
-#if (__CUDA_ARCH__ >= 200)
+#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200)
         unsigned int ret;
         asm("mov.u32 %0, %lanemask_lt;" : "=r"(ret));
         return ret;
@@ -572,7 +572,8 @@
     }
 
     static __kf_device__ int Ballot(int predicate, volatile int *cta_buffer) {
-#if __CUDA_ARCH__ >= 200
+
+#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200)
         (void) cta_buffer;
         return __ballot_sync(FULL_MASK, predicate);
 #else
@@ -583,7 +584,7 @@
     }
 
     static __kf_device__ bool All(int predicate, volatile int *cta_buffer) {
-#if __CUDA_ARCH__ >= 200
+#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 200)
         (void) cta_buffer;
         return __all_sync(FULL_MASK, predicate);
 #else
diff -ruN sobfu-master/src/apps/demo.cpp sobfu-spd/src/apps/demo.cpp
--- sobfu-master/src/apps/demo.cpp	2019-01-10 13:34:00.000000000 +0100
+++ sobfu-spd/src/apps/demo.cpp	2021-10-29 15:36:00.749183754 +0200
@@ -259,7 +259,10 @@
         image->SetDimensions(params.volume_dims[0], params.volume_dims[1], params.volume_dims[2]);
 
         /* specify size of image data */
-        image->AllocateScalars(VTK_FLOAT, 4);
+		image->SetScalarTypeToFloat();
+		image->SetNumberOfScalarComponents(4);
+		image->AllocateScalars();
+/*        image->AllocateScalars(VTK_FLOAT, 4);*/
         int *dims = image->GetDimensions();
 
         /* copy vector field data */
@@ -276,7 +279,8 @@
         /* save file */
         vtkSmartPointer<vtkXMLImageDataWriter> writer = vtkSmartPointer<vtkXMLImageDataWriter>::New();
         writer->SetFileName(fileName.c_str());
-        writer->SetInputData(image);
+/*        writer->SetInputData(image);*/
+        writer->SetInput(image);
         writer->Write();
 
         std::cout << "saved the vector field to .vti" << std::endl;
diff -ruN sobfu-master/src/kfusion/core.cpp sobfu-spd/src/kfusion/core.cpp
--- sobfu-master/src/kfusion/core.cpp	2019-01-10 13:34:00.000000000 +0100
+++ sobfu-spd/src/kfusion/core.cpp	2021-11-08 14:52:50.806336918 +0100
@@ -60,7 +60,7 @@
 
     SMtoCores gpuArchCoresPerSM[] = {{0x10, 8},   {0x11, 8},   {0x12, 8},   {0x13, 8},   {0x20, 32},  {0x21, 48},
                                      {0x30, 192}, {0x35, 192}, {0x37, 192}, {0x50, 128}, {0x52, 128}, {0x60, 64},
-                                     {0x61, 128}, {0x70, 64},  {0x75, 64},  {-1, -1}};
+                                     {0x61, 128}, {0x70, 64},  {0x75, 64}, {0x80, 64}, {0x86, 128}, {-1, -1}};
 
     int index = 0;
     while (gpuArchCoresPerSM[index].SM != -1) {
