From d97f1d8240bcdab77806497bb102a90d77d5e261 Mon Sep 17 00:00:00 2001 From: Daniel Richard G Date: Sat, 16 Nov 2019 00:02:20 -0500 Subject: [PATCH] [src] Add --debug-level=N configure option to control assertions (#3690) (#3700) --- src/configure | 11 +++++++++++ src/makefiles/linux_atlas.mk | 12 +++++++++++- src/makefiles/linux_atlas_ppc64le.mk | 12 +++++++++++- src/makefiles/linux_clapack.mk | 12 +++++++++++- src/makefiles/linux_clapack_arm.mk | 12 +++++++++++- src/makefiles/linux_openblas.mk | 12 +++++++++++- src/makefiles/linux_openblas_aarch64.mk | 12 +++++++++++- src/makefiles/linux_openblas_arm.mk | 12 +++++++++++- src/makefiles/linux_openblas_ppc64le.mk | 12 +++++++++++- src/makefiles/linux_x86_64_mkl.mk | 12 +++++++++++- 10 files changed, 110 insertions(+), 9 deletions(-) diff --git a/src/configure b/src/configure index e6ffdf337af..7015946a5b6 100755 --- a/src/configure +++ b/src/configure @@ -73,6 +73,7 @@ Configuration options: --cudatk-dir=DIR CUDA toolkit directory --cuda-arch=FLAGS Override the default CUDA_ARCH flags. See: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples. + --debug-level=N Use assertion level 0 (disabled), 1, or 2 [default=1] --double-precision Build with BaseFloat set to double if yes [default=no], mostly useful for testing purposes. --static-fst Build with static OpenFst libraries [default=no] @@ -739,6 +740,7 @@ ENV_LDFLAGS=$LDFLAGS ENV_LDLIBS=$LDLIBS # Default configuration +debug_level=1 double_precision=false dynamic_kaldi=false use_cuda=true @@ -771,6 +773,9 @@ do static_math=false; static_fst=false; shift ;; + --debug-level=*) + GetSwitchValueOrDie debug_level "$1" + shift ;; --double-precision) double_precision=true; shift ;; @@ -901,6 +906,11 @@ do esac done +case "$debug_level" in + [012]) ;; + *) failure "Invalid value --debug-level=$debug_level. Supported values are 0, 1, and 2." ;; +esac + # The idea here is that if you change the configuration options from using # CUDA to not using it, or vice versa, we want to recompile all parts of the # code that may use a GPU. Touching this file is a way to force this. @@ -1033,6 +1043,7 @@ if $dynamic_kaldi ; then echo "KALDI_FLAVOR := dynamic" >> kaldi.mk echo "KALDILIBDIR := $KALDILIBDIR" >> kaldi.mk fi +echo "DEBUG_LEVEL = $debug_level" >> kaldi.mk if $double_precision; then echo "DOUBLE_PRECISION = 1" >> kaldi.mk else diff --git a/src/makefiles/linux_atlas.mk b/src/makefiles/linux_atlas.mk index bcbd019c020..bd3086e0c7e 100644 --- a/src/makefiles/linux_atlas.mk +++ b/src/makefiles/linux_atlas.mk @@ -1,5 +1,8 @@ # ATLAS specific Linux configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -22,12 +25,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I$(ATLASINC) \ -msse -msse2 -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_atlas_ppc64le.mk b/src/makefiles/linux_atlas_ppc64le.mk index 58b41c8e81b..fdb2618c91b 100644 --- a/src/makefiles/linux_atlas_ppc64le.mk +++ b/src/makefiles/linux_atlas_ppc64le.mk @@ -1,5 +1,8 @@ # ATLAS specific Linux ppc64le configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -23,12 +26,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I$(ATLASINC) \ -m64 -maltivec -mcpu=power8 -mtune=power8 -mpower8-vector -mvsx \ -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_clapack.mk b/src/makefiles/linux_clapack.mk index 5c670bfb89d..058c4eeab1d 100644 --- a/src/makefiles/linux_clapack.mk +++ b/src/makefiles/linux_clapack.mk @@ -1,5 +1,8 @@ # CLAPACK specific Linux configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -16,12 +19,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_CLAPACK -I../../tools/CLAPACK \ -msse -msse2 -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_clapack_arm.mk b/src/makefiles/linux_clapack_arm.mk index fb5a3821fb7..c80710bd0a0 100644 --- a/src/makefiles/linux_clapack_arm.mk +++ b/src/makefiles/linux_clapack_arm.mk @@ -1,5 +1,8 @@ # CLAPACK specific Linux ARM configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -16,12 +19,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_CLAPACK -I../../tools/CLAPACK \ -ftree-vectorize -mfloat-abi=hard -mfpu=neon -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_openblas.mk b/src/makefiles/linux_openblas.mk index 8135f1e9127..f2bd7ec42ab 100644 --- a/src/makefiles/linux_openblas.mk +++ b/src/makefiles/linux_openblas.mk @@ -1,5 +1,8 @@ # OpenBLAS specific Linux configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -22,12 +25,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENBLAS -I$(OPENBLASINC) \ -msse -msse2 -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_openblas_aarch64.mk b/src/makefiles/linux_openblas_aarch64.mk index 55287d34420..7098f8b6a54 100644 --- a/src/makefiles/linux_openblas_aarch64.mk +++ b/src/makefiles/linux_openblas_aarch64.mk @@ -1,5 +1,8 @@ # OpenBLAS specific Linux ARM configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -22,12 +25,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENBLAS -I$(OPENBLASINC) \ -ftree-vectorize -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_openblas_arm.mk b/src/makefiles/linux_openblas_arm.mk index 30603c1b860..5a79d8244fa 100644 --- a/src/makefiles/linux_openblas_arm.mk +++ b/src/makefiles/linux_openblas_arm.mk @@ -1,5 +1,8 @@ # OpenBLAS specific Linux ARM configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -22,12 +25,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENBLAS -I$(OPENBLASINC) \ -ftree-vectorize -mfloat-abi=hard -mfpu=neon -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_openblas_ppc64le.mk b/src/makefiles/linux_openblas_ppc64le.mk index 89e882cb223..4d3919e1f98 100644 --- a/src/makefiles/linux_openblas_ppc64le.mk +++ b/src/makefiles/linux_openblas_ppc64le.mk @@ -1,5 +1,8 @@ # OpenBLAS specific Linux configuration +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -23,12 +26,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_OPENBLAS -I$(OPENBLASINC) \ -m64 -maltivec -mcpu=power8 -mtune=power8 -mpower8-vector -mvsx \ -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang) diff --git a/src/makefiles/linux_x86_64_mkl.mk b/src/makefiles/linux_x86_64_mkl.mk index d1c399d9796..dc1fa7a738a 100644 --- a/src/makefiles/linux_x86_64_mkl.mk +++ b/src/makefiles/linux_x86_64_mkl.mk @@ -9,6 +9,9 @@ # Use the options obtained from this website to manually configure for other # platforms using MKL. +ifndef DEBUG_LEVEL +$(error DEBUG_LEVEL not defined.) +endif ifndef DOUBLE_PRECISION $(error DOUBLE_PRECISION not defined.) endif @@ -30,12 +33,19 @@ CXXFLAGS = -std=c++11 -I.. -isystem $(OPENFSTINC) -O1 $(EXTRA_CXXFLAGS) \ -DKALDI_DOUBLEPRECISION=$(DOUBLE_PRECISION) \ -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_MKL -I$(MKLROOT)/include \ -m64 -msse -msse2 -pthread \ - -g # -O0 -DKALDI_PARANOID + -g ifeq ($(KALDI_FLAVOR), dynamic) CXXFLAGS += -fPIC endif +ifeq ($(DEBUG_LEVEL), 0) +CXXFLAGS += -DNDEBUG +endif +ifeq ($(DEBUG_LEVEL), 2) +CXXFLAGS += -O0 -DKALDI_PARANOID +endif + # Compiler specific flags COMPILER = $(shell $(CXX) -v 2>&1) ifeq ($(findstring clang,$(COMPILER)),clang)