Skip to content

Commit

Permalink
Added code-level support for the ',bg' option on sequential table rea…
Browse files Browse the repository at this point in the history
…ders, causing them to read the data in a background thread. Helps speed up GPU-based nnet training, for instance.
  • Loading branch information
danpovey committed Mar 16, 2016
1 parent ae1634b commit 99a39ff
Show file tree
Hide file tree
Showing 48 changed files with 518 additions and 202 deletions.
4 changes: 2 additions & 2 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ bin fstbin gmmbin fgmmbin sgmmbin sgmm2bin featbin nnetbin nnet2bin nnet3bin cha
#2)The libraries have inter-dependencies
base:
matrix : base
util: base matrix
thread: util matrix base
thread : base
util: base matrix thread
feat: base matrix util gmm transform tree thread
tree: base util matrix
optimization: base matrix
Expand Down
2 changes: 1 addition & 1 deletion src/chain/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ endif
ADDLIBS = ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a ../tree/kaldi-tree.a \
../fstext/kaldi-fstext.a \
../cudamatrix/kaldi-cudamatrix.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a


include ../makefiles/default_rules.mk
Expand Down
4 changes: 2 additions & 2 deletions src/chainbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ TESTFILES =
ADDLIBS = ../nnet3/kaldi-nnet3.a ../chain/kaldi-chain.a ../gmm/kaldi-gmm.a \
../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../hmm/kaldi-hmm.a \
../transform/kaldi-transform.a ../tree/kaldi-tree.a \
../thread/kaldi-thread.a ../cudamatrix/kaldi-cudamatrix.a \
../cudamatrix/kaldi-cudamatrix.a \
../matrix/kaldi-matrix.a ../fstext/kaldi-fstext.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
3 changes: 2 additions & 1 deletion src/cudamatrix/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ endif
$(CUDATKDIR)/bin/nvcc -c $< -o $@ $(CUDA_INCLUDE) $(CUDA_FLAGS) $(CUDA_ARCH) -I../


ADDLIBS = ../matrix/kaldi-matrix.a ../base/kaldi-base.a ../util/kaldi-util.a
ADDLIBS = ../matrix/kaldi-matrix.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
../base/kaldi-base.a

include ../makefiles/default_rules.mk

4 changes: 2 additions & 2 deletions src/decoder/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ all:
EXTRA_CXXFLAGS = -Wno-sign-compare
include ../kaldi.mk

TESTFILES =
TESTFILES =

OBJFILES = training-graph-compiler.o lattice-simple-decoder.o lattice-faster-decoder.o \
lattice-faster-online-decoder.o simple-decoder.o faster-decoder.o \
Expand All @@ -13,7 +13,7 @@ LIBNAME = kaldi-decoder

ADDLIBS = ../transform/kaldi-transform.a ../tree/kaldi-tree.a ../lat/kaldi-lat.a \
../sgmm/kaldi-sgmm.a ../gmm/kaldi-gmm.a ../hmm/kaldi-hmm.a ../util/kaldi-util.a \
../base/kaldi-base.a ../matrix/kaldi-matrix.a
../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk

2 changes: 1 addition & 1 deletion src/feat/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ OBJFILES = feature-functions.o feature-mfcc.o feature-plp.o feature-fbank.o \
LIBNAME = kaldi-feat

ADDLIBS = ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a ../tree/kaldi-tree.a \
../util/kaldi-util.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a ../thread/kaldi-thread.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk

16 changes: 13 additions & 3 deletions src/feat/wave-reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ class WaveData {
samp_freq_ = 0.0;
}

void Swap(WaveData *other) {
data_.Swap(&(other->data_));
std::swap(samp_freq_, other->samp_freq_);
}
private:
static const uint32 kBlockSize = 1024 * 1024; // Use 1M bytes.
Matrix<BaseFloat> data_;
Expand All @@ -106,8 +110,11 @@ class WaveData {
};


// Holder class for .wav files that enables us to read (but not write)
// .wav files. c.f. util/kaldi-holder.h
// Holder class for .wav files that enables us to read (but not write) .wav
// files. c.f. util/kaldi-holder.h we don't use the KaldiObjectHolder template
// because we don't want to check for the \0B binary header. We could have faked
// it by pretending to read in the wave data in text mode after failing to find
// the \0B header, but that would have been a little ugly.
class WaveHolder {
public:
typedef WaveData T;
Expand Down Expand Up @@ -153,11 +160,14 @@ class WaveHolder {
}
}

void Swap(WaveHolder *other) {
t_.Swap(&(other->t_));
}

private:
T t_;
};


} // namespace kaldi

#endif // KALDI_FEAT_WAVE_READER_H_
4 changes: 2 additions & 2 deletions src/featbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ OBJFILES =
TESTFILES =

ADDLIBS = ../feat/kaldi-feat.a ../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
../thread/kaldi-thread.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk

6 changes: 3 additions & 3 deletions src/fgmmbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ BINFILES = fgmm-global-acc-stats fgmm-global-sum-accs fgmm-global-est \
fgmm-global-merge fgmm-global-to-gmm fgmm-gselect fgmm-global-get-frame-likes \
fgmm-global-acc-stats-twofeats fgmm-global-copy fgmm-global-mixdown \
fgmm-global-gselect-to-post fgmm-global-info \
fgmm-global-acc-stats-post fgmm-global-init-from-accs
fgmm-global-acc-stats-post fgmm-global-init-from-accs


OBJFILES =
Expand All @@ -17,8 +17,8 @@ OBJFILES =
TESTFILES =

ADDLIBS = ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../feat/kaldi-feat.a \
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a ../thread/kaldi-thread.a \
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
../hmm/kaldi-hmm.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
10 changes: 5 additions & 5 deletions src/fstbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ BINFILES = fstdeterminizestar \
fstdeterminizelog fstphicompose fstrhocompose fstpropfinal fstcopy \
fstpushspecial fsts-to-transcripts

OBJFILES =
OBJFILES =

TESTFILES =
TESTFILES =

# actually, this library is currently empty. Everything is a header.
LIBFILE =
LIBFILE =

ADDLIBS = ../fstext/kaldi-fstext.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a \
../util/kaldi-util.a
ADDLIBS = ../fstext/kaldi-fstext.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
../matrix/kaldi-matrix.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
2 changes: 1 addition & 1 deletion src/fstext/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ LIBNAME = kaldi-fstext
# tree and matrix archives needed for test-context-fst
# matrix archive needed for push-special.
ADDLIBS = ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
4 changes: 4 additions & 0 deletions src/fstext/kaldi-fst-io.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ class VectorFstTplHolder {
}
}

void Swap(VectorFstTplHolder<Arc> *other) {
std::swap(t_, other->t_);
}

~VectorFstTplHolder() { Clear(); }
// No destructor. Assignment and
// copy constructor take their default implementations.
Expand Down
8 changes: 4 additions & 4 deletions src/gmm/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
all:

OPENFST_CXXFLAGS =
OPENFST_LDLIBS =
OPENFST_CXXFLAGS =
OPENFST_LDLIBS =
include ../kaldi.mk

TESTFILES = diag-gmm-test mle-diag-gmm-test full-gmm-test mle-full-gmm-test \
Expand All @@ -14,8 +14,8 @@ OBJFILES = diag-gmm.o diag-gmm-normal.o mle-diag-gmm.o am-diag-gmm.o \

LIBNAME = kaldi-gmm

ADDLIBS = ../tree/kaldi-tree.a ../thread/kaldi-thread.a ../util/kaldi-util.a \
../matrix/kaldi-matrix.a ../base/kaldi-base.a
ADDLIBS = ../tree/kaldi-tree.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
../matrix/kaldi-matrix.a ../base/kaldi-base.a



Expand Down
4 changes: 2 additions & 2 deletions src/gmmbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ TESTFILES =
ADDLIBS = ../decoder/kaldi-decoder.a ../lat/kaldi-lat.a ../feat/kaldi-feat.a \
../transform/kaldi-transform.a ../gmm/kaldi-gmm.a \
../hmm/kaldi-hmm.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../thread/kaldi-thread.a ../fstext/kaldi-fstext.a \
../util/kaldi-util.a ../base/kaldi-base.a
../fstext/kaldi-fstext.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
../base/kaldi-base.a


include ../makefiles/default_rules.mk
2 changes: 1 addition & 1 deletion src/hmm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ OBJFILES = hmm-topology.o transition-model.o hmm-utils.o tree-accu.o \

LIBNAME = kaldi-hmm
ADDLIBS = ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a ../util/kaldi-util.a \
../base/kaldi-base.a
../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk

18 changes: 12 additions & 6 deletions src/hmm/posterior.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,21 @@ class PosteriorHolder {
PosteriorHolder() { }

static bool Write(std::ostream &os, bool binary, const T &t);

void Clear() { Posterior tmp; std::swap(tmp, t_); }

// Reads into the holder.
bool Read(std::istream &is);

// Kaldi objects always have the stream open in binary mode for
// reading.
static bool IsReadInBinary() { return true; }

const T &Value() const { return t_; }


void Swap(PosteriorHolder *other) {
t_.swap(other->t_);
}
private:
KALDI_DISALLOW_COPY_AND_ASSIGN(PosteriorHolder);
T t_;
Expand All @@ -97,19 +100,22 @@ class GaussPostHolder {

GaussPostHolder() { }

static bool Write(std::ostream &os, bool binary, const T &t);
static bool Write(std::ostream &os, bool binary, const T &t);

void Clear() { GaussPost tmp; std::swap(tmp, t_); }

// Reads into the holder.
bool Read(std::istream &is);

// Kaldi objects always have the stream open in binary mode for
// reading.
static bool IsReadInBinary() { return true; }

const T &Value() const { return t_; }


void Swap(GaussPostHolder *other) {
t_.swap(other->t_);
}
private:
KALDI_DISALLOW_COPY_AND_ASSIGN(GaussPostHolder);
T t_;
Expand Down
9 changes: 5 additions & 4 deletions src/ivector/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@

all:

OPENFST_CXXFLAGS =
OPENFST_LDLIBS =
OPENFST_CXXFLAGS =
OPENFST_LDLIBS =
include ../kaldi.mk

TESTFILES = ivector-extractor-test plda-test logistic-regression-test
Expand All @@ -12,7 +12,8 @@ OBJFILES = ivector-extractor.o voice-activity-detection.o plda.o logistic-regres
LIBNAME = kaldi-ivector

ADDLIBS = ../gmm/kaldi-gmm.a ../tree/kaldi-tree.a ../transform/kaldi-transform.a \
../thread/kaldi-thread.a ../matrix/kaldi-matrix.a ../base/kaldi-base.a \
../util/kaldi-util.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../matrix/kaldi-matrix.a \
../base/kaldi-base.a


include ../makefiles/default_rules.mk
4 changes: 2 additions & 2 deletions src/ivectorbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ TESTFILES =


ADDLIBS = ../ivector/kaldi-ivector.a ../hmm/kaldi-hmm.a ../gmm/kaldi-gmm.a \
../tree/kaldi-tree.a ../thread/kaldi-thread.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../tree/kaldi-tree.a ../matrix/kaldi-matrix.a ../util/kaldi-util.a \
../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
3 changes: 2 additions & 1 deletion src/kws/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ OBJFILES = kws-functions.o kws-scoring.o
LIBNAME = kaldi-kws

ADDLIBS = ../hmm/kaldi-hmm.a ../lat/kaldi-lat.a ../tree/kaldi-tree.a \
../matrix/kaldi-matrix.a ../util/kaldi-util.a ../base/kaldi-base.a
../matrix/kaldi-matrix.a ../util/kaldi-util.a ../thread/kaldi-thread.a \
../base/kaldi-base.a


include ../makefiles/default_rules.mk
2 changes: 1 addition & 1 deletion src/kwsbin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ TESTFILES =

ADDLIBS = ../kws/kaldi-kws.a ../lat/kaldi-lat.a ../fstext/kaldi-fstext.a \
../hmm/kaldi-hmm.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a

include ../makefiles/default_rules.mk
2 changes: 1 addition & 1 deletion src/lat/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ OBJFILES = kaldi-lattice.o lattice-functions.o word-align-lattice.o \
LIBNAME = kaldi-lat

ADDLIBS = ../hmm/kaldi-hmm.a ../tree/kaldi-tree.a ../matrix/kaldi-matrix.a \
../util/kaldi-util.a ../base/kaldi-base.a
../util/kaldi-util.a ../thread/kaldi-thread.a ../base/kaldi-base.a


include ../makefiles/default_rules.mk
Expand Down
10 changes: 8 additions & 2 deletions src/lat/kaldi-lattice.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,11 @@ class CompactLatticeHolder {

void Clear() { delete t_; t_ = NULL; }

~CompactLatticeHolder() { Clear(); }
void Swap(CompactLatticeHolder *other) {
std::swap(t_, other->t_);
}

~CompactLatticeHolder() { Clear(); }
private:
T *t_;
};
Expand Down Expand Up @@ -120,8 +123,11 @@ class LatticeHolder {

void Clear() { delete t_; t_ = NULL; }

~LatticeHolder() { Clear(); }
void Swap(LatticeHolder *other) {
std::swap(t_, other->t_);
}

~LatticeHolder() { Clear(); }
private:
T *t_;
};
Expand Down
Loading

0 comments on commit 99a39ff

Please sign in to comment.