summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhonggui <hongguiyao@msn.com>2017-09-21 08:08:39 +0800
committerhonggui <hongguiyao@msn.com>2017-09-21 08:08:39 +0800
commit5e3ed2e7fbe276c44db3c78fc37ba3c8c03d51ed (patch)
treebd4f7c83aff22476d7e5c6c9f5ab6222251da9c2
parent25e0cec114d641fd15356edb9e18a4403a0c7309 (diff)
downloadcaffeonacl-5e3ed2e7fbe276c44db3c78fc37ba3c8c03d51ed.tar.gz
caffeonacl-5e3ed2e7fbe276c44db3c78fc37ba3c8c03d51ed.tar.bz2
caffeonacl-5e3ed2e7fbe276c44db3c78fc37ba3c8c03d51ed.zip
Refined documents
-rw-r--r--acl_openailab/Makefile.config.acl147
-rw-r--r--acl_openailab/Reversion.md113
-rw-r--r--acl_openailab/Userguide.md130
-rw-r--r--acl_openailab/installation.md81
-rw-r--r--acl_openailab/openailab.pngbin0 -> 127460 bytes
-rw-r--r--acl_openailab/performance_report.pdfbin0 -> 746372 bytes
-rw-r--r--acl_openailab/release_notes.md66
-rw-r--r--acl_openailab/user_manual.pdfbin0 -> 830403 bytes
-rw-r--r--docs/caffeOnACL_release_notes_0_2_0.docxbin127780 -> 0 bytes
-rw-r--r--docs/caffeOnACL_user_guide_0_2_0.docxbin550030 -> 0 bytes
10 files changed, 147 insertions, 390 deletions
diff --git a/acl_openailab/Makefile.config.acl b/acl_openailab/Makefile.config.acl
deleted file mode 100644
index c909a424..00000000
--- a/acl_openailab/Makefile.config.acl
+++ /dev/null
@@ -1,147 +0,0 @@
-## Refer to http://caffe.berkeleyvision.org/installation.html
-# Contributions simplifying and improving our build system are welcome!
-
-# cuDNN acceleration switch (uncomment to build with cuDNN).
-# USE_CUDNN := 1
-
-# CPU-only switch (uncomment to build without GPU support).
-CPU_ONLY := 1
-
-# Enable ACL (ARM Compute Library)
-USE_ACL :=1
-
-USE_PROFILING := 0
-
-ifeq ($(USE_ACL), 1)
- ifeq ($(ACL_ROOT),)
- $(error ACL_ROOT does not specified. use "export ACL_ROOT='path of acl soure code'")
- endif
-
-ACL_INCS :=$(ACL_ROOT)/include
-ACL_INCS +=$(ACL_ROOT)
-ACL_LIBS_DIR :=$(ACL_ROOT)/build
-ACL_LIBS_DIR +=$(ACL_ROOT)/build/arm_compute
-ACL_LIBS :=arm_compute OpenCL
-endif
-
-# uncomment to disable IO dependencies and corresponding data layers
-# USE_OPENCV := 0
-# USE_LEVELDB := 0
-# USE_LMDB := 0
-
-# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
-# You should not set this flag if you will be reading LMDBs with any
-# possibility of simultaneous read and write
-# ALLOW_LMDB_NOLOCK := 1
-
-# Uncomment if you're using OpenCV 3
-# OPENCV_VERSION := 3
-
-# To customize your choice of compiler, uncomment and set the following.
-# N.B. the default for Linux is g++ and the default for OSX is clang++
-# CUSTOM_CXX := g++
-#CUSTOM_CXX := aarch64-linux-gnu-g++
-#os :=linux
-#arch :=arm64-v8a
-
-# CUDA directory contains bin/ and lib/ directories that we need.
-CUDA_DIR := /usr/local/cuda
-# On Ubuntu 14.04, if cuda tools are installed via
-# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
-# CUDA_DIR := /usr
-
-# CUDA architecture setting: going with all of them.
-# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
-# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
-CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
- -gencode arch=compute_20,code=sm_21 \
- -gencode arch=compute_30,code=sm_30 \
- -gencode arch=compute_35,code=sm_35 \
- -gencode arch=compute_50,code=sm_50 \
- -gencode arch=compute_52,code=sm_52 \
- -gencode arch=compute_60,code=sm_60 \
- -gencode arch=compute_61,code=sm_61 \
- -gencode arch=compute_61,code=compute_61
-
-# BLAS choice:
-# atlas for ATLAS (default)
-# mkl for MKL
-# open for OpenBlas
-#BLAS := atlas
-BLAS := open
-# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
-# Leave commented to accept the defaults for your choice of BLAS
-# (which should work)!
-# BLAS_INCLUDE := /path/to/your/blas
-# BLAS_LIB := /path/to/your/blas
-
-# Homebrew puts openblas in a directory that is not on the standard search path
-# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
-# BLAS_LIB := $(shell brew --prefix openblas)/lib
-
-# This is required only if you will compile the matlab interface.
-# MATLAB directory should contain the mex binary in /bin.
-# MATLAB_DIR := /usr/local
-# MATLAB_DIR := /Applications/MATLAB_R2012b.app
-
-# NOTE: this is required only if you will compile the python interface.
-# We need to be able to find Python.h and numpy/arrayobject.h.
-PYTHON_INCLUDE := /usr/include/python2.7 \
- /usr/lib/python2.7/dist-packages/numpy/core/include
-# Anaconda Python distribution is quite popular. Include path:
-# Verify anaconda location, sometimes it's in root.
-# ANACONDA_HOME := $(HOME)/anaconda
-# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
- # $(ANACONDA_HOME)/include/python2.7 \
- # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
-
-# Uncomment to use Python 3 (default is Python 2)
-# PYTHON_LIBRARIES := boost_python3 python3.5m
-# PYTHON_INCLUDE := /usr/include/python3.5m \
-# /usr/lib/python3.5/dist-packages/numpy/core/include
-
-# We need to be able to find libpythonX.X.so or .dylib.
-PYTHON_LIB := /usr/lib
-# PYTHON_LIB := $(ANACONDA_HOME)/lib
-
-# Homebrew installs numpy in a non standard path (keg only)
-# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
-# PYTHON_LIB += $(shell brew --prefix numpy)/lib
-
-# Uncomment to support layers written in Python (will link against Python libs)
-# WITH_PYTHON_LAYER := 1
-
-# Whatever else you find you need goes here.
-INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
-LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
-
-# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
-# INCLUDE_DIRS += $(shell brew --prefix)/include
-# LIBRARY_DIRS += $(shell brew --prefix)/lib
-
-# NCCL acceleration switch (uncomment to build with NCCL)
-# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
-# USE_NCCL := 1
-
-# Uncomment to use `pkg-config` to specify OpenCV library paths.
-# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
-# USE_PKG_CONFIG := 1
-
-# N.B. both build and distribute dirs are cleared on `make clean`
-BUILD_DIR := build
-DISTRIBUTE_DIR := distribute
-
-#HDF5
-USE_HDF5 := 1
-HDF5_INCLUDE_DIRS := /usr/include/hdf5/serial
-HDF5_LIBRARY_DIRS := /usr/lib/aarch64-linux-gnu/hdf5/serial
-HDF5_LIBRARIES :=hdf5_hl hdf5
-
-# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
-# DEBUG := 1
-
-# The ID of the GPU that 'make runtest' will use to run unit tests.
-TEST_GPUID := 0
-
-# enable pretty build (comment to see full commands)
-Q ?= @
diff --git a/acl_openailab/Reversion.md b/acl_openailab/Reversion.md
deleted file mode 100644
index f7c934b0..00000000
--- a/acl_openailab/Reversion.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# Release Note
-[![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE)
-
-The release version is 0.2.0. You can download the source code from [OAID/caffeOnACL](https://github.com/OAID/caffeOnACL)
-
-## Verified Platform :
-
-The release is verified on 64bits ARMv8 processor<br>
-* Hardware platform : Rockchip RK3399 (firefly RK3399 board)<br>
-* Software platform : Ubuntu 16.04<br>
-
-## 10 Layers accelerated by ACL layers :
-* ConvolutionLayer
-* PoolingLayer
-* LRNLayer
-* ReLULayer
-* SigmoidLayer
-* SoftmaxLayer
-* TanHLayer
-* AbsValLayer
-* BNLLLayer
-* InnerProductLayer
-
-## ACL compatibility issues :
-There are some compatibility issues between ACL and caffe Layers, we bypass it to Caffe's original layer class as the workaround solution for the below issues
-* Normalization in-channel issue
-* Tanh issue
-* Even Kernel size
-* Softmax supporting multi-dimension issue
-* Group issue
-* Performance need be fine turned in the future
-
-# Changelist
-The caffe based version is `793bd96351749cb8df16f1581baf3e7d8036ac37`.
-## New Files :
- Makefile.config.acl
- cmake/Modules/FindACL.cmake
- examples/cpp_classification/classification_profiling.cpp
- examples/cpp_classification/classification_profiling_gpu.cpp
- include/caffe/acl_layer.hpp
- include/caffe/layers/acl_absval_layer.hpp
- include/caffe/layers/acl_base_activation_layer.hpp
- include/caffe/layers/acl_bnll_layer.hpp
- include/caffe/layers/acl_conv_layer.hpp
- include/caffe/layers/acl_inner_product_layer.hpp
- include/caffe/layers/acl_lrn_layer.hpp
- include/caffe/layers/acl_pooling_layer.hpp
- include/caffe/layers/acl_relu_layer.hpp
- include/caffe/layers/acl_sigmoid_layer.hpp
- include/caffe/layers/acl_softmax_layer.hpp
- include/caffe/layers/acl_tanh_layer.hpp
- models/SqueezeNet/README.md
- models/SqueezeNet/SqueezeNet_v1.1/squeezenet.1.1.deploy.prototxt
- src/caffe/acl_layer.cpp
- src/caffe/layers/acl_absval_layer.cpp
- src/caffe/layers/acl_base_activation_layer.cpp
- src/caffe/layers/acl_bnll_layer.cpp
- src/caffe/layers/acl_conv_layer.cpp
- src/caffe/layers/acl_inner_product_layer.cpp
- src/caffe/layers/acl_lrn_layer.cpp
- src/caffe/layers/acl_pooling_layer.cpp
- src/caffe/layers/acl_relu_layer.cpp
- src/caffe/layers/acl_sigmoid_layer.cpp
- src/caffe/layers/acl_softmax_layer.cpp
- src/caffe/layers/acl_tanh_layer.cpp
- unit_tests/Makefile
- unit_tests/pmu.c
- unit_tests/pmu.h
- unit_tests/prof_convolution_layer.cpp
- unit_tests/sgemm.cpp
- unit_tests/test.cpp
- unit_tests/test_caffe_main.cpp
- unit_tests/test_common.cpp
- unit_tests/test_convolution_layer.cpp
- unit_tests/test_fail.cpp
- unit_tests/test_inner_product_layer.cpp
- unit_tests/test_lrn_layer.cpp
- unit_tests/test_neuron_layer.cpp
- unit_tests/test_pooling_layer.cpp
- unit_tests/test_softmax_layer.cpp
- unit_tests/testbed.c
- unit_tests/testbed.h
-
-## Change Files :
- Makefile
- cmake/Dependencies.cmake
- include/caffe/caffe.hpp
- include/caffe/common.hpp
- include/caffe/layer.hpp
- include/caffe/util/device_alternate.hpp
- include/caffe/util/hdf5.hpp
- src/caffe/common.cpp
- src/caffe/layer.cpp
- src/caffe/layer_factory.cpp
- src/caffe/layers/absval_layer.cpp
- src/caffe/layers/bnll_layer.cpp
- src/caffe/layers/hdf5_data_layer.cpp
- src/caffe/layers/hdf5_data_layer.cu
- src/caffe/layers/hdf5_output_layer.cpp
- src/caffe/layers/hdf5_output_layer.cu
- src/caffe/layers/inner_product_layer.cpp
- src/caffe/net.cpp
- src/caffe/solvers/sgd_solver.cpp
- src/caffe/syncedmem.cpp
- src/caffe/test/test_hdf5_output_layer.cpp
- src/caffe/test/test_hdf5data_layer.cpp
- src/caffe/util/hdf5.cpp
- src/caffe/util/math_functions.cpp
-
-# Issue report
-Encounter any issue, please report on [issue report](https://github.com/OAID/caffeOnACL/issues). Issue report should contain the following information :
-* The exact description of the steps that are needed to reproduce the issue
-* The exact description of what happens and what you think is wrong
diff --git a/acl_openailab/Userguide.md b/acl_openailab/Userguide.md
deleted file mode 100644
index 7b7d1471..00000000
--- a/acl_openailab/Userguide.md
+++ /dev/null
@@ -1,130 +0,0 @@
-# 1. Purpose
-This document will help user utilize the code of CaffeOnACL(Caffe+ACL) to improve the performance of their applications based on the Caffe framework.
-
-# 2. Setup applicaiton developmnet evironment
-## 2.1 ACL and Caffe Libraris build
-Please refer to [build caffeOnACL](https://github.com/OAID/caffeOnACL/tree/master/acl_openailab/README.md).
-
-## 2.2 ACL and Caffe Libraris installation
-There are two ways to use the libraris after build them.
-### Install libraries to standard direcotry '/usr/local/lib'
- sudo cp ~/oaid/ComputeLibrary/build/arm_compute/libarm_compute.so /usr/local/lib/.
- sudo cp ~/oaid/caffeOnACL/distribute/lib/libcaffe.so /usr/local/lib/.
-
-### Or, install libraries to a temporarily directory. then set the environment variable LD_LIBRARY_PATH is this direcotry. For example, install libraries to `~oaid`
- mkdir ~/oaid/lib
- cp ~/oaid/ComputeLibrary/build/libarm_compute.so ~oaid/lib/.
- cp ~/oaid//caffeOnACL/distribute/lib/libcaffe.so ~/oaid/lib/.
- export LD_LIBRARY_PATH=~/oaid/lib
-
-# 2.3 How to write Makefile for applications
-First, please make sure that environmnet variable "ACL_ROOT" and "CAFFE_ROOT" is set properly (them are set during the process of ACL and Caffe libraries buiding). Double check them by command just like "echo $VAR".<br>
-In the Makefile, it needs include the following lines :
-
- include $(CAFFE_ROOT)/Makefile.config
- CAFFE_INCS = -I$(CAFFE_ROOT)/include -I$(CAFFE_ROOT)/distribute/include/
- CAFFE_LIBS = -L$(CAFFE_ROOT)/distribute/lib -lcaffe -lglog -lgflags -lprotobuf -lboost_system -lboost_filesystem
-
-# 3. Application configuration guide
-## 3.1 Configuration options on compiling time
-Modify the vaule of Make Variables in `$(CAFFE_ROOT)/Makefile.config` to USE or _NOT_ USE some function by Caffe.
-
-* "USE_ACL := 1" (Enable ACL support on ARM Platform), "USE_ACL :=0" (Disable ACL support on ARM Platform)
-* "USE_PROFILING := 1" (Enable profiling), "USE_PROFILING := 0" (Disable profiling)
-* Experimental functions:
-
- When USE_PROFILING is true, enable "Layer's performance statistic" which controlled by Marco "LAYER_PERF_STAT", is defined by "-DLAYER_PERF_STAT" in "$(CAFFE_ROOT)/Makefile", can remove it to disable the feature.
- Add "-DUSE_CONV_CACHE" to "COMMON_FLAGS" into "$(CAFFE_ROOT)/Makefile" to enable the cache of convolution layer
-
-## 3.2 Configure the bypass of ACL Layer
-Can set environment "BYPASSACL" to bypass ACL layers, the control bit definitions are listed in the table below:
-
- BYPASS_ACL_ABSVAL 0x00000001
- BYPASS_ACL_BNLL 0x00000002
- BYPASS_ACL_CONV 0x00000004
- BYPASS_ACL_FC 0x00000008
- BYPASS_ACL_LRN 0x00000010
- BYPASS_ACL_POOLING 0x00000020
- BYPASS_ACL_RELU 0x00000040
- BYPASS_ACL_SIGMOID 0x00000080
- BYPASS_ACL_SOFTMAX 0x00000100
- BYPASS_ACL_TANH 0x00000200
-
-For instance, type "export BYPASSACL=0x100" to bypass ACL Softmax layer; and "export BYPASSACL=0x124" to bypass ACL Softmax, Pooling and Convolution layers.
-
-## 3.3 Configure the log information
-can set "LOGACL" to log the performance information of ACL and related caffe layers, the control bit definitions are listed in the table below:
-
- ENABLE_LOG_APP_TIME 0x00000001
- ENABLE_LOG_ALLOCATE 0x00000002
- ENABLE_LOG_RUN 0x00000004
- ENABLE_LOG_CONFIG 0x00000008
- ENABLE_LOG_COPY 0x00000010
- ENABLE_LOG_ABSVAL 0x00000020
- ENABLE_LOG_BNLL 0x00000040
- ENABLE_LOG_CONV 0x00000080
- ENABLE_LOG_FC 0x00000100
- ENABLE_LOG_LRN 0x00000200
- ENABLE_LOG_POOLING 0x00000400
- ENABLE_LOG_RELU 0x00000800
- ENABLE_LOG_SIGMOID 0x00001000
- ENABLE_LOG_SOFTMAX 0x00002000
- ENABLE_LOG_TANH 0x00004000
-
-For instance, type "export LOGACL=0x100" to output the performance information of FC layer; "export BYPASSACL=0x380" to output the performance information of LRN, FC and Convolution layers. You can copy the logs into Microsoft excel, the sum the time information with separated terms, the column of excel sheet like this :<br>
-![log_execl_column](https://oaid.github.io/pics/caffeonacl/caffe_log_execl_column.png)
-
-# 4. Test and Performance Tuning Guide
-## 4.1 To run the application with ACL and log performance information
-Assume your working directory is : ~\test
-
-* Use all ACL layers by set BYPASSACL to 0
-
- export BYPASSACL=0
-
-* If compile the caffeOnACL with "USE_PROFILING := 1", to decide which information is logged into file by setting LOGACL. For instance, we log all layers' information by setting LOGACL to 0x7fe1.
-
- export LOGACL=0x7fe1
-
-* To check if "configure" take lots of time, can set LOGACL to 0x08.
-
- export LOGACL=0x08
-
-* To check if "memory copy" take lots of time, we can set LOGACL to 0x10.
-
- export LOGACL=0x10
-
-* Run your application and get the information of performance
-
- ./your_application parameters…
-
-* When got the log, copy it into Microsoft excel, and sum the columns. For examle, run the AlexNet as the example – command line is :
-
- taskset -a 10 ./distribute/bin/classification.bin ./models/bvlc_alexnet/deploy.prototxt ./models/bvlc_alexnet/bvlc_alexnet.caffemodel data/ilsvrc12/imagenet_mean.binaryproto data/ilsvrc12/synset_words.txt examples/images/cat.jpg
-![AlexNet_acl_perflog_excel_pic](https://oaid.github.io/pics/caffeonacl/AlexNet_acl_perflog_excel_pic.png)
-
-## 4.2 To run the application with original Caffe's layers and log performance information
-Assume your work directory is ~\test.
-
-* to use all ACL layers by set BYPASSACL to 0xffffffff
- export BYPASSACL=0xffffffff
-* If compile the caffeOnACL with "USE_PROFILING := 1", to decide which information is logged into file by setting LOGACL. For instance, we log all layers' information by setting LOGACL to 0x7fe1. (In this case, ENABLE_LOG_ALLOCATE、ENABLE_LOG_RUN、ENABLE_LOG_CONFIG and ENABLE_LOG_COPY are invalidate, these flags are all for ACL layers)
-
- export LOGACL=0x7fe1
-
-* Run your application and get the information of performance
-
- ./your_application parameters…
-* When got the log, we can copy it into Microsoft excel, and sum the columns
-![AlexNet_origin_perflog_excel_pic](https://oaid.github.io/pics/caffeonacl/AlexNet_origin_perflog_excel_pic.png)
-
-## 4.3 Improve the performance by mixing ACL Layers and Caffe’s original Layers
-After retrieving the performance statistic data of Caffe's layers and ACL's layers in your application, we can compare their respective performances:
-![AlexNet_acl_vs_openblas_perf_pic](https://oaid.github.io/pics/caffeonacl/AlexNet_acl_vs_openblas_perf_pic.png)
-
-From the table above, we can observe that in the original caffe’s layer, CONV、FC、RELU and Softmax have faster running times than ACL’s layers. Therefore, we can set BYPASSACL to 0x14c to BYPASS the 4 ACL layers, and utilize the original caffe’s layers in the application. By choosing the layerset with the faster running time for each layer, we can optimize the total running time for this application
-#### The performance data is :
-![performance_data_excel_pic](https://oaid.github.io/pics/caffeonacl/performance_data_excel_pic.png)
-
-As you can see, we obtain optimal performance in combined mode (ACL: LRN、Pooling,Caffe’s original Layers:Conv、FC、RELU、Softmax) as in the table below:
-![performance_summary_pic](https://oaid.github.io/pics/caffeonacl/performance_summary_pic.png)
diff --git a/acl_openailab/installation.md b/acl_openailab/installation.md
new file mode 100644
index 00000000..2a9622dd
--- /dev/null
+++ b/acl_openailab/installation.md
@@ -0,0 +1,81 @@
+# 1. User Quick Guide
+[![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE)
+
+This Installation will help you get started to setup CaffeOnACL on RK3399 quickly.
+
+# 2. Preparation
+## 2.1 General dependencies installation
+ sudo apt-get -y update
+ sodo apt-get -y upgrade
+ sudo apt-get install -y build-essential pkg-config automake autoconf protobuf-compiler cmake cmake-gui
+ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev
+ sudo apt-get install -y libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libopenblas-dev
+ sudo apt-get install -y libopencv-dev python-dev
+ sudo apt-get install -y python-numpy python-scipy python-yaml python-six python-pip
+ sudo apt-get install -y scons git
+ sudo apt-get install -y --no-install-recommends libboost-all-dev
+ pip install --upgrade pip
+
+## 2.2 Download source code
+
+ cd ~
+
+#### Download "ACL" (arm_compute : [v17.06](https://github.com/ARM-software/ComputeLibrary/tree/dbdab85d6e0f96d3361a9e30310367d89953466c)):
+ git clone https://github.com/ARM-software/ComputeLibrary.git
+#### Download "CaffeOnACL" :
+ git clone https://github.com/OAID/CaffeOnACL.git
+#### Download "Googletest" :
+ git clone https://github.com/google/googletest.git
+
+# 3. Build CaffeOnACL
+## 3.1 Build ACL :
+ cd ~/ComputeLibrary
+ aarch64-linux-gnu-gcc opencl-1.2-stubs/opencl_stubs.c -Iinclude -shared -o build/libOpenCL.so
+ scons Werror=1 -j8 debug=0 asserts=1 neon=1 opencl=1 embed_kernels=1 os=linux arch=arm64-v8a
+
+## 3.2 Build Caffe :
+ export ACL_ROOT=~/ComputeLibrary
+ cd ~/CaffeOnACL
+ cp Makefile.config.acl Makefile.config
+ make all distribute
+
+## 3.3 Build Unit tests
+##### Build the gtest libraries
+ cd ~/googletest
+ cmake CMakeLists.txt
+ make
+ sudo make install
+
+##### Build Caffe Unit tests
+ export CAFFE_ROOT=~/CaffeOnACL
+ cd ~/CaffeOnACL/unit_tests
+ make clean
+ make
+
+## 3.4 To Configure The Libraries
+
+ sudo cp ~/ComputeLibrary/build/libArm_compute.so /usr/lib
+ sudo cp ~/CaffeOnACL/distribute/lib/libcaffe.so /usr/lib
+
+# 4. Run tests
+
+#### 4.1 Run Caffenet
+ cd ~/CaffeOnACL/data/ilsvrc12
+ sudo chmod +x get_ilsvrc_aux.sh
+ ./get_ilsvrc_aux.sh
+ cd ../..
+ ./scripts/download_model_binary.py ./models/bvlc_reference_caffenet
+ ./distribute/bin/classification.bin models/bvlc_reference_caffenet/deploy.prototxt models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel data/ilsvrc12/imagenet_mean.binaryproto data/ilsvrc12/synset_words.txt examples/images/cat.jpg
+ output message --
+ ---------- Prediction for examples/images/cat.jpg ----------
+ 0.3094 - "n02124075 Egyptian cat"
+ 0.1761 - "n02123159 tiger cat"
+ 0.1221 - "n02123045 tabby, tabby cat"
+ 0.1132 - "n02119022 red fox, Vulpes vulpes"
+ 0.0421 - "n02085620 Chihuahua"
+
+#### 4.2 Run Unit test
+ cd ~/CaffeOnACL/unit_tests
+ ./test_caffe_main
+ output message:
+ [==========] 29 tests from 6 test cases ran. (1236 ms total) [ PASSED ] 29 tests.
diff --git a/acl_openailab/openailab.png b/acl_openailab/openailab.png
new file mode 100644
index 00000000..a5fce7e2
--- /dev/null
+++ b/acl_openailab/openailab.png
Binary files differ
diff --git a/acl_openailab/performance_report.pdf b/acl_openailab/performance_report.pdf
new file mode 100644
index 00000000..64dafd7c
--- /dev/null
+++ b/acl_openailab/performance_report.pdf
Binary files differ
diff --git a/acl_openailab/release_notes.md b/acl_openailab/release_notes.md
new file mode 100644
index 00000000..94bf55d8
--- /dev/null
+++ b/acl_openailab/release_notes.md
@@ -0,0 +1,66 @@
+# Release Note
+[![Build](https://img.shields.io/teamcity/codebetter/bt428.svg)](build) [![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE)
+
+The release version is 0.3.0. You can download the source code from [OAID/CaffeOnACL](https://github.com/OAID/CaffeOnACL)
+
+## Verified Platform :
+
+The release is verified on 64bits ARMv8 processor
+
+- Hardware platform : Rockchip RK3399 ([Firefly-RK3399 board](http://wiki.t-firefly.com/index.php/Firefly-RK3399))
+- Software platform : Ubuntu 16.04<br>
+
+## ACL Compatibility Issues :
+There are some compatibility issues between ACL and Caffe Layers, we bypass it to Caffe's original layer class as the workaround solution for the below issues
+
+* Normalization in-channel issue
+* Tanh issue
+* Softmax supporting multi-dimension issue
+* Group issue
+
+Performance need be fine turned in the future
+
+# Issue Report
+Encounter any issue, please report on [issue report](https://github.com/OAID/CaffeOnACL/issues). Issue report should contain the following information :
+
+* The exact description of the steps that are needed to reproduce the issue
+* The exact description of what happens and what you think is wrong
+
+
+## Release History
+The Caffe based version is [793bd96351749cb8df16f1581baf3e7d8036ac37](https://github.com/BVLC/caffe/tree/793bd96351749cb8df16f1581baf3e7d8036ac37).
+
+
+## CaffeOnACL Version 0.3.0 - Aug 26, 2017
+
+Support Arm Compute Library version 17.06 with 4 new layers added
+
+* Batch Normalization Layer
+* Direct convolution Layer
+* Locally Connect Layer
+* Concatenate layer
+
+
+## CaffeOnACL Version 0.2.0 - Jul 2, 2017
+
+Fix the issues:
+
+* Compatible with Arm Compute Library version 17.06
+* When OpenCL initialization fails, even if Caffe uses CPU-mode,it doesn't work properly.
+
+
+
+## CaffeOnACL Version 0.1.0 - Jun 2, 2017
+
+ Initial version supports 10 Layers accelerated by Arm Compute Library version 17.05 :
+
+* Convolution Layer
+* Pooling Layer
+* LRN Layer
+* ReLU Layer
+* Sigmoid Layer
+* Softmax Layer
+* TanH Layer
+* AbsVal Layer
+* BNLL Layer
+* InnerProduct Layer
diff --git a/acl_openailab/user_manual.pdf b/acl_openailab/user_manual.pdf
new file mode 100644
index 00000000..68f80a1e
--- /dev/null
+++ b/acl_openailab/user_manual.pdf
Binary files differ
diff --git a/docs/caffeOnACL_release_notes_0_2_0.docx b/docs/caffeOnACL_release_notes_0_2_0.docx
deleted file mode 100644
index 9f7786cd..00000000
--- a/docs/caffeOnACL_release_notes_0_2_0.docx
+++ /dev/null
Binary files differ
diff --git a/docs/caffeOnACL_user_guide_0_2_0.docx b/docs/caffeOnACL_user_guide_0_2_0.docx
deleted file mode 100644
index cf802b8b..00000000
--- a/docs/caffeOnACL_user_guide_0_2_0.docx
+++ /dev/null
Binary files differ