When I want to add a new .cu in my project for postprocessing,there will be a compilation error.
My new files likes this:
and the codes like this:
ImageProcess_cuda.h:
extern “C” device void post_Process_gpu();
extern “C” global void postProcess_gpu();
ImageProcess_cuda.cu:
include <cuda/ImageProcess_cuda.h>
include <cuda_runtime.h>
include <device_launch_parameters.h>
extern “C” device void post_Process_gpu() {
int thisID = threadIdx.x;
printf(“调用成功 %d\n”, thisID);
}
extern “C” global void postProcess_gpu() {
post_Process_gpu <<<1, 1 >>> ();
}
The function post_Process_gpu is where the error is when it be used.
The information of the error is:
CMake Warning (dev) at CMake/FindCUDA.cmake:535 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run “cmake --help-policy CMP0054” for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.
Quoted variables like "MSVC" will no longer be dereferenced when the policy
is set to NEW. Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):
CMakeLists.txt:157 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
sutil OPTIXIR
ptx_files = C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./sutil_generated_camera.cu.optixir;C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./sutil_generated_geometry.cu.optixir;C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./sutil_generated_shading.cu.optixir;C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./sutil_generated_sphere.cu.optixir;C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./sutil_generated_whitted.cu.optixir
– Could NOT find Vulkan (missing: VULKAN_LIBRARY VULKAN_INCLUDE_DIR)
– Using Win32 for window creation
– Configuring done
– Generating done
– Build files have been written to: C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug
[0/1] Re-running CMake…
[1/3] Building NVCC optixir file lib/ptx/OvaSim_generated_ImageProcess_cuda.cu.optixir
FAILED: lib/ptx/OvaSim_generated_ImageProcess_cuda.cu.optixir C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/OvaSim_generated_ImageProcess_cuda.cu.optixir
cmd.exe /C “cd /D “C:\ProgramData\NVIDIA Corporation\OptiX SDK 8.0.0\SDK\out\build\x64-Debug\OvaSim\CMakeFiles\OvaSim.dir__\cuda” && “C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe” -E make_directory “C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/.” && “C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe” -D verbose:BOOL=OFF -D check_dependencies:BOOL=OFF -D build_configuration:STRING=Debug -D “generated_file:STRING=C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./OvaSim_generated_ImageProcess_cuda.cu.optixir” -D “generated_cubin_file:STRING=C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./OvaSim_generated_ImageProcess_cuda.cu.optixir.cubin.txt” -D “generated_fatbin_file:STRING=C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/lib/ptx/./OvaSim_generated_ImageProcess_cuda.cu.optixir.fatbin.txt” -P “C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/out/build/x64-Debug/OvaSim/CMakeFiles/OvaSim.dir/__/cuda/OvaSim_generated_ImageProcess_cuda.cu.optixir.cmake””
ImageProcess_cuda.cu
C:\ProgramData\NVIDIA Corporation\OptiX SDK 8.0.0\SDK\cuda\ImageProcess_cuda.cu(12): error : a device function call cannot be configured
post_Process_gpu <<<1, 1 >>> ();
^
1 error detected in the compilation of “C:/ProgramData/NVIDIA Corporation/OptiX SDK 8.0.0/SDK/cuda/ImageProcess_cuda.cu”.
ImageProcess_cuda.cu
CMake Error at OvaSim_generated_ImageProcess_cuda.cu.optixir.cmake:370 (message):
Error generating file C:/ProgramData/NVIDIA Corporation/OptiX SDK
8.0.0/SDK/out/build/x64-Debug/lib/ptx/./OvaSim_generated_ImageProcess_cuda.cu.optixir
ninja: build stopped: subcommand failed.
I am very grateful that you will help me solve this problem !