|
|
|
@ -9,6 +9,83 @@ Please be aware that you will need to change `Dockers settings
|
|
|
|
|
of your hardware resource on Mac OS X and Windows.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development Using Docker
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
Develpers can work on PaddlePaddle using Docker. This allows
|
|
|
|
|
developers to work on different platforms -- Linux, Mac OS X, and
|
|
|
|
|
Windows -- in a consistent way.
|
|
|
|
|
|
|
|
|
|
The general development workflow with Docker and Bazel is as follows:
|
|
|
|
|
|
|
|
|
|
1. Get the source code of Paddle:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
git clone --recursive https://github.com/paddlepaddle/paddle
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Here **git clone --recursive is required** as we have a submodule `warp-ctc <https://github.com/baidu-research/warp-ctc>`_.
|
|
|
|
|
|
|
|
|
|
2. Build a development Docker image :code:`paddle:dev` from the source
|
|
|
|
|
code. This image contains all the development tools and
|
|
|
|
|
dependencies of PaddlePaddle.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd paddle
|
|
|
|
|
docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Run the image as a container and mounting local source code
|
|
|
|
|
directory into the container. This allows us to change the code on
|
|
|
|
|
the host and build it within the container.
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
docker run \
|
|
|
|
|
-d \
|
|
|
|
|
--name paddle \
|
|
|
|
|
-p 2022:22 \
|
|
|
|
|
-v $PWD:/paddle \
|
|
|
|
|
-v $HOME/.cache/bazel:/root/.cache/bazel \
|
|
|
|
|
paddle:dev
|
|
|
|
|
|
|
|
|
|
where :code:`-d` makes the container running in background,
|
|
|
|
|
:code:`--name paddle` allows us to run a nginx container to serve
|
|
|
|
|
documents in this container, :code:`-p 2022:22` allows us to SSH
|
|
|
|
|
into this container, :code:`-v $PWD:/paddle` shares the source code
|
|
|
|
|
on the host with the container, :code:`-v
|
|
|
|
|
$HOME/.cache/bazel:/root/.cache/bazel` shares Bazel cache on the
|
|
|
|
|
host with the container.
|
|
|
|
|
|
|
|
|
|
4. SSH into the container:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
ssh root@localhost -p 2022
|
|
|
|
|
|
|
|
|
|
5. We can edit the source code in the container or on this host. Then
|
|
|
|
|
we can build using cmake
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd /paddle # where paddle source code has been mounted into the container
|
|
|
|
|
mkdir -p build
|
|
|
|
|
cd build
|
|
|
|
|
cmake -DWITH_TESTING=ON ..
|
|
|
|
|
make -j `nproc`
|
|
|
|
|
CTEST_OUTPUT_ON_FAILURE=1 ctest
|
|
|
|
|
|
|
|
|
|
or Bazel in the container:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd /paddle
|
|
|
|
|
bazel test ...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPU-only and GPU Images
|
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
@ -104,78 +181,3 @@ container:
|
|
|
|
|
|
|
|
|
|
Then we can direct our Web browser to the HTML version of source code
|
|
|
|
|
at http://localhost:8088/paddle/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development Using Docker
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
Develpers can work on PaddlePaddle using Docker. This allows
|
|
|
|
|
developers to work on different platforms -- Linux, Mac OS X, and
|
|
|
|
|
Windows -- in a consistent way.
|
|
|
|
|
|
|
|
|
|
The general development workflow with Docker and Bazel is as follows:
|
|
|
|
|
|
|
|
|
|
1. Get the source code of Paddle:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
git clone --recursive https://github.com/paddlepaddle/paddle
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Build a development Docker image :code:`paddle:dev` from the source
|
|
|
|
|
code. This image contains all the development tools and
|
|
|
|
|
dependencies of PaddlePaddle.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd paddle
|
|
|
|
|
docker build -t paddle:dev -f paddle/scripts/docker/Dockerfile .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Run the image as a container and mounting local source code
|
|
|
|
|
directory into the container. This allows us to change the code on
|
|
|
|
|
the host and build it within the container.
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
docker run \
|
|
|
|
|
-d \
|
|
|
|
|
--name paddle \
|
|
|
|
|
-p 2022:22 \
|
|
|
|
|
-v $PWD:/paddle \
|
|
|
|
|
-v $HOME/.cache/bazel:/root/.cache/bazel \
|
|
|
|
|
paddle:dev
|
|
|
|
|
|
|
|
|
|
where :code:`-d` makes the container running in background,
|
|
|
|
|
:code:`--name paddle` allows us to run a nginx container to serve
|
|
|
|
|
documents in this container, :code:`-p 2022:22` allows us to SSH
|
|
|
|
|
into this container, :code:`-v $PWD:/paddle` shares the source code
|
|
|
|
|
on the host with the container, :code:`-v
|
|
|
|
|
$HOME/.cache/bazel:/root/.cache/bazel` shares Bazel cache on the
|
|
|
|
|
host with the container.
|
|
|
|
|
|
|
|
|
|
4. SSH into the container:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
ssh root@localhost -p 2022
|
|
|
|
|
|
|
|
|
|
5. We can edit the source code in the container or on this host. Then
|
|
|
|
|
we can build using cmake
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd /paddle # where paddle source code has been mounted into the container
|
|
|
|
|
mkdir -p build
|
|
|
|
|
cd build
|
|
|
|
|
cmake -DWITH_TESTING=ON ..
|
|
|
|
|
make -j `nproc`
|
|
|
|
|
CTEST_OUTPUT_ON_FAILURE=1 ctest
|
|
|
|
|
|
|
|
|
|
or Bazel in the container:
|
|
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
|
|
cd /paddle
|
|
|
|
|
bazel test ...
|
|
|
|
|