diff --git a/3rdparty/dmlc-core b/3rdparty/dmlc-core index 0a0e8addf92e..55f3c7bc1d87 160000 --- a/3rdparty/dmlc-core +++ b/3rdparty/dmlc-core @@ -1 +1 @@ -Subproject commit 0a0e8addf92e1287fd7a25c6314016b8c0138dee +Subproject commit 55f3c7bc1d875fbc7d34fc26651bb8c6818c8355 diff --git a/3rdparty/mkldnn b/3rdparty/mkldnn index a7c5f53832ac..722901c9aaef 160000 --- a/3rdparty/mkldnn +++ b/3rdparty/mkldnn @@ -1 +1 @@ -Subproject commit a7c5f53832acabade6e5086e72c960adedb3c38a +Subproject commit 722901c9aaefa579698df778d061d4848ab8c3e3 diff --git a/3rdparty/mshadow b/3rdparty/mshadow index 3dc80815d965..95ebe0f109ae 160000 --- a/3rdparty/mshadow +++ b/3rdparty/mshadow @@ -1 +1 @@ -Subproject commit 3dc80815d965b56b9a975dc27229361955bf66fe +Subproject commit 95ebe0f109ae021d0d66e2a627ccfc55c3253b55 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f974e8b987c..d8ef524bb389 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,8 +294,8 @@ else() add_definitions(-DMXNET_USE_NCCL=0) endif() +include(cmake/ChooseBlas.cmake) if(USE_CUDA AND FIRST_CUDA) - include(cmake/ChooseBlas.cmake) include(3rdparty/mshadow/cmake/Utils.cmake) include(cmake/FirstClassLangCuda.cmake) include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 9b145503ecc1..7a50f158a011 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + Contributors of Apache MXNet (incubating) ========================================= MXNet has been developed by a community of people who are interested in large-scale machine learning and deep learning. @@ -196,6 +213,8 @@ List of Contributors * [Piyush Ghai](https://github.com/piyushghai) * [Zach Boldyga](https://github.com/zboldyga) * [Neo Chien](https://github.com/cchung100m) +* [Gordon Reid](https://github.com/gordon1992) +* [Ming Yang](http://ufoym.com) Label Bot --------- diff --git a/KEYS b/KEYS index 03b3ed40ccf6..7b78ea97e3ea 100644 --- a/KEYS +++ b/KEYS @@ -599,3 +599,93 @@ a4LYL628Ksuv1Yxn/Uhb5nDPxU5RKRDeogn07wtaqSG12T9pcIwmExW1RN5kvXc2 3Os= =XL0V -----END PGP PUBLIC KEY BLOCK----- + +pub rsa2048 2019-02-15 [SC] [expires: 2021-02-14] + 0812952358B12DC30536E7E0C06916C3AB88ABFE +uid [ultimate] Qing Lan +sig 3 C06916C3AB88ABFE 2019-02-15 Qing Lan +sub rsa2048 2019-02-15 [E] [expires: 2021-02-14] +sig C06916C3AB88ABFE 2019-02-15 Qing Lan + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +44liPzisQFRxRFOwEubvmw== +=dQvb +-----END PGP PUBLIC KEY BLOCK----- diff --git a/MKLDNN_README.md b/MKLDNN_README.md index ecb721e5fffe..214fc83985fb 100644 --- a/MKLDNN_README.md +++ b/MKLDNN_README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # Build/Install MXNet with MKL-DNN A better training and inference performance is expected to be achieved on Intel-Architecture CPUs with MXNet built with [Intel MKL-DNN](https://github.com/intel/mkl-dnn) on multiple operating system, including Linux, Windows and MacOS. diff --git a/Makefile b/Makefile index cc7aebc9fb89..5c5e77fe3a58 100644 --- a/Makefile +++ b/Makefile @@ -489,7 +489,7 @@ build/plugin/%_gpu.o: plugin/%.cu $(CXX) -std=c++11 $(CFLAGS) -MM -MT build/plugin/$*_gpu.o $< >build/plugin/$*_gpu.d $(NVCC) -c -o $@ $(NVCCFLAGS) $(CUDA_ARCH) -Xcompiler "$(CFLAGS)" $< -build/plugin/%.o: plugin/%.cc +build/plugin/%.o: plugin/%.cc | mkldnn @mkdir -p $(@D) $(CXX) -std=c++11 -c $(CFLAGS) -MMD -c $< -o $@ @@ -607,11 +607,7 @@ rpkg: fi mkdir -p R-package/inst/include - cp -rf include/* R-package/inst/include - rm R-package/inst/include/dmlc - rm R-package/inst/include/nnvm - cp -rf 3rdparty/dmlc-core/include/* R-package/inst/include/ - cp -rf 3rdparty/tvm/nnvm/include/* R-package/inst/include + cp -rl include/* R-package/inst/include Rscript -e "if(!require(devtools)){install.packages('devtools', repo = 'https://cloud.r-project.org/')}" Rscript -e "if(!require(roxygen2)||packageVersion('roxygen2') < '6.1.1'){install.packages('roxygen2', repo = 'https://cloud.r-project.org/')}" Rscript -e "library(devtools); library(methods); options(repos=c(CRAN='https://cloud.r-project.org/')); install_deps(pkg='R-package', dependencies = TRUE)" @@ -620,7 +616,7 @@ rpkg: R CMD INSTALL R-package Rscript -e "require(mxnet); mxnet:::mxnet.export('R-package'); warnings()" rm R-package/NAMESPACE - Rscript -e "devtools::document('R-package'); warnings()" + Rscript -e "devtools::document('R-package');warnings()" R CMD INSTALL R-package rpkgtest: @@ -652,6 +648,7 @@ rclean: ifneq ($(EXTRA_OPERATORS),) clean: rclean cyclean $(EXTRA_PACKAGES_CLEAN) $(RM) -r build lib bin deps *~ */*~ */*/*~ */*/*/*~ + (cd scala-package && mvn clean) || true cd $(DMLC_CORE); $(MAKE) clean; cd - cd $(PS_PATH); $(MAKE) clean; cd - cd $(NNVM_PATH); $(MAKE) clean; cd - @@ -661,6 +658,7 @@ clean: rclean cyclean $(EXTRA_PACKAGES_CLEAN) else clean: rclean mkldnn_clean cyclean testclean $(EXTRA_PACKAGES_CLEAN) $(RM) -r build lib bin *~ */*~ */*/*~ */*/*/*~ + (cd scala-package && mvn clean) || true cd $(DMLC_CORE); $(MAKE) clean; cd - cd $(PS_PATH); $(MAKE) clean; cd - cd $(NNVM_PATH); $(MAKE) clean; cd - diff --git a/NEWS.md b/NEWS.md index f06cc35d8b0f..1af4b138e600 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + MXNet Change Log ================ diff --git a/README.md b/README.md index f5d40a6f656b..6a8ecdd99bd0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + +

diff --git a/amalgamation/README.md b/amalgamation/README.md index 3faf4d1e18a4..2ecf1626c1e7 100644 --- a/amalgamation/README.md +++ b/amalgamation/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + MXNet Amalgamation ================== This folder contains a amalgamation generation script to generate the entire mxnet library into one file. diff --git a/amalgamation/amalgamation.py b/amalgamation/amalgamation.py index a3c28f7118e9..0a4be02b8ff9 100644 --- a/amalgamation/amalgamation.py +++ b/amalgamation/amalgamation.py @@ -143,7 +143,12 @@ def expand(x, pending, stage): continue path = m.groups()[0] h = path.strip('./') if "../3rdparty/" not in path else path - source = find_source(h, x, stage) + if h.endswith('complex.h') and x.endswith('openblas_config.h'): + source = '' + elif h.startswith('ps/'): + source = '../3rdparty/ps-lite/include/' + h + else: + source = find_source(h, x, stage) if not source: if (h not in blacklist and h not in sysheaders and diff --git a/amalgamation/dmlc-minimum0.cc b/amalgamation/dmlc-minimum0.cc index 87e08d31c4d6..2fe629b20ed3 100644 --- a/amalgamation/dmlc-minimum0.cc +++ b/amalgamation/dmlc-minimum0.cc @@ -29,6 +29,7 @@ #include "../3rdparty/dmlc-core/src/io/local_filesys.cc" #include "../3rdparty/dmlc-core/src/data.cc" #include "../3rdparty/dmlc-core/src/io.cc" +#include "../3rdparty/dmlc-core/src/io/filesys.cc" #include "../3rdparty/dmlc-core/src/recordio.cc" diff --git a/amalgamation/mxnet_predict0.cc b/amalgamation/mxnet_predict0.cc index c4653d30dd3d..a18e28fd57de 100644 --- a/amalgamation/mxnet_predict0.cc +++ b/amalgamation/mxnet_predict0.cc @@ -43,25 +43,31 @@ #define DISABLE_OPENMP 1 #define DMLC_LOG_STACK_TRACE 0 +#include "src/common/utils.cc" #include "src/ndarray/ndarray_function.cc" #include "src/ndarray/ndarray.cc" #include "src/imperative/imperative.cc" +#include "src/imperative/imperative_utils.cc" #include "src/imperative/cached_op.cc" #include "src/engine/engine.cc" #include "src/engine/naive_engine.cc" +#include "src/engine/openmp.cc" #include "src/profiler/profiler.cc" +#include "src/profiler/aggregate_stats.cc" #include "src/executor/graph_executor.cc" #include "src/executor/attach_op_execs_pass.cc" #include "src/executor/attach_op_resource_pass.cc" #include "src/executor/inplace_addto_detect_pass.cc" +#include "src/executor/infer_graph_attr_pass.cc" #include "src/nnvm/legacy_json_util.cc" #include "src/nnvm/legacy_op_util.cc" +#include "src/nnvm/graph_editor.cc" #include "src/operator/operator.cc" #include "src/operator/operator_util.cc" @@ -93,4 +99,5 @@ #include "src/c_api/c_api_symbolic.cc" #include "src/c_api/c_api_ndarray.cc" #include "src/c_api/c_api_error.cc" +#include "src/c_api/c_api_profile.cc" diff --git a/amalgamation/prep_nnvm.sh b/amalgamation/prep_nnvm.sh index 8e30481d9ebf..a8f63b6b4b1a 100755 --- a/amalgamation/prep_nnvm.sh +++ b/amalgamation/prep_nnvm.sh @@ -40,7 +40,6 @@ echo '#define MSHADOW_FORCE_STREAM #include "mshadow/tensor.h" #include "mxnet/base.h" #include "dmlc/json.h" -#include "nnvm/tuple.h" #include "mxnet/tensor_blob.h"' > temp cat nnvm.cc >> temp mv temp ../../../../amalgamation/nnvm.cc diff --git a/ci/README.md b/ci/README.md index f56a6f6a7978..155a0104a125 100644 --- a/ci/README.md +++ b/ci/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # Containerized build & test utilities This folder contains scripts and dockerfiles used to build and test MXNet using diff --git a/ci/docker/install/docs_requirements b/ci/docker/install/docs_requirements index 4e3ce3e55e0b..3cfef1e33901 100644 --- a/ci/docker/install/docs_requirements +++ b/ci/docker/install/docs_requirements @@ -1,3 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# build and install are separated so changes to build don't invalidate +# the whole docker cache for the image + beautifulsoup4==4.6.3 breathe==4.10.0 cpplint==1.3.0 diff --git a/ci/docker/install/ubuntu_clojure.sh b/ci/docker/install/ubuntu_clojure.sh index 7a94cccae946..b20e35898552 100755 --- a/ci/docker/install/ubuntu_clojure.sh +++ b/ci/docker/install/ubuntu_clojure.sh @@ -27,3 +27,4 @@ echo 'Installing Clojure...' wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein chmod 775 lein sudo cp lein /usr/local/bin +echo "Y" | sudo lein downgrade 2.8.3 diff --git a/ci/docker/install/ubuntu_core.sh b/ci/docker/install/ubuntu_core.sh index fc903e5c8899..61a4637830da 100755 --- a/ci/docker/install/ubuntu_core.sh +++ b/ci/docker/install/ubuntu_core.sh @@ -35,9 +35,11 @@ apt-get install -y \ libatlas-base-dev \ libcurl4-openssl-dev \ libjemalloc-dev \ + libhdf5-dev \ liblapack-dev \ libopenblas-dev \ libopencv-dev \ + libturbojpeg \ libzmq3-dev \ ninja-build \ software-properties-common \ @@ -45,6 +47,11 @@ apt-get install -y \ unzip \ wget +# Use libturbojpeg package as it is correctly compiled with -fPIC flag +# https://github.com/HaxeFoundation/hashlink/issues/147 +ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so + + # Note: we specify an exact cmake version to work around a cmake 3.10 CUDA 10 issue. # Reference: https://github.com/clab/dynet/issues/1457 mkdir /opt/cmake && cd /opt/cmake diff --git a/ci/docker/qemu/README.md b/ci/docker/qemu/README.md index 1dcaa5aeb607..c06b34562b57 100644 --- a/ci/docker/qemu/README.md +++ b/ci/docker/qemu/README.md @@ -1 +1,18 @@ + + + + + + + + + + + + + + + + + These are files used in the docker container that runs QEMU diff --git a/ci/docker/runtime_functions.sh b/ci/docker/runtime_functions.sh index 63a2a1b43983..de1b7795ce69 100755 --- a/ci/docker/runtime_functions.sh +++ b/ci/docker/runtime_functions.sh @@ -292,6 +292,7 @@ build_centos7_cpu() { USE_BLAS=openblas \ USE_MKLDNN=0 \ USE_DIST_KVSTORE=1 \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -326,6 +327,7 @@ build_centos7_mkldnn() { USE_LAPACK=1 \ USE_LAPACK_PATH=/usr/lib64/liblapack.so \ USE_BLAS=openblas \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -365,6 +367,8 @@ build_ubuntu_cpu_openblas() { USE_BLAS=openblas \ USE_MKLDNN=0 \ USE_DIST_KVSTORE=1 \ + USE_LIBJPEG_TURBO=1 \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -380,6 +384,7 @@ build_ubuntu_cpu_mkl() { USE_MKLDNN=0 \ USE_INTEL_PATH=/opt/intel \ USE_DIST_KVSTORE=1 \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -510,6 +515,7 @@ build_ubuntu_cpu_clang39_mkldnn() { USE_CPP_PACKAGE=1 \ USE_BLAS=openblas \ USE_OPENMP=0 \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -526,6 +532,7 @@ build_ubuntu_cpu_clang60_mkldnn() { USE_CPP_PACKAGE=1 \ USE_BLAS=openblas \ USE_OPENMP=1 \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -539,6 +546,7 @@ build_ubuntu_cpu_mkldnn() { ENABLE_TESTCOVERAGE=1 \ USE_CPP_PACKAGE=1 \ USE_BLAS=openblas \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -552,6 +560,7 @@ build_ubuntu_cpu_mkldnn_mkl() { ENABLE_TESTCOVERAGE=1 \ USE_CPP_PACKAGE=1 \ USE_BLAS=mkl \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -635,6 +644,7 @@ build_ubuntu_gpu_mkldnn() { USE_CUDA_PATH=/usr/local/cuda \ USE_CUDNN=1 \ CUDA_ARCH="$CI_CUDA_COMPUTE_CAPABILITIES" \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -651,6 +661,7 @@ build_ubuntu_gpu_mkldnn_nocudnn() { USE_CUDA_PATH=/usr/local/cuda \ USE_CUDNN=0 \ CUDA_ARCH="$CI_CUDA_COMPUTE_CAPABILITIES" \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -669,6 +680,7 @@ build_ubuntu_gpu_cuda91_cudnn7() { USE_CPP_PACKAGE=1 \ USE_DIST_KVSTORE=1 \ CUDA_ARCH="$CI_CUDA_COMPUTE_CAPABILITIES" \ + USE_SIGNAL_HANDLER=1 \ -j$(nproc) } @@ -953,6 +965,7 @@ unittest_ubuntu_cpu_julia() { export PATH="$1/bin:$PATH" export MXNET_HOME='/work/mxnet' export JULIA_DEPOT_PATH='/work/julia-depot' + export INTEGRATION_TEST=1 julia -e 'using InteractiveUtils; versioninfo()' @@ -1020,8 +1033,6 @@ integrationtest_ubuntu_cpu_asan() { set -ex export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5 - # We do not want to fail the build on ASAN errors until memory leaks have been addressed. - export ASAN_OPTIONS=exitcode=0 cd /work/mxnet/build/cpp-package/example/ /work/mxnet/cpp-package/example/get_data.sh ./mlp_cpu diff --git a/ci/jenkins/Jenkins_steps.groovy b/ci/jenkins/Jenkins_steps.groovy index 5986eaf37ddc..cfbf484756e5 100644 --- a/ci/jenkins/Jenkins_steps.groovy +++ b/ci/jenkins/Jenkins_steps.groovy @@ -1028,7 +1028,7 @@ def test_unix_r_gpu() { def test_unix_julia07_cpu() { return ['Julia 0.7: CPU': { node(NODE_LINUX_CPU) { - ws('workspace/ut-julia07-cpu') { + ws('workspace/ut-it-julia07-cpu') { timeout(time: max_time, unit: 'MINUTES') { utils.unpack_and_init('cpu', mx_lib) utils.docker_run('ubuntu_cpu', 'unittest_ubuntu_cpu_julia07', false) @@ -1041,7 +1041,7 @@ def test_unix_julia07_cpu() { def test_unix_julia10_cpu() { return ['Julia 1.0: CPU': { node(NODE_LINUX_CPU) { - ws('workspace/ut-julia10-cpu') { + ws('workspace/ut-it-julia10-cpu') { timeout(time: max_time, unit: 'MINUTES') { utils.unpack_and_init('cpu', mx_lib) utils.docker_run('ubuntu_cpu', 'unittest_ubuntu_cpu_julia10', false) diff --git a/ci/jenkins/Jenkinsfile_windows_cpu b/ci/jenkins/Jenkinsfile_windows_cpu index 5bc40d625930..01ca673433f6 100644 --- a/ci/jenkins/Jenkinsfile_windows_cpu +++ b/ci/jenkins/Jenkinsfile_windows_cpu @@ -34,14 +34,14 @@ utils.assign_node_labels(utility: 'utility', windows_cpu: 'mxnetwindows-cpu') utils.main_wrapper( core_logic: { utils.parallel_stage('Build', [ - custom_steps.compile_windows_cpu() + // custom_steps.compile_windows_cpu() ]) utils.parallel_stage('Tests', [ - custom_steps.test_windows_python2_cpu(), - custom_steps.test_windows_python3_cpu(), - custom_steps.test_windows_julia07_cpu(), - custom_steps.test_windows_julia10_cpu() + // custom_steps.test_windows_python2_cpu(), + // custom_steps.test_windows_python3_cpu(), + // custom_steps.test_windows_julia07_cpu(), + // custom_steps.test_windows_julia10_cpu() ]) } , diff --git a/ci/jenkins/Jenkinsfile_windows_gpu b/ci/jenkins/Jenkinsfile_windows_gpu index 2319f25942de..b3447b960b22 100644 --- a/ci/jenkins/Jenkinsfile_windows_gpu +++ b/ci/jenkins/Jenkinsfile_windows_gpu @@ -34,14 +34,14 @@ utils.assign_node_labels(utility: 'utility', windows_cpu: 'mxnetwindows-cpu', wi utils.main_wrapper( core_logic: { utils.parallel_stage('Build', [ - custom_steps.compile_windows_gpu(), - custom_steps.compile_windows_gpu_mkldnn() + // custom_steps.compile_windows_gpu(), + // custom_steps.compile_windows_gpu_mkldnn() ]) utils.parallel_stage('Tests', [ - custom_steps.test_windows_python2_gpu(), - custom_steps.test_windows_python3_gpu(), - custom_steps.test_windows_python3_gpu_mkldnn() + // custom_steps.test_windows_python2_gpu(), + // custom_steps.test_windows_python3_gpu(), + // custom_steps.test_windows_python3_gpu_mkldnn() ]) } , diff --git a/ci/publish/README.md b/ci/publish/README.md index f1ece6f84097..cdd70ce82258 100644 --- a/ci/publish/README.md +++ b/ci/publish/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # MXNet Publish Settings This folder contains the configuration for restricted nodes on Jenkins for the publishing MXNet artifacts. It also contains a folder called `scala` that contains everything required for publishing to Maven. In this `README`, we provide a brief walkthrough of the Jenkins configuration as well as the usage of the Scala deployment files. Python publishing is TBD. diff --git a/ci/qemu/README.md b/ci/qemu/README.md index 6dde8916b28c..498f8b7a8739 100644 --- a/ci/qemu/README.md +++ b/ci/qemu/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # QEMU base image creation This folder contains scripts and configuration to create a QEMU virtual drive with a debian system. diff --git a/contrib/clojure-package/README.md b/contrib/clojure-package/README.md index 840c15e75033..7566ade66ce8 100644 --- a/contrib/clojure-package/README.md +++ b/contrib/clojure-package/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # Clojure MXNet A Clojure Package Built on the MXNet Deep Learning Library diff --git a/contrib/clojure-package/examples/captcha/README.md b/contrib/clojure-package/examples/captcha/README.md index 6b593b2f1c65..be71e07b2120 100644 --- a/contrib/clojure-package/examples/captcha/README.md +++ b/contrib/clojure-package/examples/captcha/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # Captcha This is the clojure version of [captcha recognition](https://github.com/xlvector/learning-dl/tree/master/mxnet/ocr) diff --git a/contrib/clojure-package/examples/cnn-text-classification/README.md b/contrib/clojure-package/examples/cnn-text-classification/README.md index 19bb9137334b..f2ed939bee16 100644 --- a/contrib/clojure-package/examples/cnn-text-classification/README.md +++ b/contrib/clojure-package/examples/cnn-text-classification/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # cnn-text-classification An example of text classification using CNN diff --git a/contrib/clojure-package/examples/gan/README.md b/contrib/clojure-package/examples/gan/README.md index 2b46a6cf3e83..9c4bea8ed586 100644 --- a/contrib/clojure-package/examples/gan/README.md +++ b/contrib/clojure-package/examples/gan/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # gan This is an example of how to do a GAN with the MNIST data diff --git a/contrib/clojure-package/examples/imclassification/README.md b/contrib/clojure-package/examples/imclassification/README.md index 4677f289d7e0..06ae9461816e 100644 --- a/contrib/clojure-package/examples/imclassification/README.md +++ b/contrib/clojure-package/examples/imclassification/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # imclassification This shows off how to do image classification with the module api diff --git a/contrib/clojure-package/examples/infer/imageclassifier/README.md b/contrib/clojure-package/examples/infer/imageclassifier/README.md index a8328607c9a2..ef82feebd53f 100644 --- a/contrib/clojure-package/examples/infer/imageclassifier/README.md +++ b/contrib/clojure-package/examples/infer/imageclassifier/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # imageclassifier Run image classification using clojure infer package. diff --git a/contrib/clojure-package/examples/infer/objectdetector/README.md b/contrib/clojure-package/examples/infer/objectdetector/README.md index ec092a296a96..3a38e7d3907e 100644 --- a/contrib/clojure-package/examples/infer/objectdetector/README.md +++ b/contrib/clojure-package/examples/infer/objectdetector/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # objectdetector Run object detection on images using clojure infer package. diff --git a/contrib/clojure-package/examples/infer/predictor/README.md b/contrib/clojure-package/examples/infer/predictor/README.md index 9ca71cf469a0..9a844c4b9353 100644 --- a/contrib/clojure-package/examples/infer/predictor/README.md +++ b/contrib/clojure-package/examples/infer/predictor/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # predictor Run model prediction using clojure infer package. diff --git a/contrib/clojure-package/examples/module/README.md b/contrib/clojure-package/examples/module/README.md index 1b08a52f7db3..fcd16b74a173 100644 --- a/contrib/clojure-package/examples/module/README.md +++ b/contrib/clojure-package/examples/module/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + ## Instructions This shows off how to use the module api. diff --git a/contrib/clojure-package/examples/multi-label/README.md b/contrib/clojure-package/examples/multi-label/README.md index 27a8c1ff01ff..aebb83be985d 100644 --- a/contrib/clojure-package/examples/multi-label/README.md +++ b/contrib/clojure-package/examples/multi-label/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # multi-label This is a quick example of doing multi-label classification. diff --git a/contrib/clojure-package/examples/neural-style/README.md b/contrib/clojure-package/examples/neural-style/README.md index e05c31552dcd..209e56ae20d2 100644 --- a/contrib/clojure-package/examples/neural-style/README.md +++ b/contrib/clojure-package/examples/neural-style/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # neural-style An example of neural style transfer diff --git a/contrib/clojure-package/examples/pre-trained-models/README.md b/contrib/clojure-package/examples/pre-trained-models/README.md index b0996da69a10..e1aefbca0c5b 100644 --- a/contrib/clojure-package/examples/pre-trained-models/README.md +++ b/contrib/clojure-package/examples/pre-trained-models/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # pre-trained-models This shows examples of how to use the pretrained models. MXNet comes with a number of pretrained models diff --git a/contrib/clojure-package/examples/profiler/README.md b/contrib/clojure-package/examples/profiler/README.md index d8a98d35dbe3..8ab37d713c09 100644 --- a/contrib/clojure-package/examples/profiler/README.md +++ b/contrib/clojure-package/examples/profiler/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # profiler An example of using the profiler. diff --git a/contrib/clojure-package/examples/rnn/README.md b/contrib/clojure-package/examples/rnn/README.md index cad3909447b1..640b63d43f10 100644 --- a/contrib/clojure-package/examples/rnn/README.md +++ b/contrib/clojure-package/examples/rnn/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # rnn diff --git a/contrib/clojure-package/examples/tutorial/README.md b/contrib/clojure-package/examples/tutorial/README.md index cd19eb232760..54f05b36f800 100644 --- a/contrib/clojure-package/examples/tutorial/README.md +++ b/contrib/clojure-package/examples/tutorial/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # tutorial Tutorials are based on the Scala api examples here https://mxnet.incubator.apache.org/api/scala/ndarray.html diff --git a/contrib/clojure-package/examples/visualization/README.md b/contrib/clojure-package/examples/visualization/README.md index 8c6e2c2b3b79..0638d9c49c5d 100644 --- a/contrib/clojure-package/examples/visualization/README.md +++ b/contrib/clojure-package/examples/visualization/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # visualization Run `lein run` to have a sample network visualization printed for you diff --git a/contrib/clojure-package/integration-tests.sh b/contrib/clojure-package/integration-tests.sh index ce480a507f92..3f80ea5fb29a 100755 --- a/contrib/clojure-package/integration-tests.sh +++ b/contrib/clojure-package/integration-tests.sh @@ -26,7 +26,7 @@ lein install # then run through the examples EXAMPLES_HOME=${MXNET_HOME}/contrib/clojure-package/examples # use AWK pattern for blacklisting -TEST_CASES=`find ${EXAMPLES_HOME} -name test | awk '!/dontselect1|dontselect2/'` +TEST_CASES=`find ${EXAMPLES_HOME} -name test | awk '!/dontselect1|cnn-text-classification/'` for i in $TEST_CASES ; do cd ${i} && lein test -done \ No newline at end of file +done diff --git a/contrib/clojure-package/project.clj b/contrib/clojure-package/project.clj index 61d39e28a1d6..e2b999df84d6 100644 --- a/contrib/clojure-package/project.clj +++ b/contrib/clojure-package/project.clj @@ -36,7 +36,7 @@ [org.apache.logging.log4j/log4j-api "2.8.1"] [org.slf4j/slf4j-log4j12 "1.7.25" :exclusions [org.slf4j/slf4j-api]]] :pedantic? :skip - :plugins [[lein-codox "0.10.3" :exclusions [org.clojure/clojure]] + :plugins [[lein-codox "0.10.6" :exclusions [org.clojure/clojure]] [lein-cloverage "1.0.10" :exclusions [org.clojure/clojure]] [lein-cljfmt "0.5.7"]] :codox {:namespaces [#"^org\.apache\.clojure-mxnet\.(?!gen).*"]} diff --git a/contrib/clojure-package/src/org/apache/clojure_mxnet/image.clj b/contrib/clojure-package/src/org/apache/clojure_mxnet/image.clj index e2e87ed47e2f..7fb603e500b9 100644 --- a/contrib/clojure-package/src/org/apache/clojure_mxnet/image.clj +++ b/contrib/clojure-package/src/org/apache/clojure_mxnet/image.clj @@ -16,6 +16,7 @@ ;; (ns org.apache.clojure-mxnet.image + "Image API of Clojure package." (:require [t6.from-scala.core :refer [$ $$] :as $] [org.apache.clojure-mxnet.dtype :as dtype] [org.apache.clojure-mxnet.ndarray :as ndarray] @@ -37,7 +38,18 @@ (s/keys :opt-un [::color-flag ::to-rgb ::output])) (defn decode-image - "Decodes an image from an input stream" + "Decodes an image from an input stream with OpenCV + `input-stream`: `InputStream` - Contains the binary encoded image + `color-flag`: 0 or 1 - Convert decoded image to grayscale (0) or color (1) + `to-rgb`: boolean - Whether to convert decoded image to mxnet's default RGB + format (instead of opencv's default BGR) + `output`: nil or `NDArray` + returns: `NDArray` with dtype uint8 + + Ex: + (decode-image input-stream) + (decode-image input-stream {:color-flag 1}) + (decode-image input-stream {:color-flag 0 :output nd})" ([input-stream {:keys [color-flag to-rgb output] :or {color-flag COLOR to-rgb true output nil} :as opts}] @@ -54,7 +66,19 @@ (s/or :none nil? :some ::to-rgb)) (defn read-image - "Reads an image file and returns an ndarray" + "Reads an image file and returns an ndarray with OpenCV. It returns image in + RGB by default instead of OpenCV's default BGR. + `filename`: string - Name of the image file to be loaded + `color-flag`: 0 or 1 - Convert decoded image to grayscale (0) or color (1) + `to-rgb`: boolean - Whether to convert decoded image to mxnet's default RGB + format (instead of opencv's default BGR) + `output`: nil or `NDArray` + returns: `NDArray` with dtype uint8 + + Ex: + (read-image \"cat.jpg\") + (read-image \"cat.jpg\" {:color-flag 0}) + (read-image \"cat.jpg\" {:color-flag 1 :output nd})" ([filename {:keys [color-flag to-rgb output] :or {color-flag nil to-rgb nil output nil} :as opts}] @@ -74,7 +98,17 @@ (s/def ::optional-int (s/or :none nil? :some int?)) (defn resize-image - "Resizes the image array to (width, height)" + "Resizes the image array to (width, height) + `input`: `NDArray` - source image in NDArray + `w`: int - Width of resized image + `h`: int - Height of resized image + `interpolation`: Interpolation method. Default is INTER_LINEAR + `ouput`: nil or `NDArray` + returns: `NDArray` + + Ex: + (resize-image nd-img 300 300) + (resize-image nd-img 28 28 {:output nd})" ([input w h {:keys [interpolation output] :or {interpolation nil output nil} :as opts}] @@ -88,7 +122,21 @@ (resize-image input w h {}))) (defn apply-border - "Pad image border" + "Pad image border with OpenCV. + `input`: `NDArray` - source image in NDArray + `top`: int - Top margin + `bottom`: int - Bottom margin + `left`: int - Left margin + `right`: int - Right margin + `fill-type`: nil or Filling type - Default BORDER_CONSTANT + `value`: nil or double - Deprecated, use `values` instead + `values`: Fill with value(RGB or gray), up to 4 channels + `output`: nil or `NDArray` + returns: `NDArray` + + Ex: + (apply-border img-nd 1 1 1 1) + (apply-border img-nd 3 3 0 0)" ([input top bottom left right {:keys [fill-type value values output] :or {fill-type nil value nil values nil output nil} @@ -109,7 +157,17 @@ (apply-border input top bottom left right {}))) (defn fixed-crop - "Return a fixed crop of the image" + "Return a fixed crop of the image. + `input`: `NDArray` - Source image in NDArray + `x0`: int - Starting x point + `y0`: int - Starting y point + `w`: int - Width of the image + `h`: int - Height of the image + returns: cropped `NDArray` + + Ex: + (fixed-crop nd-img 0 0 28 28) + (fixed-crop nd-img 10 0 100 300)" [input x0 y0 w h] (util/validate! ::ndarray input "Invalid input array") (util/validate! ::int x0 "Invalid starting x coordinate") @@ -119,7 +177,9 @@ (Image/fixedCrop input x0 y0 w h)) (defn rgb-array? - "Returns whether the ndarray is in the RGB format" + "Returns whether the ndarray is in the RGB format + `input`: `NDArray` - Source image in NDArray + returns: boolean" [input] (util/validate! ::ndarray input "Invalid input array") (let [shape (ndarray/shape-vec input)] @@ -133,7 +193,9 @@ (s/and ::ndarray ::all-bytes ::rgb-array)) (defn to-image - "Convert a NDArray image in RGB format to a real image" + "Convert a NDArray image in RGB format to a real image. + `input`: `NDArray` - Source image in NDArray + returns: `BufferedImage`" [input] (util/validate! ::to-image-ndarray input "Invalid input array") (Image/toImage input)) diff --git a/contrib/clojure-package/testing.md b/contrib/clojure-package/testing.md index 8f87c2a76e81..0e87790686f0 100644 --- a/contrib/clojure-package/testing.md +++ b/contrib/clojure-package/testing.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + ## Help with Testing If you want to give the repo a spin and help make it stable and ready for prime time that would be awesome. diff --git a/cpp-package/README.md b/cpp-package/README.md index 45941555b21c..165a65eaac6a 100644 --- a/cpp-package/README.md +++ b/cpp-package/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # MXNet C++ Package The MXNet C++ Package provides C++ API bindings to the users of MXNet. Currently, these bindings are not available as standalone package. diff --git a/cpp-package/example/README.md b/cpp-package/example/README.md index 724478f3d68f..555316dd1ac3 100644 --- a/cpp-package/example/README.md +++ b/cpp-package/example/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # MXNet C++ Package Examples ## Building C++ examples diff --git a/cpp-package/example/alexnet.cpp b/cpp-package/example/alexnet.cpp index 1c0f7130d974..e2083a0dfa0a 100644 --- a/cpp-package/example/alexnet.cpp +++ b/cpp-package/example/alexnet.cpp @@ -319,6 +319,7 @@ int main(int argc, char const *argv[]) { } /*don't foget to release the executor*/ delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/charRNN.cpp b/cpp-package/example/charRNN.cpp index 54b8eea7af39..8951580067a8 100644 --- a/cpp-package/example/charRNN.cpp +++ b/cpp-package/example/charRNN.cpp @@ -500,6 +500,9 @@ void train(const std::string file, int batch_size, int max_epoch, int start_epoc std::string filepath = prefix + "-" + std::to_string(epoch) + ".params"; SaveCheckpoint(filepath, RNN, exe); } + + delete exe; + delete opt; } /*The original example, rnn_cell_demo.py, uses default Xavier as initalizer, which relies on @@ -577,6 +580,9 @@ void trainWithBuiltInRNNOp(const std::string file, int batch_size, int max_epoch std::string filepath = prefix + "-" + std::to_string(epoch) + ".params"; SaveCheckpoint(filepath, RNN, exe); } + + delete exe; + delete opt; } void predict(std::wstring* ptext, int sequence_length, const std::string param_file, @@ -639,6 +645,8 @@ void predict(std::wstring* ptext, int sequence_length, const std::string param_f next = charIndices[n]; ptext->push_back(next); } + + delete exe; } void predictWithBuiltInRNNOp(std::wstring* ptext, int sequence_length, const std::string param_file, @@ -693,6 +701,8 @@ void predictWithBuiltInRNNOp(std::wstring* ptext, int sequence_length, const std next = charIndices[n]; ptext->push_back(next); } + + delete exe; } int main(int argc, char** argv) { diff --git a/cpp-package/example/feature_extract/README.md b/cpp-package/example/feature_extract/README.md index 87cfcb4021f0..0b94bef7705f 100644 --- a/cpp-package/example/feature_extract/README.md +++ b/cpp-package/example/feature_extract/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + This example shows how to extract features with a pretrained model. Execute `run.sh` to: diff --git a/cpp-package/example/googlenet.cpp b/cpp-package/example/googlenet.cpp index c8078afd0af4..26ba51027db6 100644 --- a/cpp-package/example/googlenet.cpp +++ b/cpp-package/example/googlenet.cpp @@ -190,6 +190,7 @@ int main(int argc, char const *argv[]) { } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/inception_bn.cpp b/cpp-package/example/inception_bn.cpp index 456e0d913475..2073ebe47fbc 100644 --- a/cpp-package/example/inception_bn.cpp +++ b/cpp-package/example/inception_bn.cpp @@ -232,6 +232,7 @@ int main(int argc, char const *argv[]) { LG << "Validation Accuracy: " << val_acc.Get(); } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/inference/README.md b/cpp-package/example/inference/README.md index efd2357570c8..865388b549db 100644 --- a/cpp-package/example/inference/README.md +++ b/cpp-package/example/inference/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # MXNet C++ Package Inference Workflow Examples ## Building C++ Inference examples diff --git a/cpp-package/example/lenet.cpp b/cpp-package/example/lenet.cpp index 83c659c7082b..42594548130a 100644 --- a/cpp-package/example/lenet.cpp +++ b/cpp-package/example/lenet.cpp @@ -173,6 +173,7 @@ class Lenet { << ", accuracy: " << ValAccuracy(batch_size * 10, lenet); } delete exe; + delete opt; } private: diff --git a/cpp-package/example/lenet_with_mxdataiter.cpp b/cpp-package/example/lenet_with_mxdataiter.cpp index 39550a3e9e65..33110fee3a88 100644 --- a/cpp-package/example/lenet_with_mxdataiter.cpp +++ b/cpp-package/example/lenet_with_mxdataiter.cpp @@ -177,6 +177,7 @@ int main(int argc, char const *argv[]) { } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/mlp.cpp b/cpp-package/example/mlp.cpp index cc16f53cf205..c3760fd3c846 100644 --- a/cpp-package/example/mlp.cpp +++ b/cpp-package/example/mlp.cpp @@ -49,7 +49,7 @@ void OutputAccuracy(mx_float* pred, mx_float* target) { std::cout << "Accuracy: " << right / 128.0 << std::endl; } -void MLP() { +void MLP(int max_epoch) { auto sym_x = Symbol::Variable("X"); auto sym_label = Symbol::Variable("label"); @@ -144,7 +144,6 @@ void MLP() { grad_req_type, aux_states); std::cout << "Training" << std::endl; - int max_epoch = 15000; mx_float learning_rate = 0.0001; for (int epoch_num = 0; epoch_num < max_epoch; ++epoch_num) { exe->Forward(true); @@ -173,8 +172,8 @@ void MLP() { } int main(int argc, char** argv) { - MLP(); + int max_epoch = argc > 1 ? strtol(argv[1], NULL, 10) : 15000; + MLP(max_epoch); MXNotifyShutdown(); return 0; } - diff --git a/cpp-package/example/mlp_cpu.cpp b/cpp-package/example/mlp_cpu.cpp index 93eaf0538269..5d46d40e421f 100644 --- a/cpp-package/example/mlp_cpu.cpp +++ b/cpp-package/example/mlp_cpu.cpp @@ -139,6 +139,7 @@ int main(int argc, char** argv) { } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/mlp_csv.cpp b/cpp-package/example/mlp_csv.cpp index 43a14c84e6d8..f12b7c17133d 100644 --- a/cpp-package/example/mlp_csv.cpp +++ b/cpp-package/example/mlp_csv.cpp @@ -267,6 +267,7 @@ int main(int argc, char** argv) { } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/mlp_gpu.cpp b/cpp-package/example/mlp_gpu.cpp index 0befde8ae4bc..f6060209a51e 100644 --- a/cpp-package/example/mlp_gpu.cpp +++ b/cpp-package/example/mlp_gpu.cpp @@ -155,6 +155,7 @@ int main(int argc, char** argv) { } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/resnet.cpp b/cpp-package/example/resnet.cpp index 7c9dd4daa55a..7200bd42d2de 100644 --- a/cpp-package/example/resnet.cpp +++ b/cpp-package/example/resnet.cpp @@ -242,6 +242,7 @@ int main(int argc, char const *argv[]) { LG << "Validation Accuracy: " << val_acc.Get(); } delete exec; + delete opt; MXNotifyShutdown(); return 0; } diff --git a/cpp-package/example/test_optimizer.cpp b/cpp-package/example/test_optimizer.cpp index 42547ea6c7c9..70190eff5dc6 100644 --- a/cpp-package/example/test_optimizer.cpp +++ b/cpp-package/example/test_optimizer.cpp @@ -30,6 +30,7 @@ int main(int argc, char** argv) { opt = OptimizerRegistry::Find("adam"); int ret = (opt == 0) ? 1 : 0; + delete opt; MXNotifyShutdown(); return ret; } diff --git a/cpp-package/example/test_score.cpp b/cpp-package/example/test_score.cpp index 7e5096abb816..687683f487f8 100644 --- a/cpp-package/example/test_score.cpp +++ b/cpp-package/example/test_score.cpp @@ -156,6 +156,7 @@ int main(int argc, char** argv) { } delete exec; + delete opt; MXNotifyShutdown(); return score >= MIN_SCORE ? 0 : 1; } diff --git a/cpp-package/tests/ci_test.sh b/cpp-package/tests/ci_test.sh index 7abdef481ec9..18fabea7a7f9 100755 --- a/cpp-package/tests/ci_test.sh +++ b/cpp-package/tests/ci_test.sh @@ -25,22 +25,22 @@ ls -l ../../lib/ ./get_data.sh cp ../../build/cpp-package/example/lenet . -./lenet 10 +./lenet 1 cp ../../build/cpp-package/example/alexnet . ./alexnet 1 cp ../../build/cpp-package/example/lenet_with_mxdataiter . -./lenet_with_mxdataiter 5 +./lenet_with_mxdataiter 1 cp ../../build/cpp-package/example/resnet . -./resnet 5 +./resnet 1 cp ../../build/cpp-package/example/inception_bn . -./inception_bn 5 +./inception_bn 1 cp ../../build/cpp-package/example/mlp . -./mlp +./mlp 150 cp ../../build/cpp-package/example/mlp_cpu . ./mlp_cpu diff --git a/dev_menu.py b/dev_menu.py index 7329b446ed34..1fda4c7aabca 100755 --- a/dev_menu.py +++ b/dev_menu.py @@ -118,10 +118,13 @@ def create_virtualenv_default(): ('[Local] Python Unit tests', "./py3_venv/bin/nosetests -v tests/python/unittest/" ), - ('[Website and docs build] Will build to docs/_build/html/', - "ci/docker/runtime_functions.sh deploy_docs"), - ('[Docker] sanity_check. Check for linting and code formatting.', - "ci/build.py --platform ubuntu_cpu /work/runtime_functions.sh sanity_check"), + ('[Docker] Website and docs build outputs to "docs/_build/html/"', + "ci/build.py --platform ubuntu_cpu /work/runtime_functions.sh deploy_docs"), + ('[Docker] sanity_check. Check for linting and code formatting and licenses.', + [ + "ci/build.py --platform ubuntu_cpu /work/runtime_functions.sh sanity_check", + "ci/build.py --platform ubuntu_cpu /work/runtime_functions.sh nightly_test_rat_check", + ]), ('[Docker] Python3 CPU unittests', [ "ci/build.py --platform ubuntu_cpu /work/runtime_functions.sh build_ubuntu_cpu_openblas", diff --git a/docker/Dockerfiles/Dockerfile.in.julia b/docker/Dockerfiles/Dockerfile.in.julia index 42422ddbed54..794f958c9c09 100644 --- a/docker/Dockerfiles/Dockerfile.in.julia +++ b/docker/Dockerfiles/Dockerfile.in.julia @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # part of the dockerfile to install the julia binding COPY install/julia.sh install/ diff --git a/docker/Dockerfiles/Dockerfile.in.lib.cpu b/docker/Dockerfiles/Dockerfile.in.lib.cpu index 002e2d1e4209..c6de40c5cea3 100644 --- a/docker/Dockerfiles/Dockerfile.in.lib.cpu +++ b/docker/Dockerfiles/Dockerfile.in.lib.cpu @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # dockerfile to build libmxnet.so on CPU FROM ubuntu:14.04 diff --git a/docker/Dockerfiles/Dockerfile.in.lib.gpu b/docker/Dockerfiles/Dockerfile.in.lib.gpu index c7c86a2cf8cd..03b920a685ff 100644 --- a/docker/Dockerfiles/Dockerfile.in.lib.gpu +++ b/docker/Dockerfiles/Dockerfile.in.lib.gpu @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # dockerfile to build libmxnet.so on GPU FROM nvidia/cuda:8.0-cudnn5-devel diff --git a/docker/Dockerfiles/Dockerfile.in.perl b/docker/Dockerfiles/Dockerfile.in.perl index 14b4f0194d6e..6e801dcc48c3 100644 --- a/docker/Dockerfiles/Dockerfile.in.perl +++ b/docker/Dockerfiles/Dockerfile.in.perl @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # part of the dockerfile to install the perl binding COPY install/perl.sh install/ diff --git a/docker/Dockerfiles/Dockerfile.in.python b/docker/Dockerfiles/Dockerfile.in.python index b7979b231d7d..aa8bb2748d7f 100644 --- a/docker/Dockerfiles/Dockerfile.in.python +++ b/docker/Dockerfiles/Dockerfile.in.python @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # part of the dockerfile to install the python binding COPY install/python.sh install/ diff --git a/docker/Dockerfiles/Dockerfile.in.r-lang b/docker/Dockerfiles/Dockerfile.in.r-lang index 321094ec6c63..33f6f3533c18 100644 --- a/docker/Dockerfiles/Dockerfile.in.r-lang +++ b/docker/Dockerfiles/Dockerfile.in.r-lang @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # part of the dockerfile to install the r binding COPY install/r.sh install/ diff --git a/docker/Dockerfiles/Dockerfile.in.scala b/docker/Dockerfiles/Dockerfile.in.scala index 92e098384e13..ee1b96240a25 100644 --- a/docker/Dockerfiles/Dockerfile.in.scala +++ b/docker/Dockerfiles/Dockerfile.in.scala @@ -1,4 +1,23 @@ # -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# # part of the dockerfile to install the scala binding COPY install/scala.sh install/ diff --git a/docker/Dockerfiles/Dockerfile.tensorrt b/docker/Dockerfiles/Dockerfile.tensorrt index 2e95a7618360..f5603e7c1e59 100644 --- a/docker/Dockerfiles/Dockerfile.tensorrt +++ b/docker/Dockerfiles/Dockerfile.tensorrt @@ -1,4 +1,5 @@ # -*- mode: dockerfile -*- +# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +17,7 @@ # specific language governing permissions and limitations # under the License. # +# # Dockerfile to run MXNet with TensorRT Integration. FROM nvidia/cuda:9.0-cudnn7-devel diff --git a/docker/Dockerfiles/License.md b/docker/Dockerfiles/License.md deleted file mode 100644 index 614c582aefa8..000000000000 --- a/docker/Dockerfiles/License.md +++ /dev/null @@ -1,20 +0,0 @@ -## Dockerfiles License - -### All Dockerfiles in this directory are provided under an Apache 2.0 license. - -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. \ No newline at end of file diff --git a/docker/README.md b/docker/README.md index 971a2de7894c..3aa50eccd89d 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,3 +1,22 @@ + + # Docker images for MXNET ## How to use diff --git a/docker/docker-python/README.md b/docker/docker-python/README.md index f806d5d6f459..6d17c50439ae 100644 --- a/docker/docker-python/README.md +++ b/docker/docker-python/README.md @@ -1,38 +1,57 @@ + + # Release Python Docker Images for MXNet -The `docker-python` directory can be used to release mxnet python docker images to dockerhub after any mxnet release. +The `docker-python` directory can be used to release mxnet python docker images to dockerhub after any mxnet release. It uses the appropriate pip binaries to build different docker images as - * cpu * cpu_mkl * latest (same as cpu) -* gpu_cu90 +* gpu_cu90 * gpu_cu90_mkl * gpu (same as gpu_cu90) -* gpu_cu80 +* gpu_cu80 * gpu_cu80_mkl -* gpu_cu92 +* gpu_cu92 * gpu_cu92_mkl -** Note: If you want to use a different pip binary (specific mxnet or cuda version, etc), you can edit the last line of the cpu or gpu dockerfile as required. +** Note: If you want to use a different pip binary (specific mxnet or cuda version, etc), you can edit the last line of the cpu or gpu dockerfile as required. Refer: https://pypi.org/project/mxnet/ ### Usage `./build_python_dockerfile.sh ` -For example: +For example: `./build_python_dockerfile.sh 1.3.0 ~/build-docker/incubator-mxnet` -** Note: The build script picks up the latest pip binaries. This means it uses the latest released mxnet version. The version specified as a parameter to the script is only used to tag the built image correctly. +** Note: The build script picks up the latest pip binaries. This means it uses the latest released mxnet version. The version specified as a parameter to the script is only used to tag the built image correctly. ### Tests run * [test_conv.py](https://github.com/apache/incubator-mxnet/blob/master/tests/python/train/test_conv.py) * [train_mnist.py](https://github.com/apache/incubator-mxnet/blob/master/example/image-classification/train_mnist.py) -* [test_mxnet.py](https://github.com/apache/incubator-mxnet/blob/master/docker/docker-python/test_mxnet.py): This script is used to make sure that the docker image builds the expected mxnet version. That is, the version picked by pip is the same as as the version passed as a parameter. +* [test_mxnet.py](https://github.com/apache/incubator-mxnet/blob/master/docker/docker-python/test_mxnet.py): This script is used to make sure that the docker image builds the expected mxnet version. That is, the version picked by pip is the same as as the version passed as a parameter. ### Dockerhub Credentials -Dockerhub credentials will be required to push images at the end of this script. +Dockerhub credentials will be required to push images at the end of this script. Credentials can be provided in the following ways: * **Interactive Login:** Run the script as is and it will ask you for credentials interactively. * **Be Already Logged in:** Login to the mxnet dockerhub account before you run the build script and the script will complete build, test and push. diff --git a/docs/Dockerfile b/docs/Dockerfile index 99bb3d5be492..61a1e5f915e2 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -1,3 +1,23 @@ +# -*- mode: dockerfile -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# FROM ubuntu:14.04 MAINTAINER Mu Li diff --git a/docs/README.md b/docs/README.md index 80463cc68d54..c0b40362b7e2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,20 @@ + + + + + + + + + + + + + + + + + # Building and Updating MXNet Documentation The website is hosted at http://mxnet.incubator.apache.org/. diff --git a/docs/_static/js/options.js b/docs/_static/js/options.js index f4fde4e1f2ef..ec3977601c92 100644 --- a/docs/_static/js/options.js +++ b/docs/_static/js/options.js @@ -1,8 +1,9 @@ + /*! * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file + * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at @@ -18,7 +19,7 @@ */ /* Installation page display functions for install selector */ -var versionSelect = defaultVersion = 'v1.3.1'; +var versionSelect = defaultVersion = 'v1.4.0'; var platformSelect = 'Linux'; var languageSelect = 'Python'; var processorSelect = 'CPU'; diff --git a/docs/_static/mxnet-theme/index.html b/docs/_static/mxnet-theme/index.html index 302b1732233d..34f675853924 100644 --- a/docs/_static/mxnet-theme/index.html +++ b/docs/_static/mxnet-theme/index.html @@ -23,9 +23,9 @@
-

MXNet 1.3.1 Released

-

This release includes bug fixes, performance improvements, and documentation updates.

- Learn More +

MXNet 1.4.0 Released

+

This release introduces the Java Inference API and Julia API, as well as Control Flow Operators, MKLDNN optimizations, and SVRG optimization.

+ Learn More

A 60-minute Gluon Crash Course

diff --git a/docs/_static/mxnet-theme/navbar.html b/docs/_static/mxnet-theme/navbar.html index 50c3debba395..d39582ecccae 100644 --- a/docs/_static/mxnet-theme/navbar.html +++ b/docs/_static/mxnet-theme/navbar.html @@ -23,11 +23,11 @@

  • Python
  • C++
  • Clojure
  • +
  • Java
  • Julia
  • Perl
  • R
  • Scala
  • -
  • Java
  • @@ -77,11 +77,11 @@

  • Python
  • C++
  • Clojure
  • +
  • Java
  • Julia
  • Perl
  • R
  • Scala
  • -
  • Java