Skip to content

Commit 9386ac0

Browse files
author
Yibing Liu
committed
Enhance cuda code & unittest for argsort_op
2 parents 9c69fdf + c318aa5 commit 9386ac0

File tree

210 files changed

+6433
-1614
lines changed

Some content is hidden

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

210 files changed

+6433
-1614
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
[![Build Status](https://travis-ci.org/PaddlePaddle/Paddle.svg?branch=develop)](https://travis-ci.org/PaddlePaddle/Paddle)
55
[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](http://www.paddlepaddle.org/docs/develop/documentation/en/getstarted/index_en.html)
66
[![Documentation Status](https://img.shields.io/badge/中文文档-最新-brightgreen.svg)](http://www.paddlepaddle.org/docs/develop/documentation/zh/getstarted/index_cn.html)
7-
[![Coverage Status](https://coveralls.io/repos/github/PaddlePaddle/Paddle/badge.svg?branch=develop)](https://coveralls.io/github/PaddlePaddle/Paddle?branch=develop)
87
[![Release](https://img.shields.io/github/release/PaddlePaddle/Paddle.svg)](https://github.com/PaddlePaddle/Paddle/releases)
98
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
109

benchmark/fluid/args.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,9 @@ def parse_args():
122122
type=str,
123123
default="",
124124
help='Directory that contains all the training recordio files.')
125+
parser.add_argument(
126+
'--use_inference_transpiler',
127+
action='store_true',
128+
help='If set, uses inference transpiler to optimize the program.')
125129
args = parser.parse_args()
126130
return args

benchmark/fluid/fluid_benchmark.py

100644100755
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ def train(avg_loss, infer_prog, optimizer, train_reader, test_reader, batch_acc,
131131
exe = fluid.Executor(place)
132132
exe.run(startup_prog)
133133

134+
# Use inference_transpiler to speedup
135+
if args.use_inference_transpiler:
136+
t = fluid.InferenceTranspiler()
137+
t.transpile(infer_prog, place)
138+
134139
if not args.use_reader_op:
135140
feed_var_list = [
136141
var for var in train_prog.global_block().vars.itervalues()

cmake/external/anakin.cmake

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@ function(fetch_include_recursively root_dir)
2626
endforeach()
2727
endfunction()
2828

29-
# download library
30-
message(STATUS "Download Anakin library from ${ANAKIN_LIBRARY_URL}")
31-
execute_process(COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR}")
32-
execute_process(COMMAND bash -c "rm -rf ${ANAKIN_INSTALL_DIR}/*")
33-
execute_process(COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR}; wget -q ${ANAKIN_LIBRARY_URL}")
34-
execute_process(COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR}")
35-
execute_process(COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR}; tar xzf anakin_release_simple.tar.gz")
29+
if (NOT EXISTS "${ANAKIN_INSTALL_DIR}")
30+
# download library
31+
message(STATUS "Download Anakin library from ${ANAKIN_LIBRARY_URL}")
32+
execute_process(COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR}")
33+
execute_process(COMMAND bash -c "rm -rf ${ANAKIN_INSTALL_DIR}/*")
34+
execute_process(COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR}; wget -q ${ANAKIN_LIBRARY_URL}")
35+
execute_process(COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR}")
36+
execute_process(COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR}; tar xzf anakin_release_simple.tar.gz")
37+
endif()
3638

3739
if (WITH_ANAKIN)
3840
message(STATUS "Anakin for inference is enabled")

cmake/external/grpc.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ ExternalProject_Add(
4040
# NOTE(wuyi):
4141
# this package is generated by following steps:
4242
# 1. git clone -b v1.8.x https://github.com/grpc/grpc.git
43-
# 2. submodule update --init
43+
# 2. git submodule update --init
4444
# 3. keep only zlib, cares, protobuf, boringssl under "third_party",
4545
# checkout and clean other dirs under third_party
4646
# 4. remove .git, and package the directory.
47-
URL "http://paddlepaddledeps.bj.bcebos.com/grpc-v1.8.x.tar.gz"
48-
URL_MD5 "c9c58ee7d0e8929a63155af6a2ecdbd0"
47+
URL "http://paddlepaddledeps.bj.bcebos.com/grpc-v1.10.x.tar.gz"
48+
URL_MD5 "1f268a2aff6759839dccd256adcc91cf"
4949
PREFIX ${GRPC_SOURCES_DIR}
5050
UPDATE_COMMAND ""
5151
CONFIGURE_COMMAND ""

cmake/external/openblas.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,12 @@ INCLUDE_DIRECTORIES(${CBLAS_INC_DIR})
114114
SET(dummyfile ${CMAKE_CURRENT_BINARY_DIR}/cblas_dummy.c)
115115
FILE(WRITE ${dummyfile} "const char *dummy_cblas = \"${dummyfile}\";")
116116
ADD_LIBRARY(cblas STATIC ${dummyfile})
117-
TARGET_LINK_LIBRARIES(cblas ${CBLAS_LIBRARIES})
117+
118+
IF("${CBLAS_PROVIDER}" STREQUAL "MKLML")
119+
TARGET_LINK_LIBRARIES(cblas dynload_mklml)
120+
ELSE()
121+
TARGET_LINK_LIBRARIES(cblas ${CBLAS_LIBRARIES})
122+
ENDIF("${CBLAS_PROVIDER}" STREQUAL "MKLML")
118123

119124
IF(NOT ${CBLAS_FOUND})
120125
ADD_DEPENDENCIES(cblas extern_openblas)

cmake/generic.cmake

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,20 @@ if(NOT APPLE AND NOT ANDROID)
9696
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -pthread -ldl -lrt")
9797
endif(NOT APPLE AND NOT ANDROID)
9898

99+
set_property(GLOBAL PROPERTY FLUID_MODULES "")
100+
# find all fluid modules is used for paddle fluid static library
101+
# for building inference libs
102+
function(find_fluid_modules TARGET_NAME)
103+
get_filename_component(__target_path ${TARGET_NAME} ABSOLUTE)
104+
string(REGEX REPLACE "^${PADDLE_SOURCE_DIR}/" "" __target_path ${__target_path})
105+
string(FIND "${__target_path}" "fluid" pos)
106+
if(pos GREATER 1)
107+
get_property(fluid_modules GLOBAL PROPERTY FLUID_MODULES)
108+
set(fluid_modules ${fluid_modules} ${TARGET_NAME})
109+
set_property(GLOBAL PROPERTY FLUID_MODULES "${fluid_modules}")
110+
endif()
111+
endfunction(find_fluid_modules)
112+
99113
function(merge_static_libs TARGET_NAME)
100114
set(libs ${ARGN})
101115
list(REMOVE_DUPLICATES libs)
@@ -195,6 +209,15 @@ function(cc_library TARGET_NAME)
195209
list(REMOVE_ITEM cc_library_DEPS warpctc)
196210
add_dependencies(${TARGET_NAME} warpctc)
197211
endif()
212+
# Only deps libmklml.so, not link
213+
if("${cc_library_DEPS};" MATCHES "mklml;")
214+
list(REMOVE_ITEM cc_library_DEPS mklml)
215+
if(NOT "${TARGET_NAME}" MATCHES "dynload_mklml")
216+
list(APPEND cc_library_DEPS dynload_mklml)
217+
endif()
218+
add_dependencies(${TARGET_NAME} mklml)
219+
target_link_libraries(${TARGET_NAME} "-L${MKLML_LIB_DIR} -liomp5 -Wl,--as-needed")
220+
endif()
198221
target_link_libraries(${TARGET_NAME} ${cc_library_DEPS})
199222
add_dependencies(${TARGET_NAME} ${cc_library_DEPS})
200223
endif()
@@ -241,6 +264,7 @@ function(cc_test TARGET_NAME)
241264
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
242265
if (${cc_test_SERIAL})
243266
set_property(TEST ${TARGET_NAME} PROPERTY SERIAL 1)
267+
set_property(TEST ${TARGET_NAME} PROPERTY ENVIRONMENT FLAGS_init_allocated_mem=true)
244268
endif()
245269
endif()
246270
endfunction(cc_test)
@@ -305,6 +329,7 @@ function(nv_test TARGET_NAME)
305329
add_test(${TARGET_NAME} ${TARGET_NAME})
306330
if (nv_test_SERIAL)
307331
set_property(TEST ${TARGET_NAME} PROPERTY SERIAL 1)
332+
set_property(TEST ${TARGET_NAME} PROPERTY ENVIRONMENT FLAGS_init_allocated_mem=true)
308333
endif()
309334
endif()
310335
endfunction(nv_test)
@@ -552,7 +577,7 @@ function(py_test TARGET_NAME)
552577
set(multiValueArgs SRCS DEPS ARGS ENVS)
553578
cmake_parse_arguments(py_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
554579
add_test(NAME ${TARGET_NAME}
555-
COMMAND env PYTHONPATH=${PADDLE_BINARY_DIR}/python ${py_test_ENVS}
580+
COMMAND env FLAGS_init_allocated_mem=true PYTHONPATH=${PADDLE_BINARY_DIR}/python ${py_test_ENVS}
556581
${PYTHON_EXECUTABLE} -u ${py_test_SRCS} ${py_test_ARGS}
557582
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
558583
endif()

cmake/inference_lib.cmake

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,6 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
set_property(GLOBAL PROPERTY FLUID_MODULES "")
16-
# find all fluid modules is used for paddle fluid static library
17-
function(find_fluid_modules TARGET_NAME)
18-
get_filename_component(__target_path ${TARGET_NAME} ABSOLUTE)
19-
string(REGEX REPLACE "^${PADDLE_SOURCE_DIR}/" "" __target_path ${__target_path})
20-
string(FIND "${__target_path}" "fluid" pos)
21-
if(pos GREATER 1)
22-
get_property(fluid_modules GLOBAL PROPERTY FLUID_MODULES)
23-
set(fluid_modules ${fluid_modules} ${TARGET_NAME})
24-
set_property(GLOBAL PROPERTY FLUID_MODULES "${fluid_modules}")
25-
endif()
26-
endfunction(find_fluid_modules)
27-
2815
# make package for paddle fluid shared and static library
2916
function(copy TARGET)
3017
set(options "")
@@ -149,21 +136,33 @@ copy(memory_lib
149136
DSTS ${dst_dir}/${module} ${dst_dir}/${module}/detail
150137
)
151138

152-
set(module "inference")
153-
copy(inference_lib DEPS paddle_fluid_shared paddle_fluid
154-
SRCS ${src_dir}/${module}/*.h ${PADDLE_BINARY_DIR}/paddle/fluid/inference/libpaddle_fluid.*
155-
DSTS ${dst_dir}/${module} ${dst_dir}/${module}
156-
)
139+
set(inference_deps paddle_fluid_shared paddle_fluid)
157140

158141
if(WITH_CONTRIB)
159-
set(contrib_dst_dir "${FLUID_INSTALL_DIR}/contrib/inference")
160-
copy(contrib_inference_lib DEPS paddle_inference_api
142+
message(STATUS "installing contrib")
143+
set(contrib_dst_dir "${FLUID_INSTALL_DIR}/contrib/inference")
144+
if (WITH_ANAKIN)
145+
copy(contrib_anakin_inference_lib DEPS paddle_inference_api inference_anakin_api
146+
SRCS
147+
${PADDLE_BINARY_DIR}/paddle/contrib/inference/libinference_anakin_api* # compiled anakin api
148+
${PADDLE_BINARY_DIR}/third_party/install/anakin/*.tar.gz # anakin release
149+
DSTS ${contrib_dst_dir}/anakin ${contrib_dst_dir}/anakin)
150+
list(APPEND inference_deps contrib_anakin_inference_lib)
151+
endif()
152+
153+
copy(contrib_inference_lib DEPS paddle_inference_api paddle_inference_api_shared
161154
SRCS ${PADDLE_SOURCE_DIR}/paddle/contrib/inference/paddle_inference_api.h
162-
${PADDLE_BINARY_DIR}/paddle/contrib/inference/libpaddle_inference_api.*
163-
DSTS ${contrib_dst_dir} ${contrib_dst_dir}
164-
)
155+
${PADDLE_BINARY_DIR}/paddle/contrib/inference/libpaddle_inference_api*
156+
DSTS ${contrib_dst_dir} ${contrib_dst_dir})
157+
list(APPEND inference_deps contrib_inference_lib)
165158
endif()
166159

160+
set(module "inference")
161+
copy(inference_lib DEPS ${inference_deps}
162+
SRCS ${src_dir}/${module}/*.h ${PADDLE_BINARY_DIR}/paddle/fluid/inference/libpaddle_fluid.*
163+
DSTS ${dst_dir}/${module} ${dst_dir}/${module}
164+
)
165+
167166
set(module "platform")
168167
copy(platform_lib DEPS profiler_py_proto
169168
SRCS ${src_dir}/${module}/*.h ${src_dir}/${module}/dynload/*.h ${src_dir}/${module}/details/*.h

doc/about/about_us.rst

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
=========
2+
关于我们
3+
=========
4+
5+
什么是PaddlePaddle
6+
--------------------
7+
8+
- PaddlePaddle是百度自主研发并开源的深度学习框架,它能够让开发者和企业安全、快速地实现自己的AI想法
9+
10+
- 项目团队汇聚了全球顶级的深度学习科学家,致力于为开发者和企业提供最好的深度学习研发体验
11+
12+
- 框架具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具
13+
14+
PaddlePaddle的技术特色
15+
-------------------------
16+
17+
- 新一代深度学习框架: PaddlePaddle是基于“深度学习编程语言”的新一代深度学习框架,在保证性能的同时,极大的提升了框架对模型的表达能力,能够描述任意潜在可能出现的模型
18+
19+
- 对大规模计算更加友好:经过百度内多种大规模计算业务的打磨,PaddlePaddle在分布式计算上表现优异,基于EDL技术能够节约大量计算资源,同时也能支持大规模稀疏模型的训练
20+
21+
- 提供可视化的深度学习:通过Visual DL可以帮助开发者方便的观测训练整体趋势、数据样本质量和中间结果、参数分布和变化趋势、以及模型的结构,帮助开发者更便捷的完成编程过程
22+
23+
提供基于PaddlePaddle的教育体系
24+
--------------------------------
25+
26+
- 深度学习课程:百度与中国市场顶级的教育、培训机构共同开发了深度学习精品课程以及学习教材,帮助开发者从零掌握深度学习
27+
28+
- 深度学习实训:对于目的是科研和学习的用户,PaddlePaddle提供了无需安装、线上运行的开发环境,并提供算法、算力、数据支持
29+
30+
- 线下培训:提供丰富、高质量的线下教育活动,如青年教师培训、线下实战营、沙龙等多种形式的培训和交流
31+
32+
33+
提供基于PaddlePaddle的AI服务
34+
------------------------------
35+
36+
- EadyDL:可以帮助零算法基础的企业快速完成一个深度学习任务,只需少量的数据即可得到优质的模型
37+
38+
- AI市场:提供标准化的AI 能力、产品的交易机制,帮助企业快速找到所需,有效开展AI业务
39+
40+
- 深度学习竞赛: PaddlePaddle汇聚顶尖深度学习开发者,企业可以发布自己的商业问题,通过竞赛方式快速找到最优的解决方案
41+
42+
你对PaddlePaddle有任何的问题都可以通过以下方式联系到我们
43+
-----------------------------------------------------------
44+
45+
- 学习/使用问题:可以在 `PaddlePaddle开源社区 <https://github.com/PaddlePaddle/Paddle/issues>`_,以及 `PaddlePaddle中文社区 <http://ai.baidu.com/forum/topic/list/168>`_ 向我们反馈
46+
47+
- 对PaddlePaddle框架发展的建议:可发送邮件至[email protected]
48+
49+
我们期待与你一起打造世界顶级深度学习框架,共同推动AI技术的进步
50+
51+
52+
53+
PaddlePaddle团队

doc/fluid/api/average.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
.. THIS FILE IS GENERATED BY `gen_doc.{py|sh}`
2+
!DO NOT EDIT THIS FILE MANUALLY!
3+
4+
=============
5+
fluid.average
6+
=============
7+
8+
.. _api_fluid_average_WeightedAverage:
9+
10+
WeightedAverage
11+
---------------
12+
13+
.. autoclass:: paddle.fluid.average.WeightedAverage
14+
:members:
15+
:noindex:
16+

0 commit comments

Comments
 (0)