nswamy closed pull request #12773: [MXNET-1017] Updating the readme file for 
cpp-package and adding readme file for example directory.
URL: https://github.com/apache/incubator-mxnet/pull/12773
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/cpp-package/README.md b/cpp-package/README.md
index 2b6e0e39f0f..c4fe63c9ec5 100644
--- a/cpp-package/README.md
+++ b/cpp-package/README.md
@@ -1,21 +1,46 @@
 # MXNet C++ Package
 
-To build the C++ package, please refer to [this 
guide](<https://mxnet.incubator.apache.org/install/build_from_source#build-the-c-package>).
+The MXNet C++ Package provides C++ API bindings to the users of MXNet.  
Currently, these bindings are not available as standalone package.
+The users of these bindings are required to build this package as mentioned 
below.
 
-A basic tutorial can be found at 
<https://mxnet.incubator.apache.org/tutorials/c++/basics.html>.
+## Building C++ Package
 
-The example directory contains examples for you to get started.
+The cpp-package directory contains the implementation of C++ API. As mentioned 
above, users are required to build this directory or package before using it.
+**The cpp-package is built while building the MXNet shared library, 
*libmxnet.so*.**
+
+###Steps to build the C++ package:
+1.  Building the MXNet C++ package requires building MXNet from source.
+2.  Clone the MXNet GitHub repository **recursively** to ensure the code in 
submodules is available for building MXNet.
+       ```
+       git clone --recursive https://github.com/apache/incubator-mxnet mxnet
+       ```
+
+3.  Install the 
[prerequisites](<https://mxnet.incubator.apache.org/install/build_from_source#prerequisites>),
 desired [BLAS 
libraries](<https://mxnet.incubator.apache.org/install/build_from_source#blas-library>)
 and optional [OpenCV, CUDA, and 
cuDNN](<https://mxnet.incubator.apache.org/install/build_from_source#optional>) 
for building MXNet from source.
+4.  There is a configuration file for make, 
[make/config.mk](<https://github.com/apache/incubator-mxnet/blob/master/make/config.mk>)
 that contains all the compilation options. You can edit this file and set the 
appropriate options prior to running the **make** command.
+5.  Please refer to  [platform specific build 
instructions](<https://mxnet.incubator.apache.org/install/build_from_source#build-instructions-by-operating-system>)
 and available [build 
configurations](https://mxnet.incubator.apache.org/install/build_from_source#build-configurations)
 for more details. 
+5.  For enabling the build of C++ Package, set the **USE\_CPP\_PACKAGE = 1** 
in 
[make/config.mk](<https://github.com/apache/incubator-mxnet/blob/master/make/config.mk>).
 Optionally, the compilation flag can also be specified on **make** command 
line as follows.
+       ```
+       make -j USE_CPP_PACKAGE=1 
+       ```
+
+## Usage
 
-## Building C++ examples in examples folder
+In order to consume the C++ API please follow the steps below.
 
-From cpp-package/examples directory
--  Build all examples in release mode: **make all**
--  Build all examples in debug mode : **make debug**
+1. Ensure that the MXNet shared library is built from source with the 
**USE\_CPP\_PACKAGE = 1**.
+2. Include the 
[MxNetCpp.h](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/include/mxnet-cpp/MxNetCpp.h>)
 in the program that is going to consume MXNet C++ API.
+       ```
+       #include <mxnet-cpp/MxNetCpp.h>
+       ```
+3. While building the program, ensure that the correct paths to the 
directories containing header files and MXNet shared library.
+4. The program links the MXNet shared library dynamically. Hence the library 
needs to be accessible to the program during runtime. This can be achieved by 
including the path to the shared library in the environment variable  
**LD\_LIBRARY\_PATH** for Linux, Mac. and Ubuntu OS and **PATH** for Windows OS.
 
-By default, the examples are build to be run on GPU.
-To build examples to run on CPU:
-- Release: **make all MXNET_USE_CPU=1**  
-- Debug: **make debug MXNET_USE_CPU=1**  
 
+## Tutorial
+
+A basic tutorial can be found at 
<https://mxnet.incubator.apache.org/tutorials/c++/basics.html>.
+
+## Examples
+
+The example directory contains examples for you to get started.
 
-The makefile will also download the necessary data files and store in data 
folder. (The download will take couple of minutes, but will be done only once 
on a fresh installation.)
diff --git a/cpp-package/example/README.md b/cpp-package/example/README.md
new file mode 100644
index 00000000000..5d2f3b01f8f
--- /dev/null
+++ b/cpp-package/example/README.md
@@ -0,0 +1,106 @@
+# MXNet C++ Package Examples
+
+## Building C++ examples
+
+The examples are built while building the MXNet library and cpp-package from 
source . However, they can be built manually as follows
+
+From cpp-package/examples directory
+
+-  Build all examples in release mode: **make all**
+-  Build all examples in debug mode: **make debug**
+
+By default, the examples are built to be run on GPU. To build examples to run 
on CPU:
+
+-  Release: **make all MXNET\_USE\_CPU=1**
+-  Debug: **make debug MXNET\_USE\_CPU=1**
+
+The examples that are built to be run on GPU may not work on the non-GPU 
machines.
+The makefile will also download the necessary data files and store in a data 
folder. (The download will take couple of minutes, but will be done only once 
on a fresh installation.)
+
+
+## Examples
+
+This directory contains following examples. In order to run the examples, 
ensure that the path to the MXNet shared library is added to the OS specific 
environment variable viz. **LD\_LIBRARY\_PATH** for Linux, Mac and Ubuntu OS 
and **PATH** for Windows OS.
+
+### 
[alexnet.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/alexnet.cpp>)
+
+The example implements the C++ version of AlexNet. The networks trains on 
MNIST data. The number of epochs can be specified as a command line argument. 
For example to train with 10 epochs use the following:
+
+       ```
+       ./alexnet 10
+       ```
+
+### 
[googlenet.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/googlenet.cpp>)
+
+The code implements a GoogLeNet/Inception network using the C++ API. The 
example uses MNIST data to train the network. By default, the example trains 
the model for 100 epochs. The number of epochs can also be specified in the 
command line. For example, to train the model for 10 epochs use the following:
+
+```
+./googlenet 10
+```
+
+### 
[mlp.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/mlp.cpp>)
+
+The code implements a multilayer perceptron from scratch. The example creates 
its own dummy data to train the model. The example does not require command 
line parameters. It trains the model for 20,000 epochs.
+To run the example use the following command:
+
+```
+./mlp
+```
+
+### 
[mlp_cpu.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/mlp_cpu.cpp>)
+
+The code implements a multilayer perceptron to train the MNIST data. The code 
demonstrates the use of "SimpleBind"  C++ API and MNISTIter. The example is 
designed to work on CPU. The example does not require command line parameters.
+To run the example use the following command:
+
+```
+./mlp_cpu
+```
+
+### 
[mlp_gpu.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/mlp_gpu.cpp>)
+
+The code implements a multilayer perceptron to train the MNIST data. The code 
demonstrates the use of the "SimpleBind"  C++ API and MNISTIter. The example is 
designed to work on GPU. The example does not require command line arguments. 
To run the example execute following command:
+
+```
+./mlp_gpu
+```
+
+### 
[mlp_csv.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/mlp_csv.cpp>)
+
+The code implements a multilayer perceptron to train the MNIST data. The code 
demonstrates the use of the "SimpleBind"  C++ API and CSVIter. The CSVIter can 
iterate data that is in CSV format. The example can be run on CPU or GPU. The 
example usage is as follows:
+
+```
+mlp_csv --train mnist_training_set.csv --test mnist_test_set.csv --epochs 10 
--batch_size 100 --hidden_units "128,64,64 [--gpu]"
+```
+
+### 
[resnet.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/resnet.cpp>)
+
+The code implements a resnet model using the C++ API. The model is used to 
train MNIST data. The number of epochs for training the model can be specified 
on the command line. By default, model is trained for 100 epochs. For example, 
to train with 10 epochs use the following command:
+
+```
+./resnet 10
+```
+
+### 
[lenet.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/lenet.cpp>)
+
+The code implements a lenet model using the C++ API. It uses MNIST training 
data in CSV format to train the network. The example does not use built-in 
CSVIter to read the data from CSV file. The number of epochs can be specified 
on the command line. By default, the mode is trained for 100,000 epochs. For 
example, to train with 10 epochs use the following command:
+
+```
+./lenet 10
+```
+### 
[lenet\_with\_mxdataiter.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/mlp_cpu.cpp>)
+
+The code implements a lenet model using the C++ API. It uses MNIST training 
data to train the network. The example uses built-in MNISTIter to read the 
data. The number of epochs can be specified on the command line. By default, 
the mode is trained for 100 epochs. For example, to train with 10 epochs use 
the following command:
+
+```
+./lenet\_with\_mxdataiter 10
+```
+
+In addition, there is `run_lenet_with_mxdataiter.sh` that downloads the mnist 
data and run `lenet_with_mxdataiter` example.
+
+###[inception_bn.cpp](<https://github.com/apache/incubator-mxnet/blob/master/cpp-package/example/inception_bn.cpp>)
+
+The code implements an Inception network using the C++ API with batch 
normalization. The example uses MNIST data to train the network. The model 
trains for 100 epochs. The example can be run by executing the following 
command:
+
+```
+./inception_bn
+```


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to