Skip to content

Commit b9958ef

Browse files
committed
Add DeepLearningExamples/FasterTransformer/v2.1 codes
1 parent b37acb1 commit b9958ef

File tree

212 files changed

+63229
-4444
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

212 files changed

+63229
-4444
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*~
22
*.o
3-
build/
4-
*.pyc
3+
build*/
4+
*.pyc
5+
.vscode/

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22
path = sample/tensorflow_bert/bert
33
url = https://github.com/google-research/bert.git
44

5+
[submodule "OpenNMT-tf"]
6+
path = OpenNMT-tf
7+
url = https://github.com/OpenNMT/OpenNMT-tf

CMakeLists.txt

Lines changed: 65 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,18 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14-
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
14+
cmake_minimum_required(VERSION 3.8 FATAL_ERROR) # for PyTorch extensions, version should be greater than 3.13
1515
project(FasterTransformer LANGUAGES CXX CUDA)
1616

1717
find_package(CUDA 10.0 REQUIRED)
1818

1919
option(BUILD_TRT "Build in TensorRT mode" OFF)
2020
option(BUILD_TF "Build in TensorFlow mode" OFF)
21+
option(BUILD_THE "Build in PyTorch eager mode" OFF)
22+
option(BUILD_THS "Build in TorchScript class mode" OFF)
23+
option(BUILD_THSOP "Build in TorchScript OP mode" OFF)
24+
25+
set(CXX_STD "11" CACHE STRING "C++ standard")
2126

2227
set(CUDA_PATH ${CUDA_TOOLKIT_ROOT_DIR})
2328

@@ -53,6 +58,11 @@ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_${SM},code=\\\"s
5358
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWMMA")
5459
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -DWMMA")
5560
endif()
61+
if(BUILD_THE OR BUILD_THS OR BUILD_THSOP)
62+
string(SUBSTRING ${SM} 0 1 SM_MAJOR)
63+
string(SUBSTRING ${SM} 1 1 SM_MINOR)
64+
set(ENV{TORCH_CUDA_ARCH_LIST} "${SM_MAJOR}.${SM_MINOR}")
65+
endif()
5666
message("-- Assign GPU architecture (sm=${SM})")
5767

5868
else()
@@ -65,22 +75,21 @@ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} \
6575
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWMMA")
6676
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWMMA")
6777
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -DWMMA")
78+
if(BUILD_THE OR BUILD_THS OR BUILD_THSOP)
79+
set(ENV{TORCH_CUDA_ARCH_LIST} "6.0;6.1;7.0;7.5")
80+
endif()
6881
message("-- Assign GPU architecture (sm=60,61,70,75)")
6982
endif()
7083

7184
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -O0")
7285
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -O0")
73-
set(CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -O0 -G -Xcompiler -Wall")
74-
86+
set(CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -O0 -G -Xcompiler -Wall --ptxas-options=-v --resource-usage")
7587

76-
set(CMAKE_CXX_STANDARD 11)
88+
set(CMAKE_CXX_STANDARD "${CXX_STD}")
7789
set(CMAKE_CXX_STANDARD_REQUIRED ON)
78-
79-
if(CMAKE_CXX_STANDARD STREQUAL "11")
80-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
81-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr")
82-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --std=c++11")
83-
endif()
90+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
91+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr")
92+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --std=c++${CXX_STD}")
8493

8594
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
8695
set(CMAKE_CUDA_FLAGS_RELEASE "${CMAKE_CUDA_FLAGS_RELEASE} -Xcompiler -O3")
@@ -108,6 +117,41 @@ if(BUILD_TRT)
108117
list(APPEND COMMON_LIB_DIRS ${TRT_PATH}/lib)
109118
endif()
110119

120+
set(PYTHON_PATH "python" CACHE STRING "Python path")
121+
if(BUILD_THE OR BUILD_THS OR BUILD_THSOP)
122+
execute_process(COMMAND ${PYTHON_PATH} "-c" "from __future__ import print_function; import os; import torch;
123+
print(os.path.dirname(torch.__file__),end='');"
124+
RESULT_VARIABLE _PYTHON_SUCCESS
125+
OUTPUT_VARIABLE TORCH_DIR)
126+
if (NOT _PYTHON_SUCCESS MATCHES 0)
127+
message(FATAL_ERROR "Torch config Error.")
128+
endif()
129+
list(APPEND CMAKE_PREFIX_PATH ${TORCH_DIR})
130+
find_package(Torch REQUIRED)
131+
132+
execute_process(COMMAND ${PYTHON_PATH} "-c" "from __future__ import print_function; from distutils import sysconfig;
133+
print(sysconfig.get_python_inc());
134+
print(sysconfig.get_config_var('SO'));"
135+
RESULT_VARIABLE _PYTHON_SUCCESS
136+
OUTPUT_VARIABLE _PYTHON_VALUES)
137+
if (NOT _PYTHON_SUCCESS MATCHES 0)
138+
message(FATAL_ERROR "Python config Error.")
139+
endif()
140+
string(REGEX REPLACE ";" "\\\\;" _PYTHON_VALUES ${_PYTHON_VALUES})
141+
string(REGEX REPLACE "\n" ";" _PYTHON_VALUES ${_PYTHON_VALUES})
142+
list(GET _PYTHON_VALUES 0 PY_INCLUDE_DIR)
143+
list(GET _PYTHON_VALUES 1 PY_SUFFIX)
144+
list(APPEND COMMON_HEADER_DIRS ${PY_INCLUDE_DIR})
145+
146+
execute_process(COMMAND ${PYTHON_PATH} "-c" "from torch.utils import cpp_extension; print(' '.join(cpp_extension._prepare_ldflags([],True,False)),end='');"
147+
RESULT_VARIABLE _PYTHON_SUCCESS
148+
OUTPUT_VARIABLE TORCH_LINK)
149+
if (NOT _PYTHON_SUCCESS MATCHES 0)
150+
message(FATAL_ERROR "PyTorch link config Error.")
151+
endif()
152+
endif()
153+
154+
111155
include_directories(
112156
${COMMON_HEADER_DIRS}
113157
)
@@ -124,10 +168,17 @@ if(BUILD_TF)
124168
add_custom_target(copy ALL COMMENT "Copying tensorflow test scripts")
125169
add_custom_command(TARGET copy
126170
POST_BUILD
127-
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow/*.py ${PROJECT_SOURCE_DIR}/build/
128-
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow/utils ${PROJECT_SOURCE_DIR}/build/ -r
129-
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow/scripts ${PROJECT_SOURCE_DIR}/build/ -r
130-
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow_bert ${PROJECT_SOURCE_DIR}/build/ -r
171+
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow/ ${PROJECT_BINARY_DIR} -r
172+
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow_bert ${PROJECT_BINARY_DIR}/tensorflow -r
131173
)
132174
endif()
133175

176+
if(BUILD_THE OR BUILD_THS OR BUILD_THSOP)
177+
add_custom_target(copy ALL COMMENT "Copying pytorch test scripts")
178+
add_custom_command(TARGET copy
179+
POST_BUILD
180+
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/pytorch/ ${PROJECT_BINARY_DIR} -r
181+
COMMAND mkdir -p ${PROJECT_BINARY_DIR}/pytorch/translation/data/
182+
COMMAND cp ${PROJECT_SOURCE_DIR}/sample/tensorflow/utils/translation/test.* ${PROJECT_BINARY_DIR}/pytorch/translation/data/
183+
)
184+
endif()

0 commit comments

Comments
 (0)