Skip to content

Releases: sociomantic-tsunami/dmxnet

v0.5.0

15 Nov 17:19
Compare
Choose a tag to compare

https://github.com/sociomantic-tsunami/dmxnet/milestone/6?closed=1

Migration Instructions

dmxnet is now a D2-only library

As of this release, dmxnet only supports D2 applications. Its APIs have
not changed, but its code has been converted from D1 to D2, and it will
now only build with a D2 compiler.

In consequence, D2 releases of dmxnet (the only kind from here on out!)
will now simply be tagged vX.y.z and not vX.y.z+d2.

Increase minimum required ocean version to v4.4.x

This brings dmxnet's ocean dependency up to date with the latest stable
minor release series.

v0.4.1 auto-converted to D2

v0.4.1

19 Oct 10:17
Compare
Choose a tag to compare

https://github.com/sociomantic-tsunami/dmxnet/milestone/7?closed=1

  • Remove unnecessary custom INTEGRATIONTEST directory from Config.mak #86
  • Correct outdated remarks in the README #85
  • Bring README up to date with current project status #84

v0.4.0 auto-converted to D2

v0.4.0

30 Aug 13:37
Compare
Choose a tag to compare

https://github.com/sociomantic-tsunami/dmxnet/milestone/5?closed=1

Migration Instructions

NDarray must have null handles when calling Executor.outputs

mxnet.Executor

When obtaining the outputs of an Executor all NDarray instances passed to
the method outputs must have a null handle. For migration you can call
freeHandle on NDArray instances with non-null handles
(array.handle !is null). This will release all data associated with the
NDArray instance. This freeing used to happen implicitly under the hood when
executing the outputs method. The migration requires this release of
resources to be explicit in calling code. This reflects a design principle that
the user should control the lifetime of resources while dmxnet states what it
assumes about those.

If the handles of the passed NDArray instances are null no changes need to
be made.

Synchronized read-only data slice for NDArray.data()

mxnet.NDArray

The data method of NDArray is changed to return a read-only slice (i.e., a
slice of const elements). The added const implies that code writing
elements of the returned slice has to be changed. There is no direct
replacement. The closest option is to use the copyFrom method to copy all
elements of a slice into an NDArray.

Also the returned slice is synchronized. That means the method waits for all
pending writes to finish prior to returning. Code performing waitToRead()
(prior to calling data) manually should be removed.

Features

Provide function to trigger shutdown of MXNet engine

mxnet.API

The function notifyShutdown is added to notify MXNet to shut down its
execution engine. You may consider shutting down the engine manually to
avoid/reduce races on process exit.

Support multi-threaded MXNet engines

mxnet.MXNet

The changes to NDArray.data along with its required migrations enable the use
of multi-threaded MXNet engines. Unit and integration tests pass for all
engines and the restriction to the single-threaded NaiveEngine has been
removed. Note though, that on process exit there is still a race after
executing unittests. The race is likely to be caused by dmxnet interacting with
MXNet while MXNet is cleaning up at process exit. This issue is still open and
has only been partly addressed by instructing MXNet to shutdown. This makes the
race less likely to occur.

v0.3.0

05 Dec 16:21
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

https://github.com/sociomantic-tsunami/dmxnet/milestone/4

Migration Instructions

  • mxnet.Symbol.SoftmaxOutput

    A new nested Config class has been added in order to store the various
    optional settings that can be used with this symbol. The constructor has
    been rewritten to use an instance of this struct (initialized to default
    values) rather than to require each parameter separately. This should
    make it easier to instantiate SoftmaxOutput instances with only one or
    a few custom settings, for example:

    SoftmaxOutput.Config config = {
        grad_scale: 1.5,
        preserve_shape: true
    };
    auto softmax_custom = new SoftmaxOutput(input, label, config);

    The config parameter is entirely optional: instances created using the
    default configuration via

    auto softmax_default = new SoftmaxOutput(input, label);

    will behave exactly the same as before.

v0.2.1

30 Nov 16:08
Compare
Choose a tag to compare

v0.2.0

02 Nov 16:46
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

https://github.com/sociomantic-tsunami/dmxnet/milestone/2

Migration Instructions

  • Integration tests have moved from test/ to integrationtest/.

  • Travis config now uses the beaver dlang functionality provided
    in beaver 0.2.x.

Features

  • -debug=MXNetHandleManualFree

    When this new debug option is enabled, the library will report to
    stderr whenever a MXNet handle is freed by the Handle class
    destructor instead of by an explicit call to the freeHandle
    method. This can be used to track down leaks of MXNet-allocated
    resources in an application using dmxnet.

  • mxnet.Handle.debugReport

    This private function has been added to provide a standard means
    of writing debug error messages to stderr. All existing debug
    messages in the mxnet.Handle module are now provided by calls
    to this function.

  • mxnet.Symbol.Dot

    The new Dot class wraps the dot atomic symbol provided
    by the C++ MXNet library. This represents a generalized dot
    product of its inputs.

  • mxnet.NDArray.NDArray

    Some small documentation improvements have been added to the
    opSubAssign and opMulAssign methods.

  • mxnet.Symbol.SoftmaxOutput

    Improved and extended documentation has been provided for the
    SoftmaxOutput class.

v0.1.0: initial tsunami release

04 Aug 15:46
Compare
Choose a tag to compare
Pre-release

This initial release provides D bindings for the core MXNet C API and a friendly D wrapper library for the following key functionality:

  • symbolic logic (the Symbol class and its subclasses)

  • imperative operations on n-dimensional arrays (NDArray)

  • an Executor class to bind NDArray inputs and outputs to
    symbolic expressions

Other parts of the wrapper code provide internal support for lower level interactions with the underlying C API, such as handles, atomic symbols, CPU/GPU contexts, and convenience wrappers for invoking API functions.

Some basic integration sanity checks are provided by a test suite that performs multi-class logistic regression on the MNIST dataset.