Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
b5576301
P
Paddle
项目概览
BaiXuePrincess
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b5576301
编写于
3月 22, 2017
作者:
J
jacquesqiao
提交者:
GitHub
3月 22, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1682 from jacquesqiao/swig-compile
Refine swig and PaddlePaddle python wheel
上级
c1feccdc
6f745ba0
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
100 addition
and
326 deletion
+100
-326
CMakeLists.txt
CMakeLists.txt
+9
-2
cmake/coveralls.cmake
cmake/coveralls.cmake
+1
-1
cmake/external/protobuf.cmake
cmake/external/protobuf.cmake
+2
-1
cmake/util.cmake
cmake/util.cmake
+0
-20
doc/getstarted/build_and_install/build_from_source_en.md
doc/getstarted/build_and_install/build_from_source_en.md
+1
-1
paddle/api/CMakeLists.txt
paddle/api/CMakeLists.txt
+65
-62
paddle/api/Paddle.i
paddle/api/Paddle.i
+0
-0
paddle/api/paddle_api_config.py.in
paddle/api/paddle_api_config.py.in
+0
-17
paddle/api/paddle_ld_flags.py
paddle/api/paddle_ld_flags.py
+0
-157
paddle/py_paddle/.gitignore
paddle/py_paddle/.gitignore
+1
-0
paddle/scripts/docker/build.sh
paddle/scripts/docker/build.sh
+1
-1
paddle/scripts/travis/build_and_test.sh
paddle/scripts/travis/build_and_test.sh
+1
-1
paddle/setup.py.in
paddle/setup.py.in
+11
-60
paddle/utils/PythonUtil.cpp.in
paddle/utils/PythonUtil.cpp.in
+8
-3
未找到文件。
CMakeLists.txt
浏览文件 @
b5576301
...
@@ -40,7 +40,7 @@ option(WITH_RDMA "Compile PaddlePaddle with RDMA support" OFF)
...
@@ -40,7 +40,7 @@ option(WITH_RDMA "Compile PaddlePaddle with RDMA support" OFF)
option
(
WITH_TIMER
"Compile PaddlePaddle with stats timer"
OFF
)
option
(
WITH_TIMER
"Compile PaddlePaddle with stats timer"
OFF
)
option
(
WITH_PROFILER
"Compile PaddlePaddle with GPU profiler"
OFF
)
option
(
WITH_PROFILER
"Compile PaddlePaddle with GPU profiler"
OFF
)
option
(
WITH_DOC
"Compile PaddlePaddle with documentation"
OFF
)
option
(
WITH_DOC
"Compile PaddlePaddle with documentation"
OFF
)
option
(
ON_COVERALLS
"Compile PaddlePaddle with code coverage"
OFF
)
option
(
WITH_COVERAGE
"Compile PaddlePaddle with code coverage"
OFF
)
option
(
COVERALLS_UPLOAD
"Package code coverage data to coveralls"
OFF
)
option
(
COVERALLS_UPLOAD
"Package code coverage data to coveralls"
OFF
)
option
(
ON_TRAVIS
"Exclude special unit test on Travis CI"
OFF
)
option
(
ON_TRAVIS
"Exclude special unit test on Travis CI"
OFF
)
...
@@ -82,14 +82,21 @@ include_directories("${PROJ_ROOT}/paddle/cuda/include")
...
@@ -82,14 +82,21 @@ include_directories("${PROJ_ROOT}/paddle/cuda/include")
include_directories
(
"
${
CMAKE_CURRENT_BINARY_DIR
}
/proto"
)
include_directories
(
"
${
CMAKE_CURRENT_BINARY_DIR
}
/proto"
)
set
(
EXTERNAL_LIBS
set
(
EXTERNAL_LIBS
# have not include gtest here.
${
GFLAGS_LIBRARIES
}
${
GFLAGS_LIBRARIES
}
${
GLOG_LIBRARIES
}
${
GLOG_LIBRARIES
}
${
CBLAS_LIBRARIES
}
${
CBLAS_LIBRARIES
}
${
PROTOBUF_LIBRARY
}
${
PROTOBUF_LIBRARY
}
${
ZLIB_LIBRARIES
}
${
ZLIB_LIBRARIES
}
${
PYTHON_LIBRARIES
}
)
)
if
(
WITH_GPU
)
list
(
APPEND EXTERNAL_LIB
${
CUDA_LIBRARIES
}
${
CUDA_rt_LIBRARY
}
)
if
(
NOT WITH_DSO
)
list
(
APPEND EXTERNAL_LIB
${
CUDNN_LIBRARY
}
${
CUDA_CUBLAS_LIBRARIES
}
${
CUDA_curand_LIBRARY
}
)
endif
(
NOT WITH_DSO
)
endif
(
WITH_GPU
)
add_subdirectory
(
proto
)
add_subdirectory
(
proto
)
add_subdirectory
(
paddle
)
add_subdirectory
(
paddle
)
add_subdirectory
(
python
)
add_subdirectory
(
python
)
...
...
cmake/coveralls.cmake
浏览文件 @
b5576301
...
@@ -61,7 +61,7 @@ function(code_coverage _COVERAGE_SRCS _COVERALLS_UPLOAD _CMAKE_SCRIPT_PATH)
...
@@ -61,7 +61,7 @@ function(code_coverage _COVERAGE_SRCS _COVERALLS_UPLOAD _CMAKE_SCRIPT_PATH)
endif
()
endif
()
endfunction
()
endfunction
()
if
(
ON_COVERALLS
)
if
(
WITH_COVERAGE
)
set
(
CMAKE_BUILD_TYPE
"Debug"
)
set
(
CMAKE_BUILD_TYPE
"Debug"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-g -O0 -fprofile-arcs -ftest-coverage"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-g -O0 -fprofile-arcs -ftest-coverage"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-g -O0 -fprofile-arcs -ftest-coverage"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-g -O0 -fprofile-arcs -ftest-coverage"
)
...
...
cmake/external/protobuf.cmake
浏览文件 @
b5576301
...
@@ -14,7 +14,8 @@
...
@@ -14,7 +14,8 @@
INCLUDE
(
ExternalProject
)
INCLUDE
(
ExternalProject
)
FIND_PACKAGE
(
Protobuf 3.1
)
set
(
PROTOBUF_VERSION 3.1
)
FIND_PACKAGE
(
Protobuf
${
PROTOBUF_VERSION
}
)
IF
(
PROTOBUF_FOUND
)
IF
(
PROTOBUF_FOUND
)
EXEC_PROGRAM
(
${
PROTOBUF_PROTOC_EXECUTABLE
}
ARGS --version OUTPUT_VARIABLE PROTOBUF_VERSION
)
EXEC_PROGRAM
(
${
PROTOBUF_PROTOC_EXECUTABLE
}
ARGS --version OUTPUT_VARIABLE PROTOBUF_VERSION
)
...
...
cmake/util.cmake
浏览文件 @
b5576301
...
@@ -90,26 +90,6 @@ function(link_paddle_exe TARGET_NAME)
...
@@ -90,26 +90,6 @@ function(link_paddle_exe TARGET_NAME)
${
RDMA_LD_FLAGS
}
${
RDMA_LD_FLAGS
}
${
RDMA_LIBS
}
)
${
RDMA_LIBS
}
)
if
(
WITH_PYTHON
)
target_link_libraries
(
${
TARGET_NAME
}
${
PYTHON_LIBRARIES
}
util
)
endif
()
if
(
WITH_GPU
)
target_link_libraries
(
${
TARGET_NAME
}
${
CUDA_CUDART_LIBRARY
}
)
if
(
NOT WITH_DSO OR WITH_METRIC
)
target_link_libraries
(
${
TARGET_NAME
}
${
CUDNN_LIBRARY
}
${
CUDA_curand_LIBRARY
}
)
CUDA_ADD_CUBLAS_TO_TARGET
(
${
TARGET_NAME
}
)
endif
()
check_library_exists
(
rt clock_gettime
"time.h"
HAVE_CLOCK_GETTIME
)
if
(
HAVE_CLOCK_GETTIME
)
target_link_libraries
(
${
TARGET_NAME
}
rt
)
endif
()
endif
()
add_dependencies
(
${
TARGET_NAME
}
${
external_project_dependencies
}
)
add_dependencies
(
${
TARGET_NAME
}
${
external_project_dependencies
}
)
endfunction
()
endfunction
()
...
...
doc/getstarted/build_and_install/build_from_source_en.md
浏览文件 @
b5576301
...
@@ -51,7 +51,7 @@ PaddlePaddle supports some build options.
...
@@ -51,7 +51,7 @@ PaddlePaddle supports some build options.
<tr><td
class=
"left"
>
WITH_TIMER
</td><td
class=
"left"
>
Compile PaddlePaddle with stats timer
</td></tr>
<tr><td
class=
"left"
>
WITH_TIMER
</td><td
class=
"left"
>
Compile PaddlePaddle with stats timer
</td></tr>
<tr><td
class=
"left"
>
WITH_PROFILER
</td><td
class=
"left"
>
Compile PaddlePaddle with GPU profiler
</td></tr>
<tr><td
class=
"left"
>
WITH_PROFILER
</td><td
class=
"left"
>
Compile PaddlePaddle with GPU profiler
</td></tr>
<tr><td
class=
"left"
>
WITH_DOC
</td><td
class=
"left"
>
Compile PaddlePaddle with documentation
</td></tr>
<tr><td
class=
"left"
>
WITH_DOC
</td><td
class=
"left"
>
Compile PaddlePaddle with documentation
</td></tr>
<tr><td
class=
"left"
>
ON_COVERALLS
</td><td
class=
"left"
>
Compile PaddlePaddle with code coverage
</td></tr>
<tr><td
class=
"left"
>
WITH_COVERAGE
</td><td
class=
"left"
>
Compile PaddlePaddle with code coverage
</td></tr>
<tr><td
class=
"left"
>
COVERALLS_UPLOAD
</td><td
class=
"left"
>
Package code coverage data to coveralls
</td></tr>
<tr><td
class=
"left"
>
COVERALLS_UPLOAD
</td><td
class=
"left"
>
Package code coverage data to coveralls
</td></tr>
<tr><td
class=
"left"
>
ON_TRAVIS
</td><td
class=
"left"
>
Exclude special unit test on Travis CI
</td></tr>
<tr><td
class=
"left"
>
ON_TRAVIS
</td><td
class=
"left"
>
Exclude special unit test on Travis CI
</td></tr>
</tbody>
</tbody>
...
...
paddle/api/CMakeLists.txt
浏览文件 @
b5576301
FUNCTION
(
generate_python_api target_name
)
ADD_CUSTOM_COMMAND
(
OUTPUT
${
PROJ_ROOT
}
/paddle/py_paddle/swig_paddle.py
${
PROJ_ROOT
}
/paddle/Paddle_wrap.cxx
${
PROJ_ROOT
}
/paddle/Paddle_wrap.h
COMMAND
${
SWIG_EXECUTABLE
}
-python -c++ -outcurrentdir -I../ api/Paddle.swig
&& mv
${
PROJ_ROOT
}
/paddle/swig_paddle.py
${
PROJ_ROOT
}
/paddle/py_paddle/swig_paddle.py
DEPENDS
${
PROJ_ROOT
}
/paddle/api/Paddle.swig
${
PROJ_ROOT
}
/paddle/api/PaddleAPI.h
${
external_project_dependencies
}
WORKING_DIRECTORY
${
PROJ_ROOT
}
/paddle
COMMENT
"Generate Python API from swig"
)
ADD_CUSTOM_TARGET
(
${
target_name
}
ALL DEPENDS
${
PROJ_ROOT
}
/paddle/Paddle_wrap.cxx
${
PROJ_ROOT
}
/paddle/Paddle_wrap.h
${
PROJ_ROOT
}
/paddle/py_paddle/swig_paddle.py
${
external_project_dependencies
}
)
ENDFUNCTION
(
generate_python_api
)
set
(
API_SOURCES
set
(
API_SOURCES
Arguments.cpp
Arguments.cpp
ConfigParser.cpp
ConfigParser.cpp
...
@@ -33,65 +15,86 @@ set(API_HEADER
...
@@ -33,65 +15,86 @@ set(API_HEADER
PaddleAPI.h
PaddleAPI.h
Internal.h
)
Internal.h
)
add_library
(
paddle_api STATIC
add_library
(
paddle_api STATIC
${
API_SOURCES
}
)
${
API_SOURCES
}
)
add_dependencies
(
paddle_api gen_proto_cpp
)
add_dependencies
(
paddle_api gen_proto_cpp
)
list
(
LENGTH
"
${
GFLAGS_LIBRARIES
}
"
GFLAGS_LIBRARIES_LENGTH
)
INCLUDE
(
${
SWIG_USE_FILE
}
)
INCLUDE_DIRECTORIES
(
${
PROJ_ROOT
}
/paddle
)
if
(
${
GFLAGS_LIBRARIES_LENGTH
}
EQUAL 0 AND TARGET
"
${
GFLAGS_LIBRARIES
}
"
)
FILE
(
GLOB PY_PADDLE_PYTHON_FILES
${
PROJ_ROOT
}
/paddle/py_paddle/*.py
)
# Because gflags compiled by cmake, so it is imported by cmake target,
# not a real library path. Get the real library path here.
SET_SOURCE_FILES_PROPERTIES
(
Paddle.i PROPERTIES CPLUSPLUS ON
)
message
(
STATUS
"GFLAGS Libraries is
${
GFLAGS_LIBRARIES
}
"
)
get_target_property
(
GFLAGS_LOCATION
${
GFLAGS_LIBRARIES
}
LOCATION
)
SET
(
CMAKE_SWIG_OUTDIR
${
CMAKE_CURRENT_BINARY_DIR
}
)
message
(
STATUS
"GFLAGS Target location is
${
GFLAGS_LOCATION
}
"
)
SET
(
CMAKE_CXX_FLAGS
"-std=c++11 -fPIC -Wall
"
)
else
(
)
IF
(
WITH_COVERAGE
)
set
(
GFLAGS_LOCATION
${
GFLAGS_LIBRARIES
}
)
SET
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-g -O0 -fprofile-arcs -ftest-coverage"
)
endif
(
)
ENDIF
(
WITH_COVERAGE
)
configure_file
(
SET
(
SWIG_MODULE_swig_paddle_EXTRA_DEPS
paddle_api_config.py.in
paddle_parameter
${
PROJ_ROOT
}
/paddle/api/paddle_api_config.py
paddle_function
paddle_math
paddle_utils
paddle_gserver
paddle_pserver
paddle_api
paddle_cuda
paddle_trainer_lib
paddle_network
paddle_proto
${
external_project_dependencies
}
)
)
generate_python_api
(
python_swig_sources
)
IF
(
APPLE
)
SET
(
MACOS_LD_FLAGS
"-undefined dynamic_lookup -Wl,-all_load"
)
ELSE
(
APPLE
)
SET
(
START_GROUP
"-Xlinker -start-group"
)
SET
(
END_GROUP
"-Xlinker -end-group"
)
SET
(
ARCHIVE_START
"-Wl,--whole-archive"
)
SET
(
ARCHIVE_END
"-Wl,--no-whole-archive"
)
ENDIF
(
APPLE
)
file
(
GLOB PY_PADDLE_PYTHON_FILES
${
PROJ_ROOT
}
/paddle/py_paddle/*.py
)
SWIG_ADD_MODULE
(
swig_paddle python Paddle.i
)
SWIG_LINK_LIBRARIES
(
swig_paddle
${
MACOS_LD_FLAGS
}
${
START_GROUP
}
${
ARCHIVE_START
}
paddle_gserver
paddle_function
${
METRIC_LIBS
}
${
ARCHIVE_END
}
paddle_pserver
paddle_trainer_lib
paddle_network
paddle_parameter
paddle_math
paddle_utils
paddle_proto
paddle_cuda
paddle_api
${
CMAKE_DL_LIBS
}
${
EXTERNAL_LIBS
}
${
CMAKE_THREAD_LIBS_INIT
}
${
RDMA_LD_FLAGS
}
${
RDMA_LIBS
}
${
START_END
}
)
# TODO(yuyang18) : make wheel name calculated by cmake
add_custom_command
(
OUTPUT
${
PROJ_ROOT
}
/paddle/py_paddle/_swig_paddle.so
add_custom_command
(
OUTPUT
${
PROJ_ROOT
}
/paddle/dist/.timestamp
COMMAND cp
${
CMAKE_CURRENT_BINARY_DIR
}
/swig_paddle.py
${
PROJ_ROOT
}
/paddle/py_paddle
COMMAND cp
${
CMAKE_CURRENT_BINARY_DIR
}
/_swig_paddle.so
${
PROJ_ROOT
}
/paddle/py_paddle
COMMAND env
${
py_env
}
${
PYTHON_EXECUTABLE
}
setup.py bdist_wheel
COMMAND env
${
py_env
}
${
PYTHON_EXECUTABLE
}
setup.py bdist_wheel
COMMAND
${
CMAKE_COMMAND
}
-E touch dist/.timestamp
COMMAND
${
CMAKE_COMMAND
}
-E touch dist/.timestamp
COMMAND rm -rf py_paddle.egg-info build
COMMAND rm -rf py_paddle.egg-info build
WORKING_DIRECTORY
${
PROJ_ROOT
}
/paddle
WORKING_DIRECTORY
${
PROJ_ROOT
}
/paddle
DEPENDS python_swig_sources
DEPENDS _swig_paddle
paddle_parameter
paddle_function
paddle_math
paddle_utils
paddle_gserver
paddle_pserver
paddle_trainer
paddle_api
paddle_cuda
${
PY_PADDLE_PYTHON_FILES
}
)
)
install
(
DIRECTORY
${
PROJ_ROOT
}
/paddle/dist/
# TODO(yuyang18) : make wheel name calculated by cmake
DESTINATION opt/paddle/share/wheels
add_custom_target
(
python_api_wheel ALL DEPENDS
${
PROJ_ROOT
}
/paddle/py_paddle/_swig_paddle.so
)
)
add_custom_target
(
python_api_wheel ALL DEPENDS
install
(
DIRECTORY
${
PROJ_ROOT
}
/paddle/dist/ DESTINATION opt/paddle/share/wheels
)
${
PROJ_ROOT
}
/paddle/dist/.timestamp
)
add_dependencies
(
python_api_wheel python_swig_sources
paddle_parameter
paddle_math
paddle_utils
paddle_gserver
paddle_pserver
paddle_trainer
paddle_api
paddle_cuda
)
if
(
WITH_TESTING
)
if
(
WITH_TESTING
)
IF
(
NOT PY_PIP_FOUND
)
IF
(
NOT PY_PIP_FOUND
)
...
...
paddle/api/Paddle.
swig
→
paddle/api/Paddle.
i
浏览文件 @
b5576301
文件已移动
paddle/api/paddle_api_config.py.in
已删除
100644 → 0
浏览文件 @
c1feccdc
PADDLE_BUILD_DIR="@CMAKE_CURRENT_BINARY_DIR@/../"
WITH_GPU="@WITH_GPU@"
PROTOBUF_LIBRARY="@PROTOBUF_LIBRARY@"
ZLIB_LIBRARIES="@ZLIB_LIBRARIES@"
CMAKE_THREAD_LIB="@CMAKE_THREAD_LIBS_INIT@"
CMAKE_DL_LIBS="@CMAKE_DL_LIBS@"
WITH_PYTHON="@WITH_PYTHON@"
PYTHON_LIBRARIES="@PYTHON_LIBRARIES@"
GLOG_LIBRARIES="@GLOG_LIBRARIES@"
GFLAGS_LIBRARIES="@GFLAGS_LIBRARIES@"
GFLAGS_LOCATION="@GFLAGS_LOCATION@"
CBLAS_LIBRARIES="@CBLAS_LIBRARIES@"
CUDA_LIBRARIES="@CUDA_CUDART_LIBRARY@"
WITH_COVERALLS="@ON_COVERALLS@"
paddle/api/paddle_ld_flags.py
已删除
100644 → 0
浏览文件 @
c1feccdc
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved
#
# 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.
try
:
from
paddle_api_config
import
*
import
os.path
import
platform
system
=
platform
.
system
().
lower
()
is_osx
=
(
system
==
'darwin'
)
is_win
=
(
system
==
'windows'
)
is_lin
=
(
system
==
'linux'
)
if
is_lin
:
whole_start
=
"-Wl,--whole-archive"
whole_end
=
"-Wl,--no-whole-archive"
elif
is_osx
:
whole_start
=
""
whole_end
=
""
LIB_DIRS
=
[
"math"
,
'function'
,
'utils'
,
'parameter'
,
"gserver"
,
"api"
,
"cuda"
,
"pserver"
,
"trainer"
]
PARENT_LIB_DIRS
=
[
'proto'
]
class
PaddleLDFlag
(
object
):
def
__init__
(
self
):
self
.
paddle_build_dir
=
PADDLE_BUILD_DIR
self
.
paddle_build_dir
=
os
.
path
.
abspath
(
self
.
paddle_build_dir
)
self
.
with_gpu
=
PaddleLDFlag
.
cmake_bool
(
WITH_GPU
)
self
.
protolib
=
PROTOBUF_LIBRARY
self
.
zlib
=
ZLIB_LIBRARIES
self
.
thread
=
CMAKE_THREAD_LIB
self
.
dl_libs
=
CMAKE_DL_LIBS
self
.
with_python
=
PaddleLDFlag
.
cmake_bool
(
WITH_PYTHON
)
self
.
python_libs
=
PYTHON_LIBRARIES
self
.
glog_libs
=
GLOG_LIBRARIES
self
.
with_coverage
=
PaddleLDFlag
.
cmake_bool
(
WITH_COVERALLS
)
self
.
gflags_libs
=
GFLAGS_LIBRARIES
self
.
gflags_location
=
GFLAGS_LOCATION
self
.
cblas_libs
=
CBLAS_LIBRARIES
self
.
curt
=
CUDA_LIBRARIES
def
ldflag_str
(
self
):
return
" "
.
join
(
[
self
.
libs_dir_str
(),
self
.
parent_dir_str
(),
self
.
libs_str
()])
def
libs_dir_str
(
self
):
libdirs
=
LIB_DIRS
return
" "
.
join
(
map
(
lambda
x
:
"-L"
+
os
.
path
.
join
(
self
.
paddle_build_dir
,
x
),
libdirs
))
def
parent_dir_str
(
self
):
libdirs
=
PARENT_LIB_DIRS
return
" "
.
join
(
map
(
lambda
x
:
"-L"
+
os
.
path
.
join
(
self
.
paddle_build_dir
,
'..'
,
x
),
libdirs
))
def
libs_str
(
self
):
libs
=
[
whole_start
,
"-lpaddle_gserver"
,
"-lpaddle_function"
,
whole_end
,
"-lpaddle_pserver"
,
"-lpaddle_trainer_lib"
,
"-lpaddle_network"
,
'-lpaddle_parameter'
,
"-lpaddle_math"
,
'-lpaddle_utils'
,
"-lpaddle_proto"
,
"-lpaddle_cuda"
,
"-lpaddle_api"
,
self
.
normalize_flag
(
self
.
protolib
),
self
.
normalize_flag
(
self
.
glog_libs
),
self
.
normalize_flag
(
self
.
gflags_libs
),
self
.
normalize_flag
(
self
.
zlib
),
self
.
normalize_flag
(
self
.
thread
),
self
.
normalize_flag
(
self
.
dl_libs
),
self
.
normalize_flag
(
self
.
cblas_libs
),
]
if
self
.
with_python
:
libs
.
append
(
self
.
normalize_flag
(
self
.
python_libs
))
if
self
.
with_gpu
:
libs
.
append
(
self
.
normalize_flag
(
self
.
curt
))
if
self
.
with_coverage
:
libs
.
append
(
"-fprofile-arcs"
)
return
" "
.
join
(
filter
(
lambda
l
:
len
(
l
)
!=
0
,
libs
))
def
normalize_flag
(
self
,
cmake_flag
):
"""
CMake flag string to ld flag
:type cmake_flag: str
"""
if
";"
in
cmake_flag
:
return
" "
.
join
(
map
(
self
.
normalize_flag
,
cmake_flag
.
split
(
";"
)))
if
cmake_flag
.
startswith
(
"/"
):
# is a path
return
cmake_flag
elif
cmake_flag
.
startswith
(
"-l"
):
# normal link command
return
cmake_flag
elif
cmake_flag
in
[
"gflags-shared"
,
"gflags-static"
,
"gflags_nothreads-shared"
,
"gflags_nothreads-static"
]:
# special for gflags
assert
PaddleLDFlag
.
cmake_bool
(
self
.
gflags_location
)
return
self
.
gflags_location
elif
len
(
cmake_flag
)
!=
0
:
return
""
.
join
([
"-l"
,
cmake_flag
])
else
:
return
""
@
staticmethod
def
cmake_bool
(
cmake_str
):
"""
CMake bool string to bool
:param cmake_str: cmake boolean string
:type cmake_str: str
:rtype: bool
"""
if
cmake_str
in
[
"FALSE"
,
"OFF"
,
"NO"
]
or
cmake_str
.
endswith
(
"-NOTFOUND"
):
return
False
else
:
return
True
def
c_flag
(
self
):
if
self
.
with_coverage
:
return
[
"-fprofile-arcs"
,
"-ftest-coverage"
,
"-O0"
,
"-g"
,
"-std=c++11"
]
else
:
return
[
"-std=c++11"
]
except
ImportError
:
class
PaddleLDFlag
(
object
):
def
ldflag_str
(
self
):
pass
def
c_flag
(
self
):
pass
paddle/py_paddle/.gitignore
浏览文件 @
b5576301
swig_paddle.py
swig_paddle.py
_swig_paddle.so
paddle/scripts/docker/build.sh
浏览文件 @
b5576301
...
@@ -33,7 +33,7 @@ cmake .. \
...
@@ -33,7 +33,7 @@ cmake .. \
-DWITH_SWIG_PY
=
ON
\
-DWITH_SWIG_PY
=
ON
\
-DCUDNN_ROOT
=
/usr/
\
-DCUDNN_ROOT
=
/usr/
\
-DWITH_STYLE_CHECK
=
${
WITH_STYLE_CHECK
:-
OFF
}
\
-DWITH_STYLE_CHECK
=
${
WITH_STYLE_CHECK
:-
OFF
}
\
-D
ON_COVERALLS
=
${
TEST
:-
OFF
}
\
-D
WITH_COVERAGE
=
${
TEST
:-
OFF
}
\
-DCMAKE_EXPORT_COMPILE_COMMANDS
=
ON
-DCMAKE_EXPORT_COMPILE_COMMANDS
=
ON
make
-j
`
nproc
`
make
-j
`
nproc
`
if
[[
${
TEST
:-
OFF
}
==
"ON"
]]
;
then
if
[[
${
TEST
:-
OFF
}
==
"ON"
]]
;
then
...
...
paddle/scripts/travis/build_and_test.sh
浏览文件 @
b5576301
...
@@ -5,7 +5,7 @@ NPROC=1
...
@@ -5,7 +5,7 @@ NPROC=1
export
PYTHONPATH
=
/opt/python/2.7.12/lib/python2.7/site-packages
export
PYTHONPATH
=
/opt/python/2.7.12/lib/python2.7/site-packages
export
PYTHONHOME
=
/opt/python/2.7.12
export
PYTHONHOME
=
/opt/python/2.7.12
export
PATH
=
/opt/python/2.7.12/bin:
${
PATH
}
export
PATH
=
/opt/python/2.7.12/bin:
${
PATH
}
cmake ..
-DCMAKE_Fortran_COMPILER
=
/usr/bin/gfortran-4.8
-DON_TRAVIS
=
ON
-D
ON_COVERALLS
=
ON
-DCOVERALLS_UPLOAD
=
ON
${
EXTRA_CMAKE_OPTS
}
cmake ..
-DCMAKE_Fortran_COMPILER
=
/usr/bin/gfortran-4.8
-DON_TRAVIS
=
ON
-D
WITH_COVERAGE
=
ON
-DCOVERALLS_UPLOAD
=
ON
${
EXTRA_CMAKE_OPTS
}
NRPOC
=
`
nproc
`
NRPOC
=
`
nproc
`
make
-j
$NPROC
make
-j
$NPROC
make coveralls
make coveralls
...
...
paddle/setup.py.in
浏览文件 @
b5576301
...
@@ -12,68 +12,19 @@
...
@@ -12,68 +12,19 @@
# See the License for the specific language governing permissions and
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License.
# This file is used to build paddle python binding package.
# It will be invoked by Makefile that generated by COMAKE
from setuptools import setup, Extension
from setuptools import setup, Extension
import numpy as np
import api.paddle_ld_flags
import platform
import os
system = platform.system().lower()
is_osx = (system == 'darwin')
is_win = (system == 'windows')
is_lin = (system == 'linux')
# The extra links will passed from COMAKE
# because generate paddle LDFLAGS is too complicated to do in setup.py
# it just read COMAKE generated LDFLAGS.
extra_comps = []
extra_links = []
obj = api.paddle_ld_flags.PaddleLDFlag()
extra_comps = obj.c_flag()
ldflags = obj.ldflag_str()
if ldflags is not None:
extra_links.extend(ldflags.split(" "))
try:
with open('.py_paddle_extra_link_flags', 'r') as f:
for line in f:
extra_links += line.split()
except:
pass
if is_lin == True:
extra_links = ["-Xlinker", '-start-group'] + extra_links + ["-Xlinker", "-end-group"]
elif is_osx == True:
os.environ["ARCHFLAGS"] = "-arch x86_64"
extra_links = ["-Wl,-all_load"] + extra_links
include_dirs = [np.get_include(), "../"] # include numpy and paddle.
os.environ["CC"] = "@CMAKE_C_COMPILER@"
os.environ["CXX"] = "@CMAKE_CXX_COMPILER@"
setup(name="py_paddle",
setup(name="py_paddle",
version="@PADDLE_VERSION@",
version="${PADDLE_VERSION}",
ext_modules=[
packages=['py_paddle'],
Extension('py_paddle._swig_paddle', # Build SWIG Extension.
include_package_data=True,
['Paddle_wrap.cxx'],
package_data={'py_paddle':['*.py','_swig_paddle.so']},
language = "c++",
install_requires = [
include_dirs = include_dirs,
'nltk>=3.2.2',
extra_link_args = extra_links,
'numpy>=1.8.0', # The numpy is required.
extra_compile_args = extra_comps
'protobuf>=${PROTOBUF_VERSION}' # The paddle protobuf version
)
],
],
url='http://www.paddlepaddle.org/',
packages=['py_paddle'],
license='Apache 2.0',
include_dirs = include_dirs,
install_requires = [
'nltk>=3.2.2',
'numpy>=1.8.0', # The numpy is required.
'protobuf>=3.0.0' # The paddle protobuf version
],
)
)
paddle/utils/PythonUtil.cpp.in
浏览文件 @
b5576301
...
@@ -195,9 +195,14 @@ extern const char enable_virtualenv_py[];
...
@@ -195,9 +195,14 @@ extern const char enable_virtualenv_py[];
}
}
void initPython(int argc, char** argv) {
void initPython(int argc, char** argv) {
#ifndef PADDLE_NO_PYTHON
#ifndef PADDLE_NO_PYTHON
char pyHome[] = "@PYTHON_INSTALL_DIR@"; // NOLINT
std::string pyHome;
if (strlen(pyHome)) {
#if defined(__APPLE__) || defined(__OSX__)
Py_SetPythonHome(pyHome);
pyHome = "/usr/local/Frameworks/Python.framework/Versions/2.7";
Py_SetPythonHome(const_cast<char*>(pyHome.c_str()));
#endif
pyHome = "@PYTHON_INSTALL_DIR@"; // NOLINT
if (!pyHome.empty()) {
Py_SetPythonHome(const_cast<char*>(pyHome.c_str()));
}
}
Py_SetProgramName(argv[0]);
Py_SetProgramName(argv[0]);
Py_Initialize();
Py_Initialize();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录