Skip to content

Commit d6804bf

Browse files
authored
feat: add public C++ operator API (#618)
* feat: add public C++ operator API * fix: stabilize functional operator API builds * fix: add Ascend runtime library rpath * fix: keep Moore device discovery direct
1 parent 64751ea commit d6804bf

7 files changed

Lines changed: 599 additions & 18 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
cmake_minimum_required(VERSION 3.18)
2-
project(InfiniOps LANGUAGES CXX)
2+
project(InfiniOps VERSION 0.1.0 LANGUAGES CXX)
3+
4+
include(GNUInstallDirs)
35

46
if(POLICY CMP0116)
57
cmake_policy(SET CMP0116 NEW)
@@ -32,6 +34,7 @@ option(BUILD_CUSTOM_KERNEL "Build custom AscendC kernel PyTorch extension (requi
3234

3335
option(AUTO_DETECT_DEVICES "Automatically detect available devices" OFF)
3436
option(AUTO_DETECT_BACKENDS "Automatically detect available backends" OFF)
37+
option(GENERATE_CPP_OPERATOR_API "Generate public C++ operator API" ON)
3538
option(GENERATE_PYTHON_BINDINGS "Generate Python bindings" OFF)
3639

3740
set(_DEFAULT_HYGON_DTK_ROOT "/opt/dtk")
@@ -309,10 +312,13 @@ if(WITH_ILUVATAR)
309312
if(NOT ILUVATAR_CUDA_COMPILER)
310313
message(FATAL_ERROR "`WITH_ILUVATAR` is `ON` but CoreX `clang++` was not found.")
311314
endif()
315+
get_filename_component(ILUVATAR_CUDA_BIN_DIR "${ILUVATAR_CUDA_COMPILER}" DIRECTORY)
316+
get_filename_component(ILUVATAR_CUDA_ROOT "${ILUVATAR_CUDA_BIN_DIR}/.." ABSOLUTE)
317+
set(CUDAToolkit_ROOT "${ILUVATAR_CUDA_ROOT}" CACHE PATH "Iluvatar CoreX toolkit root")
312318
set(ILUVATAR_CUDA_FLAGS
313-
"--cuda-gpu-arch=${ILUVATAR_ARCH};-fPIC;-Wno-error=unused-variable;-Wno-error=unused-private-field;-Wno-unused-variable;-std=c++17;--cuda-path=/usr/local/corex;-x;ivcore"
319+
"--cuda-gpu-arch=${ILUVATAR_ARCH};-fPIC;-Wno-error=unused-variable;-Wno-error=unused-private-field;-Wno-unused-variable;-std=c++17;--cuda-path=${ILUVATAR_CUDA_ROOT};-x;ivcore"
314320
CACHE STRING "Iluvatar CUDA compiler flags")
315-
message(STATUS "Iluvatar: CUDA compiler ${ILUVATAR_CUDA_COMPILER}, arch ${ILUVATAR_ARCH}")
321+
message(STATUS "Iluvatar: CUDA compiler ${ILUVATAR_CUDA_COMPILER}, arch ${ILUVATAR_ARCH}, toolkit ${ILUVATAR_CUDA_ROOT}")
316322
find_package(CUDAToolkit REQUIRED)
317323
endif()
318324

@@ -430,6 +436,7 @@ if(WITH_MOORE)
430436
find_library(MUSA_LIB NAMES musa HINTS "${MUSA_ROOT}/lib" REQUIRED)
431437
find_library(MUSART_LIB NAMES musart HINTS "${MUSA_ROOT}/lib" REQUIRED)
432438
find_library(MUBLAS_LIB NAMES mublas HINTS "${MUSA_ROOT}/lib" REQUIRED)
439+
find_library(MUSA_OPENMP_LIB NAMES omp iomp5 HINTS "${MUSA_ROOT}/lib" REQUIRED)
433440
endif()
434441

435442
if(WITH_CAMBRICON)
@@ -464,6 +471,7 @@ endif()
464471

465472
# If all other platforms are not enabled, CPU is enabled by default.
466473
if(NOT WITH_NVIDIA AND NOT WITH_ILUVATAR AND NOT WITH_HYGON AND NOT WITH_METAX AND NOT WITH_MOORE AND NOT WITH_CAMBRICON AND NOT WITH_ASCEND)
474+
set(WITH_CPU ON CACHE BOOL "Enable CPU backend" FORCE)
467475
add_compile_definitions(WITH_CPU=1)
468476
endif()
469477

cmake/InfiniOpsConfig.cmake.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/InfiniOpsTargets.cmake")

cmake/infiniops.pc.in

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
exec_prefix=${prefix}
3+
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
4+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
5+
6+
Name: InfiniOps
7+
Description: InfiniOps operator library
8+
Version: @PROJECT_VERSION@
9+
Libs: -L${libdir} -linfiniops
10+
Cflags: -I${includedir}

include/infini/ops.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#ifndef INFINI_OPS_H_
2+
#define INFINI_OPS_H_
3+
4+
#ifdef __cplusplus
5+
#include <infini/functional_ops.h>
6+
#endif
7+
8+
#endif // INFINI_OPS_H_

0 commit comments

Comments
 (0)