Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
cca356b
add a2
Sep 20, 2025
43167f1
remove a3 in ops2
Sep 27, 2025
a973f61
build for a2 ops
Oct 9, 2025
634179c
add layout a2 with maxbs is 4096
Oct 9, 2025
1c7d029
add notify a2 with maxbs is 4096
Oct 9, 2025
de42797
fix notify a2, add expandIdx param
Oct 9, 2025
83a31c8
fix2 notify a2, add comm_args
Oct 10, 2025
a378182
debug with log
Oct 10, 2025
fb1625f
debug with test
Oct 10, 2025
fd5703a
add dispatchnormala2
Oct 10, 2025
33229ae
test change
Oct 11, 2025
8df0b15
dispatch memory adaption
Oct 11, 2025
430b561
barrier before call dispatch
Oct 14, 2025
323ee4c
sync before barrier, warn
Oct 14, 2025
8952ce2
debug dispatch a2 with log
Oct 14, 2025
7375586
debug dispatch, fix notify
Oct 14, 2025
b261078
debug dispatch, pass process
Oct 14, 2025
9063a13
add combine a2
Oct 14, 2025
d4b70be
debug combine a2 with test
Oct 15, 2025
015e167
scales fix
Oct 15, 2025
23b7cda
debug notify only
Oct 16, 2025
6728caf
test notify only
Oct 16, 2025
ef99fe7
fix bug for notify and dispatch
Oct 17, 2025
683aba0
add test combine
Oct 17, 2025
48dbaf9
fix for layout
Oct 17, 2025
669558a
fix bug and remove log for notify and dispatch
Oct 18, 2025
b8b292b
fix bug for notify
Oct 18, 2025
e74d9d5
fix for dispatch
Oct 18, 2025
d2ac390
test for combine
Oct 18, 2025
0ac52a7
fix bug for dispatch
Oct 19, 2025
be8e87a
fix for combine use offsetInner
Oct 19, 2025
0b78431
remove maxLocalBs and get val from globalBuff
Oct 19, 2025
5d2c937
correct usage of offsetInner
Oct 19, 2025
8d28e0b
print combine token in test & correct usage of offsetOuter
Oct 19, 2025
6fc5fde
adapt combine Preload and SumToServer
Oct 21, 2025
234a450
fix maxbs for notify and offsetInner
Oct 20, 2025
c243f00
fix layout for expertIdx
Oct 20, 2025
f92d423
fix bug for notify, srcOffset
Oct 21, 2025
ace95fd
fix notify for offsetInner
Oct 21, 2025
ee51574
test with maxbs is 4096
Oct 21, 2025
4e61357
sendCount & offsetInner adaption
Oct 21, 2025
373a192
remove duplicates in SumToWindow & fix tokenOffset int SumToServer
Oct 21, 2025
d7a8993
fix repeat alloc tensor
Oct 22, 2025
393fef4
remove sync after notify
Oct 22, 2025
4883186
add internode api for d&c
Oct 22, 2025
08e59d6
add test for internode
Oct 22, 2025
ee8c8b3
fix calculation of offset
Oct 22, 2025
556fbda
feat:adapt x86_64 compilation
Yael-X Oct 23, 2025
6cdd7e6
fix tokenNum
Oct 23, 2025
7f57f07
fix:bugfix
Yael-X Oct 23, 2025
b8928f9
fix notify
Oct 24, 2025
fd22d86
fix offsetInner
Oct 24, 2025
59cd516
combine support 4096 Bs
Oct 24, 2025
de49990
fix intranode_dispatch sendCount cal
Oct 24, 2025
86687ae
remove log print
Oct 24, 2025
868dc41
fix
Oct 24, 2025
0b078fd
reserver biger mem for notify
Oct 25, 2025
9ad4539
remove unuse api
Oct 25, 2025
be60ff2
fix code lint
Oct 25, 2025
cf2abb4
remove nouse test
Oct 25, 2025
feb7813
fix build for deepep
Oct 25, 2025
8476819
fix adapter param for d&c
Oct 26, 2025
7f1a891
fix adapter para for combine
Oct 26, 2025
3bae7c1
fix codelint
Oct 26, 2025
66cc968
fix codelint for executable
Oct 26, 2025
05abbed
fix codespell
Oct 26, 2025
41d1388
fix codelint for shell executable
Oct 26, 2025
da80e89
fix nouse code
Oct 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
set -e

BUILD_DEEPEP_MODULE="ON"
BUILD_DEEPEP_OPS="ON"
BUILD_KERNELS_MODULE="ON"
BUILD_MEMORY_SAVER_MODULE="ON"

Expand All @@ -20,6 +21,11 @@ while getopts ":a:hd" opt; do
case "$OPTARG" in
deepep )
BUILD_DEEPEP_MODULE="ON"
BUILD_DEEPEP_OPS="ON"
;;
deepep2 )
BUILD_DEEPEP_MODULE="ON"
BUILD_DEEPEP_OPS="OFF"
;;
kernels )
BUILD_KERNELS_MODULE="ON"
Expand Down Expand Up @@ -120,7 +126,11 @@ function build_deepep_kernels()
if [[ "$ONLY_BUILD_DEEPEP_ADAPTER_MODULE" == "ON" ]]; then return 0; fi
if [[ "$BUILD_DEEPEP_MODULE" != "ON" ]]; then return 0; fi

KERNEL_DIR="csrc/deepep/ops"
if [[ "$BUILD_DEEPEP_OPS" == "ON" ]]; then
KERNEL_DIR="csrc/deepep/ops"
else
KERNEL_DIR="csrc/deepep/ops2"
fi
CUSTOM_OPP_DIR="${CURRENT_DIR}/python/deep_ep/deep_ep"

cd "$KERNEL_DIR" || exit
Expand All @@ -137,6 +147,7 @@ function build_deepep_kernels()
echo "find run package: $custom_opp_file"
chmod +x "$custom_opp_file"
fi
rm -rf "$CUSTOM_OPP_DIR"/vendors
./build_out/custom_opp_*.run --install-path=$CUSTOM_OPP_DIR
cd -
}
Expand Down
10 changes: 10 additions & 0 deletions csrc/deepep/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# this is the cmakelist file for deepep build
# deepep will be built as separated wheel package

if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(DEEPEP_ARCH "x86_64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(DEEPEP_ARCH "aarch64")
else()
message(FATAL_ERROR "Unsupported host processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()

set(PROJECT_BUILD_PATH ${PROJECT_BINARY_DIR})
set(TARGET_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
set(ASCEND_HOME_PATH ${ASCEND_HOME_PATH})
Expand All @@ -27,6 +35,7 @@ target_include_directories( deep_ep_cpp PRIVATE
${TORCH_NPU_DIR}/include/third_party/acl/inc/acl
${TORCH_NPU_DIR}/include/third_party/acl/inc
${ASCEND_HOME_PATH}/include
${ASCEND_HOME_PATH}/${DEEPEP_ARCH}-linux/include/experiment/platform
)
target_link_directories(deep_ep_cpp PRIVATE
${TORCH_DIR}/lib
Expand All @@ -38,6 +47,7 @@ target_link_libraries(deep_ep_cpp PRIVATE
ascendcl
hccl
torch_npu
opapi
)

message(STATUS "TARGET_INSTALL_DIR = ${TARGET_INSTALL_DIR}")
Expand Down
313 changes: 311 additions & 2 deletions csrc/deepep/deep_ep.cpp

Large diffs are not rendered by default.

29 changes: 25 additions & 4 deletions csrc/deepep/deep_ep.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@
#include <optional>
#include "hccl/hccl.h"
#include "hccl/hccl_types.h"
#include "aclnn/opdev/platform.h"

#include "config.hpp"
#include "event.hpp"

namespace deep_ep {

struct Buffer {
int64_t rank, rdma_rank;
int64_t num_ranks;
int64_t rank, rdma_rank, nvl_rank;
int64_t num_ranks, num_rdma_ranks, num_nvl_ranks;
op::SocVersion soc_version;

int64_t num_nvl_bytes;
int64_t num_rdma_bytes;
Expand All @@ -26,6 +28,7 @@ struct Buffer {
at::Tensor ori_x;
at::Tensor new_topk_idx;
at::Tensor new_scales;
at::Tensor send_data;

int64_t shared_expert_rank_num;
int64_t shared_expert_num = 1;
Expand All @@ -47,6 +50,10 @@ struct Buffer {

bool is_available() const;

int get_num_rdma_ranks() const;

int get_rdma_rank() const;

std::tuple<torch::Tensor, std::optional<torch::Tensor>, torch::Tensor, torch::Tensor, std::optional<EventHandle>>
get_dispatch_layout(const torch::Tensor &topk_idx, int num_experts, std::optional<EventHandle> &previous_event,
bool async, bool allocate_on_comm_stream);
Expand All @@ -70,15 +77,29 @@ struct Buffer {
const std::optional<torch::Tensor> &topk_weights, const torch::Tensor &src_idx,
const torch::Tensor &send_head, const std::optional<at::Tensor> &combine_send_cost_stats);

std::tuple<torch::Tensor, std::optional<torch::Tensor>, std::optional<torch::Tensor>, std::optional<torch::Tensor>,
std::vector<int>, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor,
torch::Tensor, std::optional<EventHandle>>
internode_dispatch(const torch::Tensor &x, const std::optional<torch::Tensor> &x_scales,
const std::optional<torch::Tensor> &topk_idx, const std::optional<torch::Tensor> &topk_weights,
const std::optional<torch::Tensor> &num_tokens_per_rank,
const std::optional<torch::Tensor> &num_tokens_per_rdma_rank,
const torch::Tensor &is_token_in_rank, const std::optional<torch::Tensor> &num_tokens_per_expert,
const Config &config, std::optional<EventHandle> &previous_event, bool async,
bool allocate_on_comm_stream, bool use_quant);

std::tuple<torch::Tensor, std::optional<torch::Tensor>, std::optional<EventHandle>> internode_combine(
const torch::Tensor &x, const torch::Tensor &topk_idx, const std::optional<torch::Tensor> &topk_weights,
const torch::Tensor &src_idx, const torch::Tensor &send_head, const torch::Tensor &offsetInner,
const torch::Tensor &offsetOuter, const torch::Tensor &countOuter, const torch::Tensor &expand_scales);

std::tuple<at::Tensor, std::optional<at::Tensor>, at::Tensor, at::Tensor, at::Tensor, std::optional<EventHandle>,
std::optional<std::function<void()>>>
low_latency_dispatch(const at::Tensor &x, const at::Tensor &topk_idx,
const std::optional<at::Tensor> &cumulative_local_expert_recv_stats,
int64_t num_max_dispatch_tokens_per_rank, int64_t num_experts, bool use_fp8, bool round_scale,
bool use_ue8m0, bool async, bool return_recv_hook);

int get_rdma_rank() const;

std::tuple<at::Tensor, std::optional<EventHandle>, std::optional<std::function<void()>>> low_latency_combine(
const at::Tensor &x, const at::Tensor &topk_idx, const at::Tensor &topk_weights, const at::Tensor &src_info,
const at::Tensor &layout_range, int64_t num_max_dispatch_tokens_per_rank, int64_t num_experts,
Expand Down
67 changes: 67 additions & 0 deletions csrc/deepep/ops2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
cmake_minimum_required(VERSION 3.16.0)
project(opp)

if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(CANN_HOST_ARCH "x86_64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(CANN_HOST_ARCH "aarch64")
else()
message(FATAL_ERROR "Unsupported host processor: ${CMAKE_SYSTEM_PROCESSOR}")
endif()

include(cmake/config.cmake)
include(cmake/func.cmake)
include(cmake/intf.cmake)

set(CMAKE_COMPILE ${CMAKE_CXX_COMPILER})

if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/framework)
add_subdirectory(framework)
endif()
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/op_host)
add_subdirectory(op_host)
endif()
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/op_kernel)
add_subdirectory(op_kernel)
endif()
if(ENABLE_TEST AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/testcases)
add_subdirectory(testcases)
endif()

add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/scripts/install.sh ${CMAKE_BINARY_DIR}/scripts/upgrade.sh
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/scripts
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/scripts/ ${CMAKE_BINARY_DIR}/scripts/
COMMAND sed -i "s/vendor_name=customize/vendor_name=${vendor_name}/g" ${CMAKE_BINARY_DIR}/scripts/install.sh ${CMAKE_BINARY_DIR}/scripts/upgrade.sh
VERBATIM
)
add_custom_target(modify_vendor ALL DEPENDS ${CMAKE_BINARY_DIR}/scripts/install.sh ${CMAKE_BINARY_DIR}/scripts/upgrade.sh)

get_system_info(SYSTEM_INFO)

# gen version.info
add_custom_target(gen_version_info ALL
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/cmake/util/gen_version_info.sh ${ASCEND_CANN_PACKAGE_PATH} ${CMAKE_CURRENT_BINARY_DIR}
)

if(NOT ASCEND_PACK_SHARED_LIBRARY)
install(DIRECTORY ${CMAKE_BINARY_DIR}/scripts/ DESTINATION . FILE_PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_READ)

install(FILES ${CMAKE_SOURCE_DIR}/custom.proto DESTINATION packages OPTIONAL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version.info
DESTINATION packages/vendors/${vendor_name}/)

# CPack config
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
set(CPACK_PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})
set(CPACK_PACKAGE_DESCRIPTION "CPack opp project")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CPack opp project")
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_INSTALL_PREFIX})

set(CPACK_PACKAGE_FILE_NAME "custom_opp_${SYSTEM_INFO}_${CMAKE_SYSTEM_PROCESSOR}.run")
set(CPACK_GENERATOR External)
set(CPACK_CMAKE_GENERATOR "Unix Makefiles")
set(CPACK_EXTERNAL_ENABLE_STAGING TRUE)
set(CPACK_EXTERNAL_PACKAGE_SCRIPT ${CMAKE_SOURCE_DIR}/cmake/makeself.cmake)
set(CPACK_EXTERNAL_BUILT_PACKAGES ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/Linux/External/${CPACK_PACKAGE_FILE_NAME}/${CPACK_PACKAGE_FILE_NAME})
include(CPack)
endif()
59 changes: 59 additions & 0 deletions csrc/deepep/ops2/CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"version": 1,
"cmakeMinimumRequired": {
"major": 3,
"minor": 19,
"patch": 0
},
"configurePresets": [
{
"name": "default",
"displayName": "Default Config",
"description": "Default build using Unix Makefiles generator for native compilation",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build_out",
"cacheVariables": {
"CMAKE_BUILD_TYPE": {
"type": "STRING",
"value": "Release"
},
"ENABLE_SOURCE_PACKAGE": {
"type": "BOOL",
"value": "True"
},
"ENABLE_BINARY_PACKAGE": {
"type": "BOOL",
"value": "True"
},
"ASCEND_COMPUTE_UNIT": {
"type": "STRING",
"value": "ascend910b"
},
"ENABLE_TEST": {
"type": "BOOL",
"value": "True"
},
"vendor_name": {
"type": "STRING",
"value": "hwcomputing"
},
"ASCEND_CANN_PACKAGE_PATH": {
"type": "PATH",
"value": "/usr/local/Ascend/ascend-toolkit/latest"
},
"ASCEND_PYTHON_EXECUTABLE": {
"type": "STRING",
"value": "python3"
},
"CMAKE_INSTALL_PREFIX": {
"type": "PATH",
"value": "${sourceDir}/build_out"
},
"ASCEND_PACK_SHARED_LIBRARY": {
"type": "BOOL",
"value": "False"
}
}
}
]
}
10 changes: 10 additions & 0 deletions csrc/deepep/ops2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# moe_dispatch_combine

# compile
bash build.sh

# install
./build_out/custom_opp_ubuntu_aarch64.run --install-path=/usr/local/Ascend/ascend-toolkit/latest/opp/

# require import env parameters before running
source /usr/local/Ascend/ascend-toolkit/latest/opp/vendors/hwcomputing/bin/set_env.bash
69 changes: 69 additions & 0 deletions csrc/deepep/ops2/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/bash

export OPS_PROJECT_NAME=aclnnInner

SCRIPTS_DIR=$(cd "$(dirname "$0")" && pwd)

if [ -n "$BASE_LIBS_PATH" ]; then
export ASCEND_HOME_PATH="$BASE_LIBS_PATH"
elif [ -z "$ASCEND_HOME_PATH" ]; then
if [ -n "$ASCEND_AICPU_PATH" ]; then
export ASCEND_HOME_PATH="$ASCEND_AICPU_PATH"
else
echo "please set env." >&2
exit 1
fi
fi
echo "using ASCEND_HOME_PATH: $ASCEND_HOME_PATH"
script_path=$(realpath $(dirname $0))

BUILD_DIR="build_out"
HOST_NATIVE_DIR="host_native_tiling"

chmod +x cmake/util/gen_ops_filter.sh
mkdir -p build_out
rm -rf build_out/*

opts=$(python3 $script_path/cmake/util/preset_parse.py $script_path/CMakePresets.json)
ENABLE_CROSS="-DENABLE_CROSS_COMPILE=True"
ENABLE_BINARY="-DENABLE_BINARY_PACKAGE=True"
ENABLE_LIBRARY="-DASCEND_PACK_SHARED_LIBRARY=True"
cmake_version=$(cmake --version | grep "cmake version" | awk '{print $3}')

target=package
if [ -n "$1" ]; then target="$1"; fi
if [[ $opts =~ $ENABLE_LIBRARY ]]; then target=install; fi

if [[ $opts =~ $ENABLE_CROSS ]] && [[ $opts =~ $ENABLE_BINARY ]]
then
if [ "$cmake_version" \< "3.19.0" ] ; then
cmake -S . -B "$BUILD_DIR" $opts -DENABLE_CROSS_COMPILE=0
else
cmake -S . -B "$BUILD_DIR" --preset=default -DENABLE_CROSS_COMPILE=0
fi
cmake --build "$BUILD_DIR" --target cust_optiling
mkdir $BUILD_DIR/$HOST_NATIVE_DIR
lib_path=$(find "$BUILD_DIR" -name "libcust_opmaster_rt2.0.so")
if [ -z "$lib_path" ] || [ $(echo "$lib_path" | wc -l) -ne 1 ]; then
echo "Error: Expected to find exactly one libcust_opmaster_rt2.0.so, but found none or multiple." >&2
exit 1
fi
mv "$lib_path" "$BUILD_DIR/$HOST_NATIVE_DIR/"
find "$BUILD_DIR" -mindepth 1 -maxdepth 1 ! -name "$HOST_NATIVE_DIR" -exec rm -rf {} +
host_native_tiling_lib=$(realpath $(find $BUILD_DIR -type f -name "libcust_opmaster_rt2.0.so"))
if [ "$cmake_version" \< "3.19.0" ] ; then
cmake -S . -B "$BUILD_DIR" $opts -DHOST_NATIVE_TILING_LIB=$host_native_tiling_lib
else
cmake -S . -B "$BUILD_DIR" --preset=default -DHOST_NATIVE_TILING_LIB=$host_native_tiling_lib
fi
cmake --build "$BUILD_DIR" --target binary -j$(nproc)
cmake --build "$BUILD_DIR" --target $target -j$(nproc)
else
if [ "$cmake_version" \< "3.19.0" ] ; then
cmake -S . -B "$BUILD_DIR" $opts
else
cmake -S . -B "$BUILD_DIR" --preset=default
fi
cmake --build "$BUILD_DIR" --target binary -j$(nproc)
cmake --build "$BUILD_DIR" --target $target -j$(nproc)
fi
42 changes: 42 additions & 0 deletions csrc/deepep/ops2/cmake/config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

set(CMAKE_CXX_FLAGS_DEBUG "")
set(CMAKE_CXX_FLAGS_RELEASE "")

if (NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "")
endif()
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/build_out" CACHE PATH "" FORCE)
endif()
if (NOT DEFINED ASCEND_CANN_PACKAGE_PATH)
set(ASCEND_CANN_PACKAGE_PATH /usr/local/Ascend/latest CACHE PATH "")
endif()
if (NOT DEFINED ASCEND_PYTHON_EXECUTABLE)
set(ASCEND_PYTHON_EXECUTABLE python3 CACHE STRING "")
endif()
if (NOT DEFINED ASCEND_COMPUTE_UNIT)
set(ASCEND_COMPUTE_UNIT ascend910_93 CACHE STRING "")
endif()
if (NOT DEFINED ENABLE_TEST)
set(ENABLE_TEST FALSE CACHE BOOL "")
endif()
if (NOT DEFINED ENABLE_CROSS_COMPILE)
set(ENABLE_CROSS_COMPILE FALSE CACHE BOOL "")
endif()
if (NOT DEFINED CMAKE_CROSS_PLATFORM_COMPILER)
set(CMAKE_CROSS_PLATFORM_COMPILER "/your/cross/compiler/path" CACHE PATH "")
endif()
if (NOT DEFINED CMAKE_CROSS_LIBRARY_PATH)
set(CMAKE_CROSS_LIBRARY_PATH "" CACHE PATH "")
endif()
if (NOT DEFINED ASCEND_PACK_SHARED_LIBRARY)
set(ASCEND_PACK_SHARED_LIBRARY False CACHE BOOL "")
endif()
set(ASCEND_TENSOR_COMPILER_PATH ${ASCEND_CANN_PACKAGE_PATH}/compiler)
set(ASCEND_CCEC_COMPILER_PATH ${ASCEND_TENSOR_COMPILER_PATH}/ccec_compiler/bin)
set(ASCEND_AUTOGEN_PATH ${CMAKE_BINARY_DIR}/autogen)
file(MAKE_DIRECTORY ${ASCEND_AUTOGEN_PATH})
set(CUSTOM_COMPILE_OPTIONS "custom_compile_options.ini")
set(CUSTOM_OPC_OPTIONS "custom_opc_options.ini")
file(WRITE ${ASCEND_AUTOGEN_PATH}/${CUSTOM_COMPILE_OPTIONS} "")
file(WRITE ${ASCEND_AUTOGEN_PATH}/${CUSTOM_OPC_OPTIONS} "")
Loading
Loading