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.
removed nvml.lib from the Windows linker command line (it is already listed inside the source code, but there it is conditional on CPUONLY mode);
added a missing #include to Profiler.cpp to make it compile in CPUONLY mode;
fixed the post-build action to copy nvml.dll to not fail if no NVSMI is installed (assuming CPUONLY mode)
Before this commit, m_BoundaryInfo is constructed on default device, usually
0. This may result in a single processor creating contexts on multiple GPU
devices.
Use of static constructors in headers cause the constructors/destructors to be
run in each compilation unit that includes the headers. The multiple
constructors runs are leaks, the multiple destructor runs are multiple-frees
at program exit time. These string constructors can instead use const char*
with little impact on the methods that reference them.
sprintf_s is snprintf, not sprintf
Need to use more symbols from SGD
Add externs for missing file name generators that seem to be not reachable
and not defined.