mirror of
https://github.com/NVIDIA/TensorRT-LLM.git
synced 2026-01-14 06:27:45 +08:00
* Update TensorRT-LLM --------- Co-authored-by: Shixiaowei02 <39303645+Shixiaowei02@users.noreply.github.com>
125 lines
3.5 KiB
CMake
Executable File
125 lines
3.5 KiB
CMake
Executable File
#
|
|
# SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION &
|
|
# AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations under
|
|
# the License.
|
|
#
|
|
|
|
set(PLUGIN_TARGET_NAME nvinfer_plugin_tensorrt_llm)
|
|
set(PLUGIN_SHARED_TARGET ${PLUGIN_TARGET_NAME})
|
|
|
|
set(TARGET_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set(PLUGIN_EXPORT_MAP ${TARGET_DIR}/exports.map) # Linux
|
|
set(PLUGIN_EXPORT_DEF ${TARGET_DIR}/exports.def) # Windows
|
|
|
|
if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
|
|
endif()
|
|
|
|
set(PLUGIN_SOURCES)
|
|
set(PLUGIN_CU_SOURCES)
|
|
|
|
set(PLUGIN_LISTS
|
|
bertAttentionPlugin
|
|
gptAttentionCommon
|
|
gptAttentionPlugin
|
|
identityPlugin
|
|
gemmPlugin
|
|
smoothQuantGemmPlugin
|
|
quantizePerTokenPlugin
|
|
quantizeTensorPlugin
|
|
layernormQuantizationPlugin
|
|
rmsnormQuantizationPlugin
|
|
weightOnlyGroupwiseQuantMatmulPlugin
|
|
weightOnlyQuantMatmulPlugin
|
|
lookupPlugin
|
|
loraPlugin
|
|
mixtureOfExperts
|
|
selectiveScanPlugin)
|
|
|
|
foreach(PLUGIN_ITER ${PLUGIN_LISTS})
|
|
include_directories(${PLUGIN_ITER})
|
|
add_subdirectory(${PLUGIN_ITER})
|
|
endforeach(PLUGIN_ITER)
|
|
|
|
if(ENABLE_MULTI_DEVICE EQUAL 1)
|
|
include_directories(ncclPlugin)
|
|
add_subdirectory(ncclPlugin)
|
|
endif()
|
|
include_directories(common)
|
|
add_subdirectory(common)
|
|
|
|
# Set gencodes
|
|
list(APPEND PLUGIN_SOURCES "${PLUGIN_CU_SOURCES}")
|
|
|
|
list(APPEND PLUGIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/api/tllmPlugin.cpp")
|
|
|
|
# ################################# SHARED LIBRARY
|
|
# ##############################################################################
|
|
|
|
if(WIN32)
|
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS 1)
|
|
endif()
|
|
|
|
add_library(${PLUGIN_SHARED_TARGET} SHARED ${PLUGIN_SOURCES})
|
|
|
|
target_include_directories(
|
|
${PLUGIN_SHARED_TARGET}
|
|
PUBLIC ${CUDA_INSTALL_DIR}/include ${MPI_C_INCLUDE_DIRS}
|
|
PRIVATE ${TARGET_DIR})
|
|
|
|
if(CUDA_VERSION VERSION_LESS 11.0)
|
|
target_include_directories(${PLUGIN_SHARED_TARGET} PUBLIC ${CUB_ROOT_DIR})
|
|
endif()
|
|
|
|
set_target_properties(
|
|
${PLUGIN_SHARED_TARGET}
|
|
PROPERTIES CXX_STANDARD "17"
|
|
CXX_STANDARD_REQUIRED "YES"
|
|
CXX_EXTENSIONS "NO"
|
|
ARCHIVE_OUTPUT_DIRECTORY "${TRT_OUT_DIR}"
|
|
LIBRARY_OUTPUT_DIRECTORY "${TRT_OUT_DIR}"
|
|
RUNTIME_OUTPUT_DIRECTORY "${TRT_OUT_DIR}")
|
|
|
|
if(WIN32)
|
|
set_target_properties(
|
|
${PLUGIN_SHARED_TARGET}
|
|
PROPERTIES LINK_FLAGS "/DEF:${PLUGIN_EXPORT_DEF} ${UNDEFINED_FLAG}")
|
|
else()
|
|
set_target_properties(
|
|
${PLUGIN_SHARED_TARGET}
|
|
PROPERTIES
|
|
LINK_FLAGS
|
|
"-Wl,--exclude-libs,ALL -Wl,--version-script=${PLUGIN_EXPORT_MAP} -Wl,-rpath,'$ORIGIN' ${AS_NEEDED_FLAG} ${UNDEFINED_FLAG}"
|
|
)
|
|
endif()
|
|
|
|
set_target_properties(
|
|
${PLUGIN_SHARED_TARGET} PROPERTIES VERSION ${TRT_VERSION} SOVERSION
|
|
${TRT_SOVERSION})
|
|
|
|
set_property(TARGET ${PLUGIN_SHARED_TARGET} PROPERTY CUDA_STANDARD 17)
|
|
|
|
target_link_libraries(
|
|
${PLUGIN_SHARED_TARGET}
|
|
${CUBLAS_LIB}
|
|
${CUBLASLT_LIB}
|
|
${CUDNN_LIB}
|
|
nvinfer
|
|
${CUDA_DRV_LIB}
|
|
${CUDA_RT_LIB}
|
|
${CMAKE_DL_LIBS}
|
|
${MPI_C_LIBRARIES}
|
|
${NCCL_LIB}
|
|
${SHARED_TARGET})
|