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.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 instantiateSoftmaxOutput
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 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 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 theHandle
class
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.debugReport
This
private
function has been added to provide a standard means
of writing debug error messages tostderr
. All existing debug
messages in themxnet.Handle
module are now provided by calls
to this function. -
mxnet.Symbol.Dot
The new
Dot
class wraps thedot
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
andopMulAssign
methods. -
mxnet.Symbol.SoftmaxOutput
Improved and extended documentation has been provided for the
SoftmaxOutput
class.
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
Symbol
class and its subclasses) -
imperative operations on n-dimensional arrays (
NDArray
) -
an
Executor
class to bindNDArray
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.