Releases: sociomantic-tsunami/dmxnet
v0.5.0
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
v0.4.0 auto-converted to D2
v0.4.0
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
https://github.com/sociomantic-tsunami/dmxnet/milestone/4
Migration Instructions
-
mxnet.Symbol.SoftmaxOutputA new nested
Configclass 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 instantiateSoftmaxOutputinstances 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 viaauto softmax_default = new SoftmaxOutput(input, label);
will behave exactly the same as before.
v0.2.1
v0.2.0
https://github.com/sociomantic-tsunami/dmxnet/milestone/2
Migration Instructions
-
Integration tests have moved from
test/tointegrationtest/. -
Travis config now uses the
beaver dlangfunctionality provided
in beaver 0.2.x.
Features
-
-debug=MXNetHandleManualFreeWhen this new debug option is enabled, the library will report to
stderrwhenever a MXNet handle is freed by theHandleclass
destructor instead of by an explicit call to thefreeHandle
method. This can be used to track down leaks of MXNet-allocated
resources in an application using dmxnet. -
mxnet.Handle.debugReportThis
privatefunction has been added to provide a standard means
of writing debug error messages tostderr. All existing debug
messages in themxnet.Handlemodule are now provided by calls
to this function. -
mxnet.Symbol.DotThe new
Dotclass wraps thedotatomic symbol provided
by the C++ MXNet library. This represents a generalized dot
product of its inputs. -
mxnet.NDArray.NDArraySome small documentation improvements have been added to the
opSubAssignandopMulAssignmethods. -
mxnet.Symbol.SoftmaxOutputImproved and extended documentation has been provided for the
SoftmaxOutputclass.
v0.1.0: initial tsunami 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
Symbolclass and its subclasses) -
imperative operations on n-dimensional arrays (
NDArray) -
an
Executorclass to bindNDArrayinputs 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.