Skip to content

Incompatibility with CUDA 13.2 (but works with CUDA 12.8) on Ubuntu 24.04 LTS #6

Description

@alex88ridolfi

I just want to point out that the current version of the software (commit 0f763a3) does not compile when using CUDA 13.2 on Ubuntu 24.04 LTS on a machine with an RTX 5070 Ti (sm_120).

Setting in Makefile.inc:

CUDA_PATH   ?= /usr/local/cuda-13.2  
GPU_ARCH   ?= sm_120

and compiling, produces the following errors:

ridolfi@alkaid:(638G) ~/SOFT/dedisp_25Apr2026$ make
mkdir -p include
mkdir -p lib
mkdir -p obj
/usr/local/cuda-13.2/bin/nvcc  -c -Xcompiler "-fPIC -Wall" -O3 -g -DDEDISP_DEBUG=0  -arch=sm_120 -Isrc -I/usr/local/cuda-13.2/include -o obj/dedisp.o src/dedisp.cu
src/kernels.cuh(481): error: namespace "thrust" has no member class "unary_function"
   : public thrust::unary_function<unsigned int,WordType> {
                    ^

src/kernels.cuh(481): error: class or struct definition is missing
   : public thrust::unary_function<unsigned int,WordType> {
                                  ^

src/kernels.cuh(510): warning #12-D: parsing restarts here after previous syntax error
  };
   ^

Remark: The warnings can be suppressed with "-diag-suppress <warning-number>"

src/kernels.cuh(529): error: no suitable constructor exists to convert from "const dedisp_word *" to "scrunch_x2_functor<dedisp_word>" (aka "scrunch_x2_functor<unsigned int>")
                     scrunch_x2_functor<dedisp_word>(d_in, nbits, nsamps));
                                                     ^

src/kernels.cuh(529): error: expected a ")"
                     scrunch_x2_functor<dedisp_word>(d_in, nbits, nsamps));
                                                         ^

src/kernels.cuh(587): error: namespace "thrust" has no member class "unary_function"
   : public thrust::unary_function<unsigned int,WordType> {
                    ^

src/kernels.cuh(587): error: class or struct definition is missing
   : public thrust::unary_function<unsigned int,WordType> {
                                  ^

src/kernels.cuh(638): warning #12-D: parsing restarts here after previous syntax error
  };
   ^

src/kernels.cuh(656): error: no suitable constructor exists to convert from "const dedisp_word *" to "unpack_functor<dedisp_word>" (aka "unpack_functor<unsigned int>")
                     unpack_functor<dedisp_word>(d_transposed, nsamps,
                                                 ^

src/kernels.cuh(656): error: expected a ")"
                     unpack_functor<dedisp_word>(d_transposed, nsamps,
                                                             ^

8 errors detected in the compilation of "src/dedisp.cu".
make: *** [Makefile:45: lib/libdedisp.so.1.0.1] Error 2

However, when switching to CUDA 12.8, which is also installed alongside CUDA 13.2 on the same system, it compiles fine, returning just warnings.

In Makefile.inc

CUDA_PATH   ?= /usr/local/cuda-12.8
GPU_ARCH   ?= sm_120
ridolfi@alkaid:(638G) ~/SOFT/dedisp_25Apr2026$ make
mkdir -p include
mkdir -p lib
mkdir -p obj
/usr/local/cuda-12.8/bin/nvcc  -c -Xcompiler "-fPIC -Wall" -O3 -g -DDEDISP_DEBUG=0  -arch=sm_120 -Isrc -I/usr/local/cuda-12.8/include -o obj/dedisp.o src/dedisp.cu
src/kernels.cuh:480:67: warning: ‘template<class Argument, class Result> struct thrust::THRUST_200700_1200_NS::unary_function’ is deprecated [-Wdeprecated-declarations]
  480 | struct scrunch_x2_functor
      |                                                                   ^             
/usr/local/cuda-12.8/include/thrust/functional.h:85:23: note: declared here
   85 | struct THRUST_DEPRECATED unary_function
      |                       ^~~~~~~~~~~~~~
src/kernels.cuh:586:63: warning: ‘template<class Argument, class Result> struct thrust::THRUST_200700_1200_NS::unary_function’ is deprecated [-Wdeprecated-declarations]
  586 | struct unpack_functor
      |                                                               ^             
/usr/local/cuda-12.8/include/thrust/functional.h:85:23: note: declared here
   85 | struct THRUST_DEPRECATED unary_function
      |                       ^~~~~~~~~~~~~~
gcc -shared -Wl,--version-script=libdedisp.version,-soname,libdedisp.so.1 -o lib/libdedisp.so.1.0.1 obj/dedisp.o -L/usr/local/cuda-12.8/lib64 -lcudart -lstdc++
ln -s -f libdedisp.so.1.0.1 lib/libdedisp.so.1
ln -s -f libdedisp.so.1.0.1 lib/libdedisp.so
cp src/dedisp.h include
cp src/DedispPlan.hpp include

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions