You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by ib...@apache.org on 2019/12/17 12:58:37 UTC

[incubator-mxnet] branch v1.5.x updated: backport Julia patches to v1.5.x (#16142)

This is an automated email from the ASF dual-hosted git repository.

iblis pushed a commit to branch v1.5.x
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git


The following commit(s) were added to refs/heads/v1.5.x by this push:
     new 3f449aa  backport Julia patches to v1.5.x (#16142)
3f449aa is described below

commit 3f449aad151158171d388aa31d3fa8ced6d042e9
Author: Iblis Lin <ib...@hs.ntnu.edu.tw>
AuthorDate: Tue Dec 17 20:57:15 2019 +0800

    backport Julia patches to v1.5.x (#16142)
    
    * julia: bump window prebult binary version to v1.5.0 (#15608)
    
    - remove file REQUIRE, it's stale for Pkg3.jl
    
    * update julia install doc (#15609)
    
    * julia: fix `mx.forward` kwargs checking (#16138)
    
    close https://github.com/dmlc/MXNet.jl/issues/431
    
    * Julia: add API docs back (#16348)
    
    `ndarray` and `symbolic-node` have been refactored by splitting into a
    few files in commits ed8307121 and 36a3cb828, but the corresponding
    document setting for MXNet.jl is not updated yet.
    
    List all split source files into the `at_autodoc` setting.
    
    Also refer to the `at_autodoc` setting in `julia/docs/src/api/optimizer.md`
---
 docs/install/index.md               | 64 +++++++++++++++++++++++++++++++++++--
 julia/REQUIRE                       |  6 ----
 julia/deps/build.jl                 | 16 ++++++----
 julia/docs/src/api/ndarray.md       | 18 ++++++++++-
 julia/docs/src/api/symbolic-node.md | 11 ++++++-
 julia/src/executor.jl               |  2 +-
 julia/test/unittest/bind.jl         | 15 +++++++++
 7 files changed, 115 insertions(+), 17 deletions(-)

diff --git a/docs/install/index.md b/docs/install/index.md
index d2bd24e..82cc573 100644
--- a/docs/install/index.md
+++ b/docs/install/index.md
@@ -108,7 +108,22 @@ Indicate your preferred configuration. Then, follow the customized commands to i
 </div>
 </div>
 </div>
+
+<!-- Linux Julia Options -->
+
+<div class="linux macos windows">
+<div class="julia">
+<div class="cpu gpu">
+<div class="btn-group opt-group" role="group">
+  <button type="button" class="btn btn-default environs opt active">Pkg</button>
+  <button type="button" class="btn btn-default environs opt">Build from Source</button>
+</div>
+</div>
+</div>
+</div>
+
 <hr>
+
 <!-- END - Main Menu -->
 
 <!-- START - Linux Python CPU Installation Instructions -->
@@ -582,8 +597,23 @@ You can use the Maven packages defined in the following dependency to include MX
 <div class="julia">
 <div class="cpu gpu">
 </br>
+<div class="pkg">
+
+```
+]add MXNet#v1.5.0
+```
+
+Install the latest release:
+
+```
+]add MXNet
+```
+
+</div>
+<div class="build-from-source">
 Refer to the <a href="ubuntu_setup.html#install-the-mxnet-package-for-julia">Julia section of the MXNet Ubuntu installation guide</a>.
 
+</div>
 </div> <!-- End of cpu gpu -->
 </div> <!-- End of julia -->
 
@@ -593,7 +623,7 @@ Refer to the <a href="ubuntu_setup.html#install-the-mxnet-package-for-julia">Jul
 Refer to the <a href="ubuntu_setup.html#install-the-mxnet-package-for-perl">Perl section of the MXNet Ubuntu installation guide</a>.
 
 </div> <!-- End of cpu gpu -->
-</div> <!-- End of julia -->
+</div> <!-- End of perl -->
 
 
 
@@ -884,8 +914,23 @@ Not available at this time. <br>
 <div class="julia">
 <div class="cpu gpu">
 </br>
+<div class="pkg">
+
+```
+]add MXNet#v1.5.0
+```
+
+Install the latest release:
+
+```
+]add MXNet
+```
+
+</div>
+<div class="build-from-source">
 Refer to the <a href="osx_setup.html#install-the-mxnet-package-for-julia">Julia section of the MXNet macOS installation guide</a>.
 
+</div>
 </div> <!-- End of cpu gpu -->
 </div> <!-- End of julia -->
 
@@ -1226,8 +1271,23 @@ MXNet-Java for Windows is not yet available.
 <div class="julia">
 <div class="cpu gpu">
 </br>
+<div class="pkg">
+
+```
+]add MXNet#v1.5.0
+```
+
+Install the latest release:
+
+```
+]add MXNet
+```
+
+</div>
+<div class="build-from-source">
 Refer to the <a href="windows_setup.html#install-the-mxnet-package-for-julia">Julia section of the MXNet Windows installation guide</a>.
 
+</div>
 </div> <!-- End of cpu gpu -->
 </div> <!-- End of julia -->
 
@@ -1237,7 +1297,7 @@ Refer to the <a href="windows_setup.html#install-the-mxnet-package-for-julia">Ju
 Refer to the <a href="windows_setup.html#install-the-mxnet-package-for-perl">Perl section of the MXNet Windows installation guide</a>.
 
 </div> <!-- End of cpu gpu -->
-</div> <!-- End of julia -->
+</div> <!-- End of perl -->
 
 <div class="cpp">
 <div class="cpu gpu">
diff --git a/julia/REQUIRE b/julia/REQUIRE
deleted file mode 100644
index 8008da3..0000000
--- a/julia/REQUIRE
+++ /dev/null
@@ -1,6 +0,0 @@
-julia 0.7
-Formatting
-BinDeps
-JSON
-MacroTools
-Reexport
diff --git a/julia/deps/build.jl b/julia/deps/build.jl
index badca65..a87343d 100644
--- a/julia/deps/build.jl
+++ b/julia/deps/build.jl
@@ -24,7 +24,7 @@ using LinearAlgebra
 ################################################################################
 libmxnet_detected = false
 libmxnet_curr_ver = get(ENV, "MXNET_COMMIT", "master")
-curr_win = "20180211"  # v1.1.0
+curr_win = "20190608"  # v1.5.0
 
 if haskey(ENV, "MXNET_HOME")
   MXNET_HOME = ENV["MXNET_HOME"]
@@ -119,21 +119,25 @@ if !libmxnet_detected
     base_url = "https://github.com/yajiedesign/mxnet/releases/download/weekly_binary_build_v2/prebuildbase_win10_x64_vc14_v2.7z"
 
     if libmxnet_curr_ver == "master"
+      _cmd = "{
+        [System.Net.ServicePointManager]::SecurityProtocol='tls12';
+        Invoke-WebRequest -Uri 'https://api.github.com/repos/yajiedesign/mxnet/releases/latest'
+        -OutFile 'mxnet.json'}"
       # download_cmd uses powershell 2, but we need powershell 3 to do this
-      run(`powershell -NoProfile -Command Invoke-WebRequest -Uri "https://api.github.com/repos/yajiedesign/mxnet/releases/latest" -OutFile "mxnet.json"`)
+      run(`powershell -NoProfile -Command $_cmd`)
       curr_win = JSON.parsefile("mxnet.json")["tag_name"]
       @info("Can't use MXNet master on Windows, using latest binaries from $curr_win.")
     end
     # TODO: Get url from JSON.
-    name = "mxnet_x64_vc14_$(HAS_CUDA ? "gpu" : "cpu").7z"
+    # TODO: detect cuda version and select corresponding url.
+    name = "mxnet_x64_$(HAS_CUDA ? "vc141_gpu_cu101" : "vc14_cpu").7z"
     package_url = "https://github.com/yajiedesign/mxnet/releases/download/$(curr_win)/$(curr_win)_$(name)"
 
-    exe7z = joinpath(JULIA_HOME, "7z.exe")
+    exe7z = joinpath(Sys.BINDIR, "7z.exe")
 
     run(download_cmd(package_url, "mxnet.7z"))
     # this command will create the dir "usr\\lib"
-    run(`$exe7z x mxnet.7z build lib -y -ousr`)
-    run(`cmd /c copy "usr\\build\\*.dll" "usr\\lib"`)
+    run(`$exe7z e mxnet.7z *\\build\\* *\\lib\\* -y -ousr\\lib`)
 
     run(download_cmd(base_url, "mxnet_base.7z"))
     run(`$exe7z x mxnet_base.7z -y -ousr`)
diff --git a/julia/docs/src/api/ndarray.md b/julia/docs/src/api/ndarray.md
index 8cc4948..64f59dc 100644
--- a/julia/docs/src/api/ndarray.md
+++ b/julia/docs/src/api/ndarray.md
@@ -70,5 +70,21 @@ In the following example `y` can be a `Real` value or another `NDArray`
 
 ```@autodocs
 Modules = [MXNet.mx]
-Pages = ["ndarray.jl"]
+Pages = [
+  "ndarray.jl",
+  "ndarray/activation.jl",
+  "ndarray/arithmetic.jl",
+  "ndarray/array.jl",
+  "ndarray/autoimport.jl",
+  "ndarray/comparison.jl",
+  "ndarray/context.jl",
+  "ndarray/io.jl",
+  "ndarray/linalg.jl",
+  "ndarray/reduction.jl",
+  "ndarray/remap.jl",
+  "ndarray/show.jl",
+  "ndarray/statistic.jl",
+  "ndarray/trig.jl",
+  "ndarray/type.jl",
+]
 ```
diff --git a/julia/docs/src/api/symbolic-node.md b/julia/docs/src/api/symbolic-node.md
index b4b1c01..0efe460 100644
--- a/julia/docs/src/api/symbolic-node.md
+++ b/julia/docs/src/api/symbolic-node.md
@@ -19,5 +19,14 @@
 
 ```@autodocs
 Modules = [MXNet.mx]
-Pages = ["symbolic-node.jl"]
+Pages = [
+  "symbolic-node.jl",
+  "symbolic-node/arithmetic.jl",
+  "symbolic-node/array.jl",
+  "symbolic-node/autodiff.jl",
+  "symbolic-node/io.jl",
+  "symbolic-node/op.jl",
+  "symbolic-node/show.jl",
+  "symbolic-node/type.jl",
+]
 ```
diff --git a/julia/src/executor.jl b/julia/src/executor.jl
index e565617..37f2dde 100644
--- a/julia/src/executor.jl
+++ b/julia/src/executor.jl
@@ -176,7 +176,7 @@ end
 
 function forward(self::Executor; is_train::Bool = false, kwargs...)
   for (k,v) in kwargs
-    @assert(k ∈ self.arg_dict, "Unknown argument $k")
+    @assert(k ∈ keys(self.arg_dict), "Unknown argument $k")
     @assert(isa(v, NDArray), "Keyword argument $k must be an NDArray")
     copy!(self.arg_dict[k], v)
   end
diff --git a/julia/test/unittest/bind.jl b/julia/test/unittest/bind.jl
index 0ae0ab4..a221733 100644
--- a/julia/test/unittest/bind.jl
+++ b/julia/test/unittest/bind.jl
@@ -84,11 +84,26 @@ function test_arithmetic()
   end
 end
 
+function test_forward()
+  # forward with data keyword argument
+  x = @var x
+  y = x .+ 42
+
+  A = 1:5
+  B = A .+ 42
+
+  e = bind(y, args = Dict(:x => NDArray(24:28)))
+  z = forward(e, x = NDArray(A))[1]
+
+  @test copy(z) == collect(B)
+end
+
 ################################################################################
 # Run tests
 ################################################################################
 @testset "Bind Test" begin
   test_arithmetic()
+  test_forward()
 end
 
 end