Float16 is not defined

Hi everyone. I use nvcc and gcc to develop the code. I use CMake to compile and link. the CMakeLists.txt is as follow

cmake_minimum_required(VERSION 3.21.3)

project(nmg_ddm LANGUAGES CXX C CUDA)

set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)

set (CMAKE_CXX_FLAGS "-Wsign-compare -Wno-unused-variable -Wno-unused-parameter -Wdeprecated-copy ")

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
	set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address ")
endif()

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ltbb")
#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --extended-lambda")


# setting for test for Poisson equ
#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST")

# setting for Debug mode
#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMyDebug")

 
if (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
	set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
endif()

#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld")
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=lld")

find_package(MPI)
# CUDA
find_package(CUDA REQUIRED)

# VTK library
find_package(VTK REQUIRED COMPONENTS
  vtkCommonColor
  vtkCommonCore
  vtkCommonDataModel
  vtkInteractionStyle
  vtkRenderingContextOpenGL2
  vtkRenderingCore
  vtkRenderingFreeType
  vtkRenderingGL2PSOpenGL2
  vtkRenderingOpenGL2
  vtkCommonCore
  vtkCommonDataModel
  vtkIOXML
  QUIET
)

if (NOT VTK_FOUND)
  message("Skipping StructuredGrid: ${VTK_NOT_FOUND_MESSAGE}")
  return ()
endif()

message (STATUS "VTK_VERSION: ${VTK_VERSION}")


if (VTK_VERSION VERSION_LESS "8.90.0")
  # old system
  INCLUDE_DIRECTORIES(include ${VTK_USE_FILE} ${VTK_INCLUDE_DIRS} )

  FILE (GLOB LIB "src/*.cc")
  FILE (GLOB LIB "src/*.cu")

  CUDA_ADD_LIBRARY(lib SHARED ${LIB})

  vtk_module_autoinit(
	 TARGETS lib
    MODULES ${VTK_LIBRARIES}
    )

 TARGET_LINK_LIBRARIES(lib ${VTK_LIBRARIES} ${CUDA_LIBRARIES})
  
  add_executable(${PROJECT_NAME} MACOSX_BUNDLE "test/main.cc")

  TARGET_LINK_LIBRARIES(${PROJECT_NAME} lib ${VTK_LIBRARIES} ${CUDA_LIBRARIES})

else ()
  # include all components
  INCLUDE_DIRECTORIES(include ${VTK_INCLUDE_DIRS} ${CUDA_LIBRARIES} )

  FILE (GLOB LIB "src/*.cc")
  FILE (GLOB LIB "src/*.cu")

  CUDA_ADD_LIBRARY(lib SHARED ${LIB})

  vtk_module_autoinit(
	 TARGETS lib
    MODULES ${VTK_LIBRARIES}
    )

  TARGET_LINK_LIBRARIES(lib ${VTK_LIBRARIES} ${CUDA_LIBRARIES} )
  
  add_executable(${PROJECT_NAME} MACOSX_BUNDLE "test/main.cc")

  TARGET_LINK_LIBRARIES(${PROJECT_NAME} lib  ${VTK_LIBRARIES} ${CUDA_LIBRARIES} )
  
  # vtk_module_autoinit is needed
  vtk_module_autoinit(
    TARGETS ${PROJECT_NAME}
    MODULES ${VTK_LIBRARIES}
    )
endif ()

running $cmake .. it is ok. but running make I get the following errors

[ 20%] Building NVCC (Device) object CMakeFiles/lib.dir/src/lib_generated_device_vector.cu.o
[ 40%] Building NVCC (Device) object CMakeFiles/lib.dir/src/lib_generated_device_matrix.cu.o
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
cc1plus: warning: /opt/cuda/lib64/libcudart_static.a: not a directory
cc1plus: warning: /usr/lib/librt.a: not a directory
/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include/avx512fp16intrin.h(38): error: identifier "_Float16" is undefined

I use Arch Linux as OS.

There may be multiple problems. Without a complete case its hard to say. But you are using a 12.x gnu toolchain:

/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/include/avx512fp16intrin.h(38): error: 
                                 ^^^

The highest supported currently by any version of CUDA is 11. See here.

Actually by removing cuda from languages and adding following lines in cmakelists.txt. the problem solved.

include(CheckLanguage)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
	set(FASNASMGPU_USE_CUDA ON CACHE BOOL "Use CUDA")
endif()
if (FASNASMGPU_USE_CUDA)
	enable_language(CUDA)
endif()