lastest 12.0.1, for fit cutlass upgrade
GitOrigin-RevId: 23b9d779df
tags/v1.6.0-rc1
@@ -24,17 +24,16 @@ | |||||
* install to default dir: /c/Program\ Files/Git | * install to default dir: /c/Program\ Files/Git | ||||
2: install visual studio 2019 Enterprise (Windows GUI) | 2: install visual studio 2019 Enterprise (Windows GUI) | ||||
* download install exe from https://visualstudio.microsoft.com | * download install exe from https://visualstudio.microsoft.com | ||||
* choose "c++ develop" -> choose cmake/MSVC/clang/cmake/windows-sdk when install | |||||
* choose "c++ develop" -> choose cmake/MSVC/cmake/windows-sdk when install | |||||
* NOTICE: windows sdk version >=14.28.29910 do not compat with CUDA 10.1, please | * NOTICE: windows sdk version >=14.28.29910 do not compat with CUDA 10.1, please | ||||
choose version < 14.28.29910 | choose version < 14.28.29910 | ||||
* then install choosed components | * then install choosed components | ||||
* after install visual studio 2019 Enterprise, time to replace lld-link.exe | |||||
caused by visual studio 2019 lld-link.exe have crash issue | |||||
download office exe from https://releases.llvm.org/download.html | |||||
install to default: C:\Program Files\LLVM | |||||
cd "/c/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/Llvm/bin" | |||||
cp /c/Program\ Files/LLVM/bin/lld-link.exe lld-link.exe | |||||
3: install python3 (Windows GUI) | |||||
3: install LLVM from https://releases.llvm.org/download.html (Windows GUI) | |||||
* llvm install by Visual Studio have some issue, eg, link crash on large project, please use official version | |||||
* download install exe from https://releases.llvm.org/download.html | |||||
* our ci use LLVM 12.0.1, if u install other version, please modify LLVM_PATH | |||||
* install 12.0.1 to /c/Program\ Files/LLVM_12_0_1 | |||||
4: install python3 (Windows GUI) | |||||
* download python 64-bit install exe (we support python3.5-python3.8 now) | * download python 64-bit install exe (we support python3.5-python3.8 now) | ||||
https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe | https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe | ||||
https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe | https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe | ||||
@@ -52,21 +51,21 @@ | |||||
python3.exe -m pip install --upgrade pip | python3.exe -m pip install --upgrade pip | ||||
python3.exe -m pip install -r imperative/python/requires.txt | python3.exe -m pip install -r imperative/python/requires.txt | ||||
python3.exe -m pip install -r imperative/python/requires-test.txt | python3.exe -m pip install -r imperative/python/requires-test.txt | ||||
4: install cuda components (Windows GUI) | |||||
5: install cuda components (Windows GUI) | |||||
* now we support cuda10.1+cudnn7.6+TensorRT6.0 on Windows | * now we support cuda10.1+cudnn7.6+TensorRT6.0 on Windows | ||||
* install cuda10.1 to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 | * install cuda10.1 to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 | ||||
* install cudnn7.6 to C:\Program Files\NVIDIA GPU Computing Toolkit\cudnn-10.1-windows10-x64-v7.6.5.32 | * install cudnn7.6 to C:\Program Files\NVIDIA GPU Computing Toolkit\cudnn-10.1-windows10-x64-v7.6.5.32 | ||||
* install TensorRT6.0 to C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-6.0.1.5 | * install TensorRT6.0 to C:\Program Files\NVIDIA GPU Computing Toolkit\TensorRT-6.0.1.5 | ||||
5: edit system env variables (Windows GUI) | |||||
6: edit system env variables (Windows GUI) | |||||
* create new key: "VS_PATH", value: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" | * create new key: "VS_PATH", value: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" | ||||
* create new key: "LLVM_PATH", value: "C:\Program Files\LLVM_12_0_1" | |||||
* append "Path" env value | * append "Path" env value | ||||
C:\Program Files\Git\cmd | C:\Program Files\Git\cmd | ||||
C:\Users\build\mge_whl_python_env\3.8.3 | C:\Users\build\mge_whl_python_env\3.8.3 | ||||
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin | C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin | ||||
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp | C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp | ||||
C:\Program Files\NVIDIA GPU Computing Toolkit\cudnn-10.1-windows10-x64-v7.6.5.32\cuda\bin | C:\Program Files\NVIDIA GPU Computing Toolkit\cudnn-10.1-windows10-x64-v7.6.5.32\cuda\bin | ||||
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\Llvm\lib\clang\11.0.0\lib\windows | |||||
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\Llvm\x64\lib\clang\11.0.0\lib\windows | |||||
C:\Program Files\LLVM_12_0_1\lib\clang\12.0.1\lib\windows | |||||
``` | ``` | ||||
### Linux host build | ### Linux host build | ||||
@@ -161,7 +161,7 @@ function prepare_env_for_windows_build() { | |||||
fi | fi | ||||
echo $VS_PATH | echo $VS_PATH | ||||
# only use cmake/clang-cl/Ninja install from Visual Studio, if not, may build failed | |||||
# only use cmake/Ninja install from Visual Studio, if not, may build failed | |||||
# some user env may install cmake/clang-cl/Ninja at windows-git-bash env, so we put Visual Studio | # some user env may install cmake/clang-cl/Ninja at windows-git-bash env, so we put Visual Studio | ||||
# path at the head of PATH, and check the valid | # path at the head of PATH, and check the valid | ||||
echo "check cmake install..." | echo "check cmake install..." | ||||
@@ -176,14 +176,22 @@ function prepare_env_for_windows_build() { | |||||
fi | fi | ||||
echo "check clang-cl install..." | echo "check clang-cl install..." | ||||
export PATH=$VS_PATH/VC/Tools/Llvm/bin/:$PATH | |||||
which clang-cl | |||||
# llvm install by Visual Studio have some issue, eg, link crash on large project, so we | |||||
# use official LLVM download from https://releases.llvm.org/download.html | |||||
if [[ -z ${LLVM_PATH} ]];then | |||||
echo "can not find LLVM_PATH env, pls export you LLVM install dir to LLVM_PATH" | |||||
echo "examle for export LLVM_12_0_1" | |||||
echo "export LLVM_PATH=/c/Program\ Files/LLVM_12_0_1" | |||||
exit -1 | |||||
fi | |||||
echo ${LLVM_PATH} | |||||
export PATH=${LLVM_PATH}/bin/:$PATH | |||||
clang_loc=`which clang-cl` | clang_loc=`which clang-cl` | ||||
if [[ $clang_loc =~ "Visual" ]]; then | if [[ $clang_loc =~ "Visual" ]]; then | ||||
echo "clang-cl valid ..." | |||||
else | |||||
echo "clang-cl Invalid: ..." | |||||
echo "clang-cl Invalid: we do not support use LLVM installed by Visual Studio" | |||||
windows_env_err | windows_env_err | ||||
else | |||||
echo "clang-cl valid ..." | |||||
fi | fi | ||||
echo "check Ninja install..." | echo "check Ninja install..." | ||||
@@ -16,8 +16,10 @@ function err_env() { | |||||
function append_path_env_and_check() { | function append_path_env_and_check() { | ||||
echo "export vs2019 install path" | echo "export vs2019 install path" | ||||
export VS_PATH=/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise | export VS_PATH=/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise | ||||
echo "export LLVM install path" | |||||
export LLVM_PATH=/c/Program\ Files/LLVM_12_0_1 | |||||
# for llvm-strip | # for llvm-strip | ||||
export PATH=$VS_PATH/VC/Tools/Llvm/bin/:$PATH | |||||
export PATH=${LLVM_PATH}/bin/:$PATH | |||||
} | } | ||||
append_path_env_and_check | append_path_env_and_check | ||||
@@ -12,5 +12,10 @@ install (TARGETS load_and_run EXPORT ${MGE_EXPORT_TARGETS} RUNTIME DESTINATION $ | |||||
if(MGE_WITH_TEST) | if(MGE_WITH_TEST) | ||||
add_executable(json_loader_test test/json_loader_test.cpp src/json_loader.h src/json_loader.cpp) | add_executable(json_loader_test test/json_loader_test.cpp src/json_loader.h src/json_loader.cpp) | ||||
target_link_libraries (json_loader_test megengine) | |||||
# Windows does not support implicitly importing data members from DLL. | |||||
if (WIN32) | |||||
target_link_libraries (json_loader_test megbrain megdnn ${MGE_CUDA_LIBS}) | |||||
else() | |||||
target_link_libraries (json_loader_test megengine) | |||||
endif() | |||||
endif() | endif() |
@@ -197,33 +197,37 @@ endif() | |||||
set (_VER_FILE ${PROJECT_SOURCE_DIR}/src/version.ld) | set (_VER_FILE ${PROJECT_SOURCE_DIR}/src/version.ld) | ||||
if(MGE_BUILD_IMPERATIVE_RT | |||||
) | |||||
message(VERBOSE "create a export SHARED lib for python use") | |||||
add_library(megengine_export SHARED) | |||||
target_link_libraries(megengine_export PUBLIC megbrain megdnn) | |||||
target_link_libraries(megengine_export PRIVATE ${MGE_CUDA_LIBS}) | |||||
if (MGE_WITH_DISTRIBUTED) | |||||
message(VERBOSE "megengine_export configured to link megray") | |||||
target_link_libraries(megengine_export PUBLIC megray) | |||||
# Windows does not support implicitly importing data members from DLL. | |||||
# on Windows: | |||||
# depends on megdnn/megbrain target, refs to sdk/load-and-run/CMakeLists.txt | |||||
# depends on megengine lite_share or lite_static | |||||
if(NOT WIN32) | |||||
if(MGE_BUILD_IMPERATIVE_RT | |||||
) | |||||
message(VERBOSE "create a export SHARED lib for python use") | |||||
add_library(megengine_export SHARED) | |||||
target_link_libraries(megengine_export PUBLIC megbrain megdnn) | |||||
target_link_libraries(megengine_export PRIVATE ${MGE_CUDA_LIBS}) | |||||
if (MGE_WITH_DISTRIBUTED) | |||||
message(VERBOSE "megengine_export configured to link megray") | |||||
target_link_libraries(megengine_export PUBLIC megray) | |||||
endif() | |||||
endif() | endif() | ||||
endif() | |||||
# Build as SHARED or STATIC depending on BUILD_SHARED_LIBS=ON/OFF | |||||
add_library(megengine) | |||||
target_link_libraries(megengine PRIVATE ${MGE_CUDA_LIBS}) | |||||
target_link_libraries(megengine PUBLIC megbrain megdnn) | |||||
if (UNIX AND NOT APPLE) | |||||
target_link_options(megengine PRIVATE -Wl,--no-undefined -Wl,--version-script=${_VER_FILE}) | |||||
set_target_properties(megengine PROPERTIES LINK_DEPENDS ${_VER_FILE}) | |||||
endif() | |||||
set_target_properties(megengine PROPERTIES CXX_VISIBILITY_PRESET default) | |||||
set_target_properties(megengine PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) | |||||
# Do not export targets if MGE_WITH_DISTRIBUTED is on. MegRay is not ready | |||||
# for this. | |||||
install(TARGETS megengine | |||||
# Build as SHARED or STATIC depending on BUILD_SHARED_LIBS=ON/OFF | |||||
add_library(megengine) | |||||
target_link_libraries(megengine PRIVATE ${MGE_CUDA_LIBS}) | |||||
target_link_libraries(megengine PUBLIC megbrain megdnn) | |||||
if (UNIX AND NOT APPLE) | |||||
target_link_options(megengine PRIVATE -Wl,--no-undefined -Wl,--version-script=${_VER_FILE}) | |||||
set_target_properties(megengine PROPERTIES LINK_DEPENDS ${_VER_FILE}) | |||||
endif() | |||||
# Do not export targets if MGE_WITH_DISTRIBUTED is on. MegRay is not ready | |||||
# for this. | |||||
install(TARGETS megengine | |||||
EXPORT ${MGE_EXPORT_TARGETS} | EXPORT ${MGE_EXPORT_TARGETS} | ||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||||
endif() | |||||
if (NOT MGE_WITH_DISTRIBUTED) | if (NOT MGE_WITH_DISTRIBUTED) | ||||
install(TARGETS megbrain | install(TARGETS megbrain | ||||