|
|
|
@ -1,11 +1,11 @@
|
|
|
|
|
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# 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.
|
|
|
|
@ -16,7 +16,7 @@
|
|
|
|
|
# To simplify the build process of PaddlePaddle, we defined couple of
|
|
|
|
|
# fundamental abstractions, e.g., how to build library, binary and
|
|
|
|
|
# test in C++, CUDA and Go.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# -------------------------------------------
|
|
|
|
|
# C++ CUDA C++ Go
|
|
|
|
|
# -------------------------------------------
|
|
|
|
@ -47,7 +47,7 @@ function(link_gtest TARGET_NAME)
|
|
|
|
|
add_dependencies(${TARGET_NAME} gtest)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# cc_library parses tensor.cc and figures out that target also depend on tensor.h.
|
|
|
|
|
# cc_library(tensor
|
|
|
|
|
# SRCS
|
|
|
|
@ -79,7 +79,7 @@ function(cc_binary TARGET_NAME)
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(cc_binary "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
add_executable(${TARGET_NAME} ${cc_binary_SRCS})
|
|
|
|
|
if(cc_binary_DEPS)
|
|
|
|
|
if(cc_binary_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${cc_binary_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${cc_binary_DEPS})
|
|
|
|
|
endif()
|
|
|
|
@ -94,18 +94,20 @@ endfunction(cc_binary)
|
|
|
|
|
# DEPS
|
|
|
|
|
# tensor)
|
|
|
|
|
function(cc_test TARGET_NAME)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(cc_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
add_executable(${TARGET_NAME} ${cc_test_SRCS})
|
|
|
|
|
if(cc_test_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${cc_test_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${cc_test_DEPS})
|
|
|
|
|
if(WITH_TESTING)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(cc_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
add_executable(${TARGET_NAME} ${cc_test_SRCS})
|
|
|
|
|
if(cc_test_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${cc_test_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${cc_test_DEPS})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
link_gtest(${TARGET_NAME})
|
|
|
|
|
add_test(${TARGET_NAME} ${TARGET_NAME})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
link_gtest(${TARGET_NAME})
|
|
|
|
|
add_test(${TARGET_NAME} ${TARGET_NAME})
|
|
|
|
|
endfunction(cc_test)
|
|
|
|
|
|
|
|
|
|
# Suppose that ops.cu includes global functions that take Tensor as
|
|
|
|
@ -117,31 +119,35 @@ endfunction(cc_test)
|
|
|
|
|
# DEPS
|
|
|
|
|
# tensor)
|
|
|
|
|
function(nv_library TARGET_NAME)
|
|
|
|
|
set(options OPTIONAL)
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
if (${nv_library_OPTIONAL} STREQUAL "SHARED")
|
|
|
|
|
cuda_add_library(${TARGET_NAME} SHARED ${nv_library_SRCS})
|
|
|
|
|
else()
|
|
|
|
|
cuda_add_library(${TARGET_NAME} STATIC ${nv_library_SRCS})
|
|
|
|
|
endif()
|
|
|
|
|
if (nv_library_DEPS)
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_library_DEPS})
|
|
|
|
|
if (WITH_GPU)
|
|
|
|
|
set(options OPTIONAL)
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
if (${nv_library_OPTIONAL} STREQUAL "SHARED")
|
|
|
|
|
cuda_add_library(${TARGET_NAME} SHARED ${nv_library_SRCS})
|
|
|
|
|
else()
|
|
|
|
|
cuda_add_library(${TARGET_NAME} STATIC ${nv_library_SRCS})
|
|
|
|
|
endif()
|
|
|
|
|
if (nv_library_DEPS)
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_library_DEPS})
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
endfunction(nv_library)
|
|
|
|
|
|
|
|
|
|
function(nv_binary TARGET_NAME)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_binary "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
cuda_add_executable(${TARGET_NAME} ${nv_binary_SRCS})
|
|
|
|
|
if(nv_binary_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${nv_binary_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_binary_DEPS})
|
|
|
|
|
if (WITH_GPU)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_binary "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
cuda_add_executable(${TARGET_NAME} ${nv_binary_SRCS})
|
|
|
|
|
if(nv_binary_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${nv_binary_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_binary_DEPS})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
endfunction(nv_binary)
|
|
|
|
|
|
|
|
|
|
# The dependency to target tensor implies that if any of
|
|
|
|
@ -152,18 +158,20 @@ endfunction(nv_binary)
|
|
|
|
|
# DEPS
|
|
|
|
|
# ops)
|
|
|
|
|
function(nv_test TARGET_NAME)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
cuda_add_executable(${TARGET_NAME} ${nv_test_SRCS})
|
|
|
|
|
if(nv_test_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${nv_test_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_test_DEPS})
|
|
|
|
|
if (WITH_GPU AND WITH_TESTING)
|
|
|
|
|
set(options "")
|
|
|
|
|
set(oneValueArgs "")
|
|
|
|
|
set(multiValueArgs SRCS DEPS)
|
|
|
|
|
cmake_parse_arguments(nv_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
cuda_add_executable(${TARGET_NAME} ${nv_test_SRCS})
|
|
|
|
|
if(nv_test_DEPS)
|
|
|
|
|
target_link_libraries(${TARGET_NAME} ${nv_test_DEPS})
|
|
|
|
|
add_dependencies(${TARGET_NAME} ${nv_test_DEPS})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
link_gtest(${TARGET_NAME})
|
|
|
|
|
add_test(${TARGET_NAME} ${TARGET_NAME})
|
|
|
|
|
endif()
|
|
|
|
|
link_glog_gflags(${TARGET_NAME})
|
|
|
|
|
link_gtest(${TARGET_NAME})
|
|
|
|
|
add_test(${TARGET_NAME} ${TARGET_NAME})
|
|
|
|
|
endfunction(nv_test)
|
|
|
|
|
|
|
|
|
|
set(GOPATH "${CMAKE_CURRENT_BINARY_DIR}/go")
|
|
|
|
@ -189,7 +197,7 @@ function(go_library TARGET_NAME)
|
|
|
|
|
set(LIB_NAME "lib${TARGET_NAME}.dylib")
|
|
|
|
|
else()
|
|
|
|
|
set(LIB_NAME "lib${TARGET_NAME}.so")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
set(BUILD_MODE "-buildmode=c-archive")
|
|
|
|
|
set(LIB_NAME "lib${TARGET_NAME}.a")
|
|
|
|
@ -215,8 +223,8 @@ function(go_binary TARGET_NAME)
|
|
|
|
|
COMMAND env GOPATH=${GOPATH} ${CMAKE_Go_COMPILER} build
|
|
|
|
|
-o "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}"
|
|
|
|
|
${go_library_SRCS}
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
|
add_custom_target(${TARGET_NAME} ALL DEPENDS ${TARGET_NAME}_timestamp ${go_binary_DEPS})
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
|
add_custom_target(${TARGET_NAME} ALL DEPENDS ${TARGET_NAME}_timestamp ${go_binary_DEPS})
|
|
|
|
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME} DESTINATION bin)
|
|
|
|
|
endfunction(go_binary)
|
|
|
|
|
|
|
|
|
@ -229,8 +237,8 @@ function(go_test TARGET_NAME)
|
|
|
|
|
COMMAND env GOPATH=${GOPATH} ${CMAKE_Go_COMPILER} test
|
|
|
|
|
-c -o "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}"
|
|
|
|
|
${go_test_SRCS}
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
|
add_custom_target(${TARGET_NAME} ALL DEPENDS ${TARGET_NAME}_timestamp ${go_test_DEPS})
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
|
add_custom_target(${TARGET_NAME} ALL DEPENDS ${TARGET_NAME}_timestamp ${go_test_DEPS})
|
|
|
|
|
add_test(${TARGET_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME})
|
|
|
|
|
endfunction(go_test)
|
|
|
|
|
|
|
|
|
|