Skip to content

Commit 9580c45

Browse files
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into add_bn_eq
2 parents 27d7b2c + c808fbb commit 9580c45

19 files changed

+63
-44
lines changed

cmake/cross_compiling/ios.cmake

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,9 @@ set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
7676
# Set the architecture for iOS
7777
if(NOT DEFINED IOS_ARCH)
7878
if(IOS_PLATFORM STREQUAL "OS")
79-
# FIXME(liuyiqun): support "armv7;armv7s;arm64" future
80-
set(IOS_ARCH "arm64")
79+
set(IOS_ARCH "armv7;armv7s;arm64")
8180
elseif(IOS_PLATFORM STREQUAL "SIMULATOR")
82-
# FIXME(liuyiqun): support "i386;x86_64" future
83-
set(IOS_ARCH "x86_64")
81+
set(IOS_ARCH "i386;x86_64")
8482
endif()
8583
endif()
8684
set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE string "Build architecture for iOS")
@@ -248,7 +246,7 @@ set(IOS_COMPILER_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${XCODE_IOS_BITCODE_
248246

249247
# Hidden visibilty is required for cxx on iOS
250248
set(CMAKE_C_FLAGS "${IOS_COMPILER_FLAGS} ${CMAKE_C_FLAGS}" CACHE STRING "C flags")
251-
set(CMAKE_CXX_FLAGS "${IOS_COMPILER_FLAGS} -fvisibility-inlines-hidden ${CMAKE_CXX_FLAGS}" CACHE STRING "CXX flags")
249+
set(CMAKE_CXX_FLAGS "${IOS_COMPILER_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden ${CMAKE_CXX_FLAGS}" CACHE STRING "CXX flags")
252250

253251
set(IOS_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first")
254252

cmake/external/openblas.cmake

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,14 @@ IF(NOT ${CBLAS_FOUND})
4545
SET(OPTIONAL_ARGS ${OPTIONAL_ARGS} TARGET=ARMV8 BINARY=64 USE_THREAD=0)
4646
ENDIF()
4747
ELSEIF(IOS)
48-
# FIXME(liuyiqun): support multiple architectures
49-
SET(OPENBLAS_COMMIT "b5c96fcfcdc82945502a2303116a64d89985daf5")
50-
SET(OPENBLAS_CC "${OPENBLAS_CC} ${CMAKE_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
51-
IF(CMAKE_OSX_ARCHITECTURES MATCHES "armv7")
52-
SET(OPENBLAS_CC "${OPENBLAS_CC} -arch armv7")
53-
SET(OPTIONAL_ARGS ${OPTIONAL_ARGS} TARGET=ARMV7 ARM_SOFTFP_ABI=1 USE_THREAD=0)
54-
ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
48+
IF(CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
49+
SET(OPENBLAS_COMMIT "b5c96fcfcdc82945502a2303116a64d89985daf5")
50+
SET(OPENBLAS_CC "${OPENBLAS_CC} ${CMAKE_C_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
5551
SET(OPENBLAS_CC "${OPENBLAS_CC} -arch arm64")
5652
SET(OPTIONAL_ARGS ${OPTIONAL_ARGS} TARGET=ARMV8 BINARY=64 USE_THREAD=0 CROSS_SUFFIX=${CROSS_SUFFIX})
53+
ELSE()
54+
MESSAGE(FATAL_ERROR "OpenBLAS only support arm64 architectures on iOS. "
55+
"You can set IOS_USE_VECLIB_FOR_BLAS=ON or USE_EIGEN_FOR_BLAS=ON to use other blas library instead.")
5756
ENDIF()
5857
ELSEIF(RPI)
5958
# use hardfp

cmake/external/warpctc.cmake

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

15+
IF(MOBILE_INFERENCE)
16+
return()
17+
ENDIF()
18+
1519
INCLUDE(ExternalProject)
1620

1721
SET(WARPCTC_SOURCES_DIR ${THIRD_PARTY_PATH}/warpctc)

doc/mobile/cross_compiling_for_android_cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 构建Android平台上的PaddlePaddle库
1+
# Android平台编译指南
22

33
用户可通过如下两种方式,交叉编译Android平台上适用的PaddlePaddle库:
44
- 基于Docker容器的编译方式

doc/mobile/cross_compiling_for_ios_cn.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 构建iOS平台上的PaddlePaddle库
1+
# iOS平台编译指南
22
交叉编译iOS平台上适用的PaddlePaddle库,需要在MacOS系统上进行。本文的将介绍在MacOS上,从源码交叉编译iOS平台上适用的PaddlePaddle库。
33

44
## 准备交叉编译环境
@@ -25,7 +25,7 @@ iOS平台可选配置参数:
2525
- `IOS_PLATFORM`,可设置为`OS/SIMULATOR`,默认值为`OS`
2626
- `OS`,构建目标为`arm`架构的iPhone或者iPad等物理设备。
2727
- `SIMULATOR`,构建目标为`x86`架构的模拟器平台。
28-
- `IOS_ARCH`,目标架构。针对不同的`IOS_PLATFORM`,可设置的目标架构如下表所示:
28+
- `IOS_ARCH`,目标架构。针对不同的`IOS_PLATFORM`,可设置的目标架构如下表所示,默认编译所有架构
2929

3030
<table class="docutils">
3131
<colgroup>
@@ -41,11 +41,11 @@ iOS平台可选配置参数:
4141
<tbody valign="top">
4242
<tr class="row-even">
4343
<td>OS</td>
44-
<td>armv7, armv7s, arm64 (默认)</td>
44+
<td>armv7, armv7s, arm64 </td>
4545
</tr>
4646
<tr class="row-odd">
4747
<td>SIMULATOR</td>
48-
<td>i386, x86_64 (默认)</td>
48+
<td>i386, x86_64 </td>
4949
</tr>
5050
</tbody>
5151
</table>
@@ -66,7 +66,7 @@ iOS平台可选配置参数:
6666
```bash
6767
cmake -DCMAKE_SYSTEM_NAME=iOS \
6868
-DIOS_PLATFORM=OS \
69-
-DIOS_ARCH="arm64" \
69+
-DIOS_ARCH="armv7;arm64" \
7070
-DIOS_ENABLE_BITCODE=ON \
7171
-DIOS_USE_VECLIB_FOR_BLAS=ON \
7272
-DCMAKE_INSTALL_PREFIX=your/path/to/install \
@@ -112,6 +112,6 @@ $ make install
112112
- `lib`目录,其中包含PaddlePaddle的C-API静态库
113113
- `third_party`目录,其中包含所依赖的所有第三方库
114114

115-
注意,不同架构的PaddlePaddle库建议安装到不同的目录下,然后使用`lipo`工具将多个静态库合并成一个支持多个架构的fat库
115+
注意,如果PaddlePaddle库需要同时支持真机和模拟器,则需要分别编译真机和模拟器版本,然后使用`lipo`工具合并fat库
116116

117117
自此,PaddlePaddle库已经安装完成,用户可将合成的fat库用于深度学习相关的iOS App中,调用方法见C-API文档。

doc/mobile/cross_compiling_for_raspberry_cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 构建Raspberry Pi平台上的PaddlePaddle库
1+
# Raspberry Pi平台编译指南
22

33
通常有两个方法来构建基于 Rasspberry Pi 的版本:
44

paddle/cuda/include/hl_gpu.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ limitations under the License. */
2525
#include "hl_matrix.h"
2626
#include "hl_sequence.h"
2727
#include "hl_sparse.h"
28+
#ifndef PADDLE_MOBILE_INFERENCE
2829
#include "hl_warpctc_wrap.h"
30+
#endif
2931

3032
#ifdef HPPL_STUB_FUNC
3133
#include "stub/hl_aggregate_stub.h"

paddle/gserver/layers/BatchNormBaseLayer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ bool BatchNormBaseLayer::init(const LayerMap& layerMap,
4141
useGlobalStats_ = config_.use_global_stats();
4242
}
4343
movingAvgFraction_ = config_.moving_average_fraction();
44-
EPS = config_.epsilon();
44+
epsilon_ = config_.epsilon();
4545

4646
weight_.reset(new Weight(1, channels_, parameters_[0]));
4747
movingMean_.reset(new Weight(1, channels_, parameters_[1]));

paddle/gserver/layers/BatchNormBaseLayer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ class BatchNormBaseLayer : public Layer {
9494
bool useGlobalStats_;
9595
// use to compute moving mean and variance.
9696
real movingAvgFraction_;
97-
// Epsilon value used in the batch normalization formula.
98-
real EPS;
97+
// Epsilon is a small random noise used in batch normalization for stability.
98+
real epsilon_;
9999
};
100100

101101
} // namespace paddle

paddle/gserver/layers/BatchNormalizationLayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void BatchNormalizationLayer::calMeanAndStd(const MatrixPtr& mat) {
5151

5252
calMovingMeanAndVar();
5353

54-
savedInvVar_->subScalar(-EPS);
54+
savedInvVar_->subScalar(-epsilon_);
5555
savedInvVar_->sqrt2(*savedInvVar_);
5656
}
5757

@@ -72,7 +72,7 @@ void BatchNormalizationLayer::setMeanAndStd() {
7272
savedInvVar_->copyFrom(*(movingVar_->getW()));
7373
savedInvVar_->downClip(real(0.0));
7474

75-
savedInvVar_->subScalar(-EPS);
75+
savedInvVar_->subScalar(-epsilon_);
7676
savedInvVar_->sqrt2(*savedInvVar_);
7777
}
7878

0 commit comments

Comments
 (0)