Add a configure script for initializing build parameters, either
for in or out of source builds. The script generates a Config.make
in the build directory, and, for out of source builds, a trampoline
Makefile.
Make the build-and-test script to do an out of source build.
Add Config.make to .gitignore, as well as emacs temporary file patterns.
Change configuration to build to a specific PREFIX directory, where
a Config.make is located that contains build and site-specific information.
This also makes it easy to check just how an earlier build was configured.
Update the instructions in README.
Modularize build specifications for each target, where each target
adds what it needs to paths.
Add rpath to cntkmath and plugins so they do not need LD_LIBRARY_PATH.
Remove object files from cntk that were already in cntkmath.
Organize build targets into UNIX-like bin and lib directories under a
configuration-specific directory. Have .gitignore ignore these
directories.
Make it easy to keep sources in alphabetic order for easier comparison
with the Windows project definition.
This change implements a read-ahead (prefetch) of one minibatch on a separate thread to ensure that main thread always has enough work. This is done through coarse-level parallelism, where GetMinibatch is called from a separate thread and result is cached for main thread to consume. The synchronization is a simple producer/consumer model with a single mutex and a conditional variable.
This change also modifies how we measure time it takes to read and compute a minibatch worth of data.