Added flag to indicate the condition of no feature (with assumption that there is also no label) to support efficient bi-directional model training.
Updated the windows version of HTKMLFReader, LM and LU Sequence readers.
Caution: this change will not allow for using past and future label information in the recurrent networks. The ultimate solution is to have a flag for each feature read-in. However, this will require huge change and we will do this after reader refactorization to reduce effort.
The current CNTKEval use default numbers of CPU threads. This can be
problematic if we run parallel decoding jobs on CPU farm. This commits allows
callers to set number of CPU threads via config string "numCPUThreads=xx" and
the default number of threads is 1.
This bug will be exposed when sentence length > 1024 frames. In that case,
after 1024 frames, the EvalReader only fetches values in the first 1024
frames, and the writer will not write to the values after 1024 frames.
was the incorrect use of -G (generate debug info for device code) in
release configuration which results in most optimizations being disabled
for GPU code resulting in bad GPU kernel performance.
sorted #includes in many places (system #includes first), and removed some unnecessary #includes;
TWO_PI moved into Basics.h;
fixed an unused-argument warning in GPUMatrix.cu
moved minibatchsourcehelpers.h to Common/Include, as it is shared amongst readers (exception: the HTK reader, which has a different version);
fixed some incorrect #include of basetypes.h;
copying of DLLs now does not copy if the file already exists and is not out of date;
prebuild.bat now only updates builddate.h if it has changed, to avoid CNTK.cpp to be recompiled each time;
fixed a few build warnings in the CUDA kernels (uninitialized variables);
removed unused PTasks references in Linux makefiles
renamed cn.exe to CNTK.exe on Windows and "cntk" (no more .exe!) on Linux;
renamed 'cn' folder to 'CNTK';
moved CNTK.sln out from CNTKSolution folder, which now no longer needs to exist;
removed Win32 build target from Visual Studio Solution and all Projects;
added are documentation and Linux makefiles to the Visual Studio Solution for easy access;
removed unused PTasks files
Completely remove PTask. This makes code clean and much easier to understand.
Added SetMatrixFromCSCFormat to CPU sparse matrix.
Reimplemented Set(Get)MatrixFromCSC(CSR)Format functions to take CPUSPARSE_INDEX_TYPE. changed GPU sparse matrices' persistence code accordingly.
ConfigValue::operator unsigned long() is ambigous on GCC/x64, now not declaring it there;
discovered several incorrect "throw new runtime_error()" (notice the "new"), replaced with RuntimeError() or throw std::runtime_error(), as appropriate;
changed several initializations of ConfigParameters x = y to ConfigParameters x(y) since it blew up on GCC which tries to use a private move constructor;
eliminated an unnecessary use of Windows type LONG64;
fixed several fprintf() and RuntimeError() calls where a std::string was passed without c_str();
fixed a few more accesses to base-class members where base class has a template parameter;
fixed a few bad TABs;
minor other stuff that failed on GCC;
cn.cpp compiles now on GCC--yay!
references to CUDA libs moved from BestGpu.h to the .cpp, which is will soon be moved into the CNTKMathCUDA project and thus not get compiled if no CUDA SDK is installed;
no-CUDA implementation of DeviceFromConfig() moved from BestGpu.cpp to NoGPU.cpp;
removed several no-longer-needed CUDA references from project files--two referenced-lib settings are now again identical between Debug and Release, they were inconsistent before
unified Error() and ERROR() functions to RuntimeError() defined in basetypes.h, and eliminated message.h altogether (it was only used for ERROR);
new method LogicError()--note: some RuntimeError() calls really should be LogicError()s, need to fix as we notice them
fixed loads of int size and signedness warnings;
fixed lots of unused-parameter warnings (in dummy implementations);
two more projects build warning-free