Skip to content

Cufftdx compilation fails on windows - "FFT description must be complete to calculate queried information" #282

@Ido-Work

Description

@Ido-Work

Hi,
trying to compile the examples of cufftdx yeilds the following:

PS C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\example\cufftdx> cmake .
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.26100.
-- The CXX compiler identification is MSVC 19.43.34810.0
-- The CUDA compiler identification is NVIDIA 12.8.61 with host compiler MSVC 19.43.34810.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.8/bin/nvcc.exe - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- Using mathDx package to find cuFFTDx
-- mathdx: Found CUTLASS (NvidiaCutlass) dependency: C:/Users/IdoLev/Desktop/nvidia-mathdx-25.06.1/nvidia/mathdx/25.06/external/cutlass/include
-- cufftdx: Found CUTLASS (NvidiaCutlass) dependency: C:/Users/IdoLev/Desktop/nvidia-mathdx-25.06.1/nvidia/mathdx/25.06/external/cutlass/include
-- cufftdx: Found commondx dependency
-- Found cufftdx: (Version: 1.5.1, Include dirs: C:/Users/IdoLev/Desktop/nvidia-mathdx-25.06.1/nvidia/mathdx/25.06/include)
-- mathDx: cuFFTDx found: C:/Users/IdoLev/Desktop/nvidia-mathdx-25.06.1/nvidia/mathdx/25.06/include
-- Targeted cuFFTDx CUDA Architectures: 80-real
-- Found CUDAToolkit: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.8/include (found version "12.8.61")
-- Configuring done (33.0s)
-- Generating done (1.0s)
-- Build files have been written to: C:/Users/IdoLev/Desktop/nvidia-mathdx-25.06.1/nvidia/mathdx/25.06/example/cufftdx

when opening in visual studio and compiling: 00_introduction_example_introduction_example
i get the following error:

2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\example\cufftdx>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin\nvcc.exe"  --use-local-env -ccbin "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64" -x cu   -I"C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include" -I"C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\external\cutlass\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include"     --keep-dir 00_intro.26E594B1\x64\Release  -maxrregcount=0    --machine 64 --compile -cudart static -Xfatbin -compress-all -Xcudafe --display_error_number -std=c++20 --generate-code=arch=compute_80,code=[sm_80] -Xfatbin -compress-all -Xcompiler="/EHsc /WX /Zc:__cplusplus -Ob2"   -D_WINDOWS -DNDEBUG -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -DNOMINMAX -DCUFFTDX_EXAMPLE_CMAKE -DCUFFTDX_EXAMPLE_ENABLE_SM_80 -D"CMAKE_INTDIR=\"Release\"" -D_MBCS -D"CMAKE_INTDIR=\"Release\"" -Xcompiler "/EHsc /W3 /nologo /O2 /FS   /MD " -Xcompiler "/Fd00_introduction_example_introduction_example.dir\Release\vc143.pdb" -o 00_introduction_example_introduction_example.dir\Release\introduction_example.obj "C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\example\cufftdx\00_introduction_example\introduction_example.cu"
2>introduction_example.cu
2>tmpxft_0000fbd0_00000000-7_introduction_example.cudafe1.cpp
2>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\type_traits(1278): error C2139: 'cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>': an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_base_of'
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/detail/fft_execution.hpp(358): note: see declaration of 'cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>'
2>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\type_traits(1278): note: the template instantiation context (the oldest one first) is
2>C:\Users\IdoLev\AppData\Local\Temp\tmpxft_0000fbd0_00000000-7_introduction_example.cudafe1.stub.c(7): note: see reference to class template instantiation 'cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>' being compiled
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/detail/fft_execution.hpp(940): note: while compiling class template member function 'unsigned int cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>::get_storage_size(void)'
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/detail/fft_execution.hpp(973): note: see the first reference to 'cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>::get_storage_size'
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/detail/fft_execution.hpp(942): note: see reference to alias template instantiation 'cufftdx::detail::check_and_get_fft_implementation_t<cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>>' being compiled
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/traits/detail/check_and_get_trait.hpp(366): note: see reference to class template instantiation 'cufftdx::detail::check_and_get_fft_implementation<cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>>' being compiled
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/traits/detail/check_and_get_trait.hpp(358): note: see reference to class template instantiation 'cufftdx::detail::get_block_config_impl::helper<Description,false>' being compiled
2>        with
2>        [
2>            Description=cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>
2>        ]
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/traits/detail/check_and_get_trait.hpp(214): note: see reference to class template instantiation 'cufftdx::detail::is_complete_description<Description>' being compiled
2>        with
2>        [
2>            Description=cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>
2>        ]
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/traits/detail/description_traits.hpp(132): note: see reference to class template instantiation 'commondx::detail::is_description_expression<cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>>' being compiled
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\commondx/traits/detail/description_traits.hpp(45): note: see reference to class template instantiation 'std::is_base_of<commondx::detail::description_expression,T>' being compiled
2>        with
2>        [
2>            T=cufftdx::detail::fft_block_execution<cufftdx::Size<128>,cufftdx::Precision<float>,cufftdx::Type<cufftdx::fft_type::c2c>,cufftdx::Direction<cufftdx::fft_direction::forward>,cufftdx::ElementsPerThread<8>,cufftdx::FFTsPerBlock<2>,commondx::SM<800,void>,cufftdx::Block>
2>        ]
2>C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include\cufftdx/traits/detail/check_and_get_trait.hpp(215): error C2338: static_assert failed: 'FFT description must be complete to calculate queried information'
2>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\BuildCustomizations\CUDA 12.8.targets(800,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\bin\nvcc.exe"  --use-local-env -ccbin "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64" -x cu   -I"C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\include" -I"C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\external\cutlass\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include"     --keep-dir 00_intro.26E594B1\x64\Release  -maxrregcount=0    --machine 64 --compile -cudart static -Xfatbin -compress-all -Xcudafe --display_error_number -std=c++20 --generate-code=arch=compute_80,code=[sm_80] -Xfatbin -compress-all -Xcompiler="/EHsc /WX /Zc:__cplusplus -Ob2"   -D_WINDOWS -DNDEBUG -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -DNOMINMAX -DCUFFTDX_EXAMPLE_CMAKE -DCUFFTDX_EXAMPLE_ENABLE_SM_80 -D"CMAKE_INTDIR=\"Release\"" -D_MBCS -D"CMAKE_INTDIR=\"Release\"" -Xcompiler "/EHsc /W3 /nologo /O2 /FS   /MD " -Xcompiler "/Fd00_introduction_example_introduction_example.dir\Release\vc143.pdb" -o 00_introduction_example_introduction_example.dir\Release\introduction_example.obj "C:\Users\IdoLev\Desktop\nvidia-mathdx-25.06.1\nvidia\mathdx\25.06\example\cufftdx\00_introduction_example\introduction_example.cu"" exited with code 2.
2>Done building project "00_introduction_example_introduction_example.vcxproj" -- FAILED.
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 22:54 and took 59.567 seconds ==========

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions