Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Commit

Permalink
cmake: improve finding Python 3 executable
Browse files Browse the repository at this point in the history
  • Loading branch information
leezu committed Feb 21, 2020
1 parent 1eb6e5a commit aebaae0
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 37 deletions.
3 changes: 2 additions & 1 deletion 3rdparty/mshadow/CMakeLists.txt
Expand Up @@ -67,7 +67,8 @@ else()
endif()

set(mshadow_LINT_DIRS mshadow mshadow-ps)
find_package(Python3 REQUIRED)
add_custom_target(mshadow_lint COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DLINT_DIRS=${mshadow_LINT_DIRS}
-DPYTHON_EXECUTABLE=${PYTHON3_EXECUTABLE} -DLINT_DIRS=${mshadow_LINT_DIRS}
-DPROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR} -DPROJECT_NAME=mshadow
-P ${PROJECT_SOURCE_DIR}/../dmlc-core/cmake/lint.cmake)
18 changes: 4 additions & 14 deletions CMakeLists.txt
Expand Up @@ -776,14 +776,7 @@ endfunction()
if(USE_TVM_OP)
list(APPEND mxnet_LINKER_LIBS ${CMAKE_CURRENT_BINARY_DIR}/3rdparty/tvm/libtvm_runtime.so)
BuildTVMOP()
if(NOT Python3_EXECUTABLE)
find_package(PythonInterp 3 REQUIRED)
set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python3 executable")
if(NOT Python3_EXECUTABLE)
message(FATAL_ERROR "No python3 interpreter found to build TVM operators")
endif()
endif()

find_package(Python3 REQUIRED)
set(TVM_OP_COMPILE_OPTIONS "-o${CMAKE_CURRENT_BINARY_DIR}" "--config" "${CMAKE_CURRENT_BINARY_DIR}/tvmop.conf" "-L" "${CMAKE_CURRENT_BINARY_DIR}/3rdparty/tvm")
if(USE_CUDA)
set(TVM_OP_COMPILE_OPTIONS "${TVM_OP_COMPILE_OPTIONS}" "--cuda-arch" "\"${CUDA_ARCH_FLAGS}\"")
Expand All @@ -793,7 +786,7 @@ if(USE_TVM_OP)
COMMAND ${CMAKE_COMMAND} -E env
PYTHONPATH="${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/tvm/python:${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/tvm/topi/python:${CMAKE_CURRENT_SOURCE_DIR}/contrib"
LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/3rdparty/tvm:$ENV{LD_LIBRARY_PATH}
${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/contrib/tvmop/compile.py ${TVM_OP_COMPILE_OPTIONS}
${PYTHON3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/contrib/tvmop/compile.py ${TVM_OP_COMPILE_OPTIONS}
)
endif()

Expand Down Expand Up @@ -902,13 +895,10 @@ endif()
add_subdirectory(tests)

# ---[ Linter target
if(MSVC)
find_package(PythonInterp)
set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "Path to the python executable")
endif()
find_package(Python3 REQUIRED)
set(LINT_DIRS "include src plugin cpp-package tests")
set(EXCLUDE_PATH "src/operator/contrib/ctc_include")
add_custom_target(mxnet_lint COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DLINT_DIRS=${LINT_DIRS} -DPROJECT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DPROJECT_NAME=mxnet -DEXCLUDE_PATH=${EXCLUDE_PATH} -P ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dmlc-core/cmake/lint.cmake)
add_custom_target(mxnet_lint COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC} -DPYTHON_EXECUTABLE=${PYTHON3_EXECUTABLE} -DLINT_DIRS=${LINT_DIRS} -DPROJECT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DPROJECT_NAME=mxnet -DEXCLUDE_PATH=${EXCLUDE_PATH} -P ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dmlc-core/cmake/lint.cmake)

if(BUILD_CYTHON_MODULES)
include(cmake/BuildCythonModules.cmake)
Expand Down
5 changes: 0 additions & 5 deletions ci/docker/runtime_functions.sh
Expand Up @@ -830,7 +830,6 @@ build_ubuntu_gpu_cmake_mkldnn() {
-DUSE_CUDA=1 \
-DUSE_CUDNN=1 \
-DUSE_TVM_OP=1 \
-DPython3_EXECUTABLE=/usr/bin/python3 \
-DUSE_MKLML_MKL=1 \
-DCMAKE_BUILD_TYPE=Release \
-DMXNET_CUDA_ARCH="$CI_CMAKE_CUDA_ARCH" \
Expand All @@ -849,7 +848,6 @@ build_ubuntu_gpu_cmake() {
-DUSE_CUDA=ON \
-DUSE_CUDNN=ON \
-DUSE_TVM_OP=ON \
-DPython3_EXECUTABLE=/usr/bin/python3 \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_MKLML_MKL=OFF \
-DUSE_MKLDNN=OFF \
Expand All @@ -872,7 +870,6 @@ build_ubuntu_gpu_cmake_no_rtc() {
-DUSE_CUDA=ON \
-DUSE_CUDNN=ON \
-DUSE_TVM_OP=ON \
-DPython3_EXECUTABLE=/usr/bin/python3 \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_MKLML_MKL=OFF \
-DUSE_MKLDNN=ON \
Expand All @@ -896,7 +893,6 @@ build_ubuntu_gpu_cmake_no_tvm_op() {
-DUSE_CUDA=ON \
-DUSE_CUDNN=ON \
-DUSE_TVM_OP=OFF \
-DPython3_EXECUTABLE=/usr/bin/python3 \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_MKLML_MKL=OFF \
-DUSE_MKLDNN=OFF \
Expand Down Expand Up @@ -936,7 +932,6 @@ build_ubuntu_gpu_large_tensor() {
-DUSE_CUDA=ON \
-DUSE_CUDNN=ON \
-DUSE_TVM_OP=ON \
-DPython3_EXECUTABLE=/usr/bin/python3 \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_MKLML_MKL=OFF \
-DUSE_MKLDNN=OFF \
Expand Down
27 changes: 10 additions & 17 deletions cmake/BuildCythonModules.cmake
Expand Up @@ -16,23 +16,16 @@
# under the License.

function(add_cython_modules python_version)
unset(PYTHON_EXECUTABLE CACHE)
set(PYTHONINTERP_FOUND FALSE)
find_package(PythonInterp ${python_version} EXACT)
if(PYTHONINTERP_FOUND)
find_program(CYTHON_EXECUTABLE NAMES cython)
if(CYTHON_EXECUTABLE)
add_custom_command(COMMAND ${CMAKE_COMMAND} POST_BUILD
-E env MXNET_LIBRARY_PATH=${CMAKE_BINARY_DIR}/libmxnet.so
${PYTHON_EXECUTABLE} setup.py build_ext --inplace --with-cython
TARGET mxnet
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/python")
message("-- Cython modules for python${python_version} will be built")
set(PYTHON${python_version}_FOUND 1 PARENT_SCOPE)
else()
message(FATAL_ERROR "-- Cython not found")
endif()
find_package(Python3 REQUIRED)
find_program(CYTHON_EXECUTABLE NAMES cython)
if(CYTHON_EXECUTABLE)
add_custom_command(COMMAND ${CMAKE_COMMAND} POST_BUILD
-E env MXNET_LIBRARY_PATH=${CMAKE_BINARY_DIR}/libmxnet.so
${PYTHON3_EXECUTABLE} setup.py build_ext --inplace --with-cython
TARGET mxnet
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/python")
message("-- Cython modules will be built")
else()
set(PYTHON${python_version}_FOUND 0 PARENT_SCOPE)
message(FATAL_ERROR "-- Cython not found")
endif()
endfunction()

0 comments on commit aebaae0

Please sign in to comment.