提交 9f2feea1 编写于 作者: T Travis CI

Deploy to GitHub Pages: 72bcf7b3

上级 7a346923
# PaddlePaddle Compiling Guide for iOS
This tutorial will walk you through cross compiling the PaddlePaddle library for iOS from the source in MacOS.
## Preparation
Apple provides Xcode for cross-compiling and IDE for iOS development. Download from App store or [here](https://developer.apple.com/cn/xcode/). To verify your installation, run command as follows
```bash
$ xcodebuild -version
Xcode 9.0
Build version 9A235
```
## Cross-compiling configurations
PaddlePaddle provides cross-compiling toolchain configuration documentation [cmake/cross_compiling/ios.cmake](https://github.com/PaddlePaddle/Paddle/blob/develop/cmake/cross_compiling/ios.cmake), which has some default settings for frequently used compilers.
There are some mandatory environment variables need to be set before cross compiling PaddlePaddle for iOS:
- `CMAKE_SYSTEM_NAME`, CMake compiling target platform name, has to be `iOS`. PaddlePaddle CMake will compile all the third party dependencies and enforce some parameters (`WITH_C_API=ON`、`WITH_GPU=OFF`、`WITH_AVX=OFF`、`WITH_PYTHON=OFF`、`WITH_RDMA=OFF`) when this variable is set with value `iOS`.
- `WITH_C_API`, Whether to compile inference C-API library, has to be `ON`, since C-API is the only supported interface for inferencing in iOS.
- `WITH_SWIG_PY`, has to be `ON`. It's not supported to inference or train via swig in iOS.
Optional environment variables for iOS are:
- `IOS_PLATFORM`, either `OS` (default) or `SIMULATOR`.
- `OS`, build targets ARM-based physical devices like iPhone or iPad.
- `SIMULATOR`, build targets x86 architecture simulators.
- `IOS_ARCH`, target architecture. By default, all architecture types will be compiled. If you need to specify the architecture to compile for, please find valid values for different `IOS_PLATFORM` settings from the table below:
<table class="docutils">
<colgroup>
<col width="35%" />
<col width="65%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd">
<th class="head">IOS_PLATFORM</th>
<th class="head">IOS_ARCH</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even">
<td>OS</td>
<td>armv7, armv7s, arm64 </td>
</tr>
<tr class="row-odd">
<td>SIMULATOR</td>
<td>i386, x86_64 </td>
</tr>
</tbody>
</table>
- `IOS_DEPLOYMENT_TARGET`, minimum iOS version to deployment, `7.0` by default.
- `IOS_ENABLE_BITCODE`, whether to enable [Bitcode](https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW3), values can be `ON/OFF`, `ON` by default.
- `IOS_USE_VECLIB_FOR_BLAS`, whether to use [vecLib](https://developer.apple.com/documentation/accelerate/veclib) framework for BLAS computing. values can be `ON/OFF`, `OFF` by default.
- `IOS_DEVELOPMENT_ROOT`, the path to `Developer` directory, can be explicitly set with your `/path/to/platform/Developer`. If left blank, PaddlePaddle will automatically pick the Xcode corresponding `platform`'s `Developer` directory based on your `IOS_PLATFORM` value.
- `IOS_SDK_ROOT`, the path to `SDK` root, can be explicitly set with your `/path/to/platform/Developer/SDKs/SDK`. if left black, PaddlePaddle will pick the latest SDK in the directory of `IOS_DEVELOPMENT_ROOT`.
other settings:
- `USE_EIGEN_FOR_BLAS`, whether to use Eigen for matrix computing. effective when `IOS_USE_VECLIB_FOR_BLAS=OFF`. Values can be `ON/OFF`, `OFF` by default.
- `HOST_C/CXX_COMPILER`, host C/C++ compiler. Uses value from environment variable `CC/CXX` by default or `cc/c++` if `CC/CXX` doesn't exist.
some typical cmake configurations:
```bash
cmake -DCMAKE_SYSTEM_NAME=iOS \
-DIOS_PLATFORM=OS \
-DIOS_ARCH="armv7;arm64" \
-DIOS_ENABLE_BITCODE=ON \
-DIOS_USE_VECLIB_FOR_BLAS=ON \
-DCMAKE_INSTALL_PREFIX=your/path/to/install \
-DWITH_C_API=ON \
-DWITH_TESTING=OFF \
-DWITH_SWIG_PY=OFF \
..
```
```bash
cmake -DCMAKE_SYSTEM_NAME=iOS \
-DIOS_PLATFORM=SIMULATOR \
-DIOS_ARCH="x86_64" \
-DIOS_USE_VECLIB_FOR_BLAS=ON \
-DCMAKE_INSTALL_PREFIX=your/path/to/install \
-DWITH_C_API=ON \
-DWITH_TESTING=OFF \
-DWITH_SWIG_PY=OFF \
..
```
You can set other compiling parameters for your own need. I.E. if you are trying to minimize the library size, set `CMAKE_BUILD_TYPE` with `MinSizeRel`; or if the performance is your concern, set `CMAKE_BUILD_TYPE` with `Release`. You can even manipulate the PaddlePaddle compiling procedure by manually set `CMAKE_C/CXX_FLAGS` values.
**TIPS for a better performance**:
- set `CMAKE_BUILD_TYPE` with `Release`
- set `IOS_USE_VECLIB_FOR_BLAS` with `ON`
## Compile and install
After CMake, run following commands, PaddlePaddle will download the compile 3rd party dependencies, compile and install PaddlePaddle inference library.
```
$ make
$ make install
```
Please Note: if you compiled PaddlePaddle in the source directory for other platforms, do remove `third_party` and `build` directory within the source with `rm -rf` to ensure that all the 3rd party libraries dependencies and PaddlePaddle is newly compiled with current CMake configuration.
`your/path/to/install` directory will have following directories after `compile` and `install`:
- `include`, contains all the C-API header files.
- `lib`, contains PaddlePaddle C-API static library.
- `third_party` contains all the 3rd party libraries.
Please note: if PaddlePaddle library need to support both physical devices and simulators, you will need to compile correspondingly, then merge fat library with `lipo`
Now you will have PaddlePaddle library compiled and installed, the fat library can be used in deep learning related iOS APPs. Please refer to C-API documentation for usage guides.
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PaddlePaddle Compiling Guide for iOS &mdash; PaddlePaddle documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="../genindex.html"/>
<link rel="search" title="Search" href="../search.html"/>
<link rel="top" title="PaddlePaddle documentation" href="../index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/css/perfect-scrollbar.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/override.css" type="text/css" />
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b9a314ab40d04d805655aab1deee08ba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<header class="site-header">
<div class="site-logo">
<a href="/"><img src="../_static/images/PP_w.png"></a>
</div>
<div class="site-nav-links">
<div class="site-menu">
<a class="fork-on-github" href="https://github.com/PaddlePaddle/Paddle" target="_blank"><i class="fa fa-github"></i>Fork me on Github</a>
<div class="language-switcher dropdown">
<a type="button" data-toggle="dropdown">
<span>English</span>
<i class="fa fa-angle-up"></i>
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/doc_cn">中文</a></li>
<li><a href="/doc">English</a></li>
</ul>
</div>
<ul class="site-page-links">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="doc-module">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_en.html">GET STARTED</a></li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_en.html">HOW TO</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_en.html">API</a></li>
<li class="toctree-l1"><a class="reference internal" href="index_en.html">MOBILE</a></li>
</ul>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
</header>
<div class="main-content-wrap">
<nav class="doc-menu-vertical" role="navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../getstarted/index_en.html">GET STARTED</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getstarted/build_and_install/index_en.html">Install and Build</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/pip_install_en.html">Install Using pip</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/docker_install_en.html">Run in Docker Containers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/dev/build_en.html">Build using Docker</a></li>
<li class="toctree-l3"><a class="reference internal" href="../getstarted/build_and_install/build_from_source_en.html">Build from Sources</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../howto/index_en.html">HOW TO</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cmd_parameter/index_en.html">Set Command-line Parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/use_case_en.html">Use Case</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/arguments_en.html">Argument Outline</a></li>
<li class="toctree-l3"><a class="reference internal" href="../howto/usage/cmd_parameter/detail_introduction_en.html">Detail Description</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/cluster/cluster_train_en.html">PaddlePaddle Distributed Training</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_en.html">Paddle On Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/usage/k8s/k8s_aws_en.html">Distributed PaddlePaddle Training on AWS with Kubernetes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/new_layer_en.html">Write New Layers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/contribute_to_paddle_en.html">Contribute Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/dev/write_docs_en.html">Contribute Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../howto/deep_model/rnn/index_en.html">RNN Models</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../howto/deep_model/rnn/rnn_config_en.html">RNN Configuration</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../howto/optimization/gpu_profiling_en.html">Tune GPU Performance</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index_en.html">API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/model_configs.html">Model Configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/activation.html">Activation</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/layer.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/evaluators.html">Evaluators</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/pooling.html">Pooling</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/networks.html">Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/config/attr.html">Parameter Attribute</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/data.html">Data Reader Interface and DataSets</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/data/data_reader.html">Data Reader Interface</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/data/image.html">Image Interface</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/data/dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/run_logic.html">Training and Inference</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/v2/fluid.html">Fluid</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/layers.html">Layers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/data_feeder.html">DataFeeder</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/executor.html">Executor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/initializer.html">Initializer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/evaluator.html">Evaluator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/nets.html">Nets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/optimizer.html">Optimizer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/param_attr.html">ParamAttr</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/profiler.html">Profiler</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/v2/fluid/regularizer.html">Regularizer</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="index_en.html">MOBILE</a><ul>
<li class="toctree-l2"><a class="reference internal" href="cross_compiling_for_android_en.html">Build PaddlePaddle for Android</a></li>
<li class="toctree-l2"><a class="reference internal" href="cross_compiling_for_raspberry_en.html">Build PaddlePaddle for Raspberry Pi</a></li>
</ul>
</li>
</ul>
</nav>
<section class="doc-content-wrap">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li>PaddlePaddle Compiling Guide for iOS</li>
</ul>
</div>
<div class="wy-nav-content" id="doc-content">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="paddlepaddle-compiling-guide-for-ios">
<span id="paddlepaddle-compiling-guide-for-ios"></span><h1>PaddlePaddle Compiling Guide for iOS<a class="headerlink" href="#paddlepaddle-compiling-guide-for-ios" title="Permalink to this headline"></a></h1>
<p>This tutorial will walk you through cross compiling the PaddlePaddle library for iOS from the source in MacOS.</p>
<div class="section" id="preparation">
<span id="preparation"></span><h2>Preparation<a class="headerlink" href="#preparation" title="Permalink to this headline"></a></h2>
<p>Apple provides Xcode for cross-compiling and IDE for iOS development. Download from App store or <a class="reference external" href="https://developer.apple.com/cn/xcode/">here</a>. To verify your installation, run command as follows</p>
<div class="highlight-bash"><div class="highlight"><pre><span></span>$ xcodebuild -version
Xcode <span class="m">9</span>.0
Build version 9A235
</pre></div>
</div>
</div>
<div class="section" id="cross-compiling-configurations">
<span id="cross-compiling-configurations"></span><h2>Cross-compiling configurations<a class="headerlink" href="#cross-compiling-configurations" title="Permalink to this headline"></a></h2>
<p>PaddlePaddle provides cross-compiling toolchain configuration documentation <a class="reference external" href="https://github.com/PaddlePaddle/Paddle/blob/develop/cmake/cross_compiling/ios.cmake">cmake/cross_compiling/ios.cmake</a>, which has some default settings for frequently used compilers.</p>
<p>There are some mandatory environment variables need to be set before cross compiling PaddlePaddle for iOS:</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">CMAKE_SYSTEM_NAME</span></code>, CMake compiling target platform name, has to be <code class="docutils literal"><span class="pre">iOS</span></code>. PaddlePaddle CMake will compile all the third party dependencies and enforce some parameters (<code class="docutils literal"><span class="pre">WITH_C_API=ON</span></code><code class="docutils literal"><span class="pre">WITH_GPU=OFF</span></code><code class="docutils literal"><span class="pre">WITH_AVX=OFF</span></code><code class="docutils literal"><span class="pre">WITH_PYTHON=OFF</span></code><code class="docutils literal"><span class="pre">WITH_RDMA=OFF</span></code>) when this variable is set with value <code class="docutils literal"><span class="pre">iOS</span></code>.</li>
<li><code class="docutils literal"><span class="pre">WITH_C_API</span></code>, Whether to compile inference C-API library, has to be <code class="docutils literal"><span class="pre">ON</span></code>, since C-API is the only supported interface for inferencing in iOS.</li>
<li><code class="docutils literal"><span class="pre">WITH_SWIG_PY</span></code>, has to be <code class="docutils literal"><span class="pre">ON</span></code>. It&#8217;s not supported to inference or train via swig in iOS.</li>
</ul>
<p>Optional environment variables for iOS are:</p>
<ul>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_PLATFORM</span></code>, either <code class="docutils literal"><span class="pre">OS</span></code> (default) or <code class="docutils literal"><span class="pre">SIMULATOR</span></code>.</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">OS</span></code>, build targets ARM-based physical devices like iPhone or iPad.</li>
<li><code class="docutils literal"><span class="pre">SIMULATOR</span></code>, build targets x86 architecture simulators.</li>
</ul>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_ARCH</span></code>, target architecture. By default, all architecture types will be compiled. If you need to specify the architecture to compile for, please find valid values for different <code class="docutils literal"><span class="pre">IOS_PLATFORM</span></code> settings from the table below:</p>
<table class="docutils">
<colgroup>
<col width="35%" />
<col width="65%" />
</colgroup>
<thead valign="bottom">
<tr class="row-odd">
<th class="head">IOS_PLATFORM</th>
<th class="head">IOS_ARCH</th>
</tr>
</thead>
<tbody valign="top">
<tr class="row-even">
<td>OS</td>
<td>armv7, armv7s, arm64 </td>
</tr>
<tr class="row-odd">
<td>SIMULATOR</td>
<td>i386, x86_64 </td>
</tr>
</tbody>
</table></li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_DEPLOYMENT_TARGET</span></code>, minimum iOS version to deployment, <code class="docutils literal"><span class="pre">7.0</span></code> by default.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_ENABLE_BITCODE</span></code>, whether to enable <a class="reference external" href="https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW3">Bitcode</a>, values can be <code class="docutils literal"><span class="pre">ON/OFF</span></code>, <code class="docutils literal"><span class="pre">ON</span></code> by default.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_USE_VECLIB_FOR_BLAS</span></code>, whether to use <a class="reference external" href="https://developer.apple.com/documentation/accelerate/veclib">vecLib</a> framework for BLAS computing. values can be <code class="docutils literal"><span class="pre">ON/OFF</span></code>, <code class="docutils literal"><span class="pre">OFF</span></code> by default.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_DEVELOPMENT_ROOT</span></code>, the path to <code class="docutils literal"><span class="pre">Developer</span></code> directory, can be explicitly set with your <code class="docutils literal"><span class="pre">/path/to/platform/Developer</span></code>. If left blank, PaddlePaddle will automatically pick the Xcode corresponding <code class="docutils literal"><span class="pre">platform</span></code>&#8216;s <code class="docutils literal"><span class="pre">Developer</span></code> directory based on your <code class="docutils literal"><span class="pre">IOS_PLATFORM</span></code> value.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">IOS_SDK_ROOT</span></code>, the path to <code class="docutils literal"><span class="pre">SDK</span></code> root, can be explicitly set with your <code class="docutils literal"><span class="pre">/path/to/platform/Developer/SDKs/SDK</span></code>. if left black, PaddlePaddle will pick the latest SDK in the directory of <code class="docutils literal"><span class="pre">IOS_DEVELOPMENT_ROOT</span></code>.</p>
</li>
</ul>
<p>other settings:</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">USE_EIGEN_FOR_BLAS</span></code>, whether to use Eigen for matrix computing. effective when <code class="docutils literal"><span class="pre">IOS_USE_VECLIB_FOR_BLAS=OFF</span></code>. Values can be <code class="docutils literal"><span class="pre">ON/OFF</span></code>, <code class="docutils literal"><span class="pre">OFF</span></code> by default.</li>
<li><code class="docutils literal"><span class="pre">HOST_C/CXX_COMPILER</span></code>, host C/C++ compiler. Uses value from environment variable <code class="docutils literal"><span class="pre">CC/CXX</span></code> by default or <code class="docutils literal"><span class="pre">cc/c++</span></code> if <code class="docutils literal"><span class="pre">CC/CXX</span></code> doesn&#8217;t exist.</li>
</ul>
<p>some typical cmake configurations:</p>
<div class="highlight-bash"><div class="highlight"><pre><span></span>cmake -DCMAKE_SYSTEM_NAME<span class="o">=</span>iOS <span class="se">\</span>
-DIOS_PLATFORM<span class="o">=</span>OS <span class="se">\</span>
-DIOS_ARCH<span class="o">=</span><span class="s2">&quot;armv7;arm64&quot;</span> <span class="se">\</span>
-DIOS_ENABLE_BITCODE<span class="o">=</span>ON <span class="se">\</span>
-DIOS_USE_VECLIB_FOR_BLAS<span class="o">=</span>ON <span class="se">\</span>
-DCMAKE_INSTALL_PREFIX<span class="o">=</span>your/path/to/install <span class="se">\</span>
-DWITH_C_API<span class="o">=</span>ON <span class="se">\</span>
-DWITH_TESTING<span class="o">=</span>OFF <span class="se">\</span>
-DWITH_SWIG_PY<span class="o">=</span>OFF <span class="se">\</span>
..
</pre></div>
</div>
<div class="highlight-bash"><div class="highlight"><pre><span></span>cmake -DCMAKE_SYSTEM_NAME<span class="o">=</span>iOS <span class="se">\</span>
-DIOS_PLATFORM<span class="o">=</span>SIMULATOR <span class="se">\</span>
-DIOS_ARCH<span class="o">=</span><span class="s2">&quot;x86_64&quot;</span> <span class="se">\</span>
-DIOS_USE_VECLIB_FOR_BLAS<span class="o">=</span>ON <span class="se">\</span>
-DCMAKE_INSTALL_PREFIX<span class="o">=</span>your/path/to/install <span class="se">\</span>
-DWITH_C_API<span class="o">=</span>ON <span class="se">\</span>
-DWITH_TESTING<span class="o">=</span>OFF <span class="se">\</span>
-DWITH_SWIG_PY<span class="o">=</span>OFF <span class="se">\</span>
..
</pre></div>
</div>
<p>You can set other compiling parameters for your own need. I.E. if you are trying to minimize the library size, set <code class="docutils literal"><span class="pre">CMAKE_BUILD_TYPE</span></code> with <code class="docutils literal"><span class="pre">MinSizeRel</span></code>; or if the performance is your concern, set <code class="docutils literal"><span class="pre">CMAKE_BUILD_TYPE</span></code> with <code class="docutils literal"><span class="pre">Release</span></code>. You can even manipulate the PaddlePaddle compiling procedure by manually set <code class="docutils literal"><span class="pre">CMAKE_C/CXX_FLAGS</span></code> values.</p>
<p><strong>TIPS for a better performance</strong>:</p>
<ul class="simple">
<li>set <code class="docutils literal"><span class="pre">CMAKE_BUILD_TYPE</span></code> with <code class="docutils literal"><span class="pre">Release</span></code></li>
<li>set <code class="docutils literal"><span class="pre">IOS_USE_VECLIB_FOR_BLAS</span></code> with <code class="docutils literal"><span class="pre">ON</span></code></li>
</ul>
</div>
<div class="section" id="compile-and-install">
<span id="compile-and-install"></span><h2>Compile and install<a class="headerlink" href="#compile-and-install" title="Permalink to this headline"></a></h2>
<p>After CMake, run following commands, PaddlePaddle will download the compile 3rd party dependencies, compile and install PaddlePaddle inference library.</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ make
$ make install
</pre></div>
</div>
<p>Please Note: if you compiled PaddlePaddle in the source directory for other platforms, do remove <code class="docutils literal"><span class="pre">third_party</span></code> and <code class="docutils literal"><span class="pre">build</span></code> directory within the source with <code class="docutils literal"><span class="pre">rm</span> <span class="pre">-rf</span></code> to ensure that all the 3rd party libraries dependencies and PaddlePaddle is newly compiled with current CMake configuration.</p>
<p><code class="docutils literal"><span class="pre">your/path/to/install</span></code> directory will have following directories after <code class="docutils literal"><span class="pre">compile</span></code> and <code class="docutils literal"><span class="pre">install</span></code>:</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">include</span></code>, contains all the C-API header files.</li>
<li><code class="docutils literal"><span class="pre">lib</span></code>, contains PaddlePaddle C-API static library.</li>
<li><code class="docutils literal"><span class="pre">third_party</span></code> contains all the 3rd party libraries.</li>
</ul>
<p>Please note: if PaddlePaddle library need to support both physical devices and simulators, you will need to compile correspondingly, then merge fat library with <code class="docutils literal"><span class="pre">lipo</span></code></p>
<p>Now you will have PaddlePaddle library compiled and installed, the fat library can be used in deep learning related iOS APPs. Please refer to C-API documentation for usage guides.</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, PaddlePaddle developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ".txt",
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/perfect-scrollbar/0.6.14/js/perfect-scrollbar.jquery.min.js"></script>
<script src="../_static/js/paddle_doc_init.js"></script>
</body>
</html>
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册