@@ -61,19 +61,12 @@ if(WITH_ILUVATAR)
6161
6262 file (GLOB_RECURSE ILUVATAR_SOURCES CONFIGURE_DEPENDS ${ILUVATAR_PATTERNS} )
6363
64- enable_language (CUDA )
65-
6664 target_compile_definitions (infiniops PUBLIC WITH_ILUVATAR=1 )
6765 target_sources (infiniops PRIVATE ${ILUVATAR_SOURCES} )
6866
6967 find_package (CUDAToolkit REQUIRED )
7068 target_link_libraries (infiniops PUBLIC CUDA::cudart CUDA::cublas CUDA::cuda_driver )
7169
72- set_target_properties (infiniops PROPERTIES
73- CUDA_STANDARD 17
74- CUDA_STANDARD_REQUIRED ON
75- )
76-
7770 list (APPEND DEVICE_LIST "iluvatar" )
7871endif ()
7972
@@ -524,9 +517,49 @@ if(GENERATE_PYTHON_BINDINGS)
524517 endif ()
525518 list (APPEND PYBIND11_COMPILE_SOURCES ${PYBIND11_DISPATCH_SOURCES} )
526519
527- # TODO: There might be a better solution.
528- if (WITH_NVIDIA OR WITH_ILUVATAR)
520+ if (WITH_NVIDIA)
529521 set_source_files_properties (${PYBIND11_COMPILE_SOURCES} PROPERTIES LANGUAGE CUDA)
522+ elseif (WITH_ILUVATAR)
523+ set (_iluvatar_dispatch_include_flags
524+ "-I${CMAKE_CURRENT_SOURCE_DIR } "
525+ "-I${PROJECT_SOURCE_DIR } "
526+ "-I${PROJECT_SOURCE_DIR } /generated" )
527+ foreach (_dir IN LISTS TORCH_INCLUDE_DIRS CUDAToolkit_INCLUDE_DIRS)
528+ list (APPEND _iluvatar_dispatch_include_flags "-I${_dir} " )
529+ endforeach ()
530+
531+ set (_iluvatar_dispatch_defs -DWITH_ILUVATAR=1)
532+ if (WITH_TORCH)
533+ list (APPEND _iluvatar_dispatch_defs -DWITH_TORCH=1)
534+ endif ()
535+ if (DEFINED TORCH_CXX11_ABI)
536+ list (APPEND _iluvatar_dispatch_defs "-D_GLIBCXX_USE_CXX11_ABI=${TORCH_CXX11_ABI} " )
537+ endif ()
538+
539+ set (ILUVATAR_DISPATCH_OBJECTS)
540+ set (_iluvatar_dispatch_object_dir "${CMAKE_CURRENT_BINARY_DIR } /iluvatar_dispatch_objs" )
541+ foreach (_src IN LISTS PYBIND11_DISPATCH_SOURCES)
542+ get_filename_component (_name "${_src} " NAME_WE )
543+ set (_obj "${_iluvatar_dispatch_object_dir} /${_name} .o" )
544+ add_custom_command (
545+ OUTPUT "${_obj} "
546+ COMMAND ${CMAKE_COMMAND } -E make_directory "${_iluvatar_dispatch_object_dir} "
547+ COMMAND ${ILUVATAR_CUDA_COMPILER}
548+ ${_iluvatar_dispatch_defs}
549+ ${_iluvatar_dispatch_include_flags}
550+ ${ILUVATAR_CUDA_FLAGS}
551+ -c "${_src} " -o "${_obj} "
552+ DEPENDS "${_src} "
553+ COMMENT "Compiling ${_name} .cc with CoreX clang++"
554+ VERBATIM
555+ )
556+ list (APPEND ILUVATAR_DISPATCH_OBJECTS "${_obj} " )
557+ endforeach ()
558+
559+ list (REMOVE_ITEM PYBIND11_COMPILE_SOURCES ${PYBIND11_DISPATCH_SOURCES} )
560+ set_source_files_properties (${ILUVATAR_DISPATCH_OBJECTS}
561+ PROPERTIES EXTERNAL_OBJECT TRUE GENERATED TRUE )
562+ list (APPEND PYBIND11_COMPILE_SOURCES ${ILUVATAR_DISPATCH_OBJECTS} )
530563 endif ()
531564
532565 find_package (Python COMPONENTS Interpreter Development )
0 commit comments