diff options
author | Pjotr Prins | 2018-09-18 09:21:25 +0000 |
---|---|---|
committer | Pjotr Prins | 2018-09-18 09:21:25 +0000 |
commit | ac0736cc4d4bc994ec8a0fe96a8666c277d7839e (patch) | |
tree | e0a3c80c00f248f675467a7ddbd738727e4bfe8e | |
parent | 10cc3c77d5f6d385807f019b7894d4b87820cab4 (diff) | |
download | pangemma-ac0736cc4d4bc994ec8a0fe96a8666c277d7839e.tar.gz |
Added profiling and build instructions
-rw-r--r-- | INSTALL.md | 6 | ||||
-rw-r--r-- | Makefile | 27 |
2 files changed, 28 insertions, 5 deletions
@@ -181,6 +181,12 @@ or ## Optimizing performance +### Profiling + +The gcc version has profiling support, run with + + make PROFILING=1 + ### OpenBlas Linking against a built-from-source OpenBlas is a first optimization @@ -35,6 +35,10 @@ # # make check-all # +# To compile with CLANG +# +# make CXX=clang++ check +# # See also the INSTALL.md document in the source tree at # # https://github.com/genetics-statistics/GEMMA/blob/master/INSTALL.md @@ -58,6 +62,7 @@ endif # Leave blank after "=" to disable; put "= 1" to enable DIST_NAME = gemma-$(GEMMA_VERSION) DEBUG = 1 # DEBUG mode, set DEBUG=0 for a release +PROFILING = # Add profiling info SHOW_COMPILER_WARNINGS = WITH_OPENBLAS = 1 # Without OpenBlas uses LAPACK WITH_LAPACK = # Force linking LAPACK (if OpenBlas lacks it) @@ -74,18 +79,23 @@ ifeq ($(SYS), WIN) EIGEN_INCLUDE_PATH = ../eigen-git-mirror OPENBLAS_INCLUDE_PATH = ../OpenBLAS-v0.2.19-Win64-int32/include -L../OpenBLAS-v0.2.19-Win64-int32/lib else - OPENBLAS_INCLUDE_PATH = /usr/local/opt/openblas/include + # OPENBLAS_INCLUDE_PATH = /usr/local/opt/openblas/include ifeq ($(SYS), MAC) EIGEN_INCLUDE_PATH = /usr/local/include/eigen3 else EIGEN_INCLUDE_PATH = /usr/include/eigen3 endif + ifndef GUIX + ifdef GUIX_ENVIRONMENT + GUIX=$(GUIX_ENVIRONMENT) + endif + endif ifdef GUIX # Effectively disable paths for GNU Guix OPENBLAS_INCLUDE_PATH = . EIGEN_INCLUDE_PATH = $(GUIX)/include/eigen3 # RPATH = -Xlinker --rpath=$(GUIX)/lib - PROFILE =$(realpath $(GUIX)) + GUIX_PROFILE =$(realpath $(GUIX)) endif endif @@ -107,7 +117,7 @@ endif ifeq ($(CPP), clang++) # macOS Homebrew settings (as used on Travis-CI) # GCC_FLAGS=-O3 -std=c++11 -stdlib=libc++ -isystem$(OPENBLAS_INCLUDE_PATH) -isystem$(EIGEN_INCLUDE_PATH) -Wl,-L/usr/local/opt/openblas/lib - GCC_FLAGS=-O3 -std=c++11 -isystem$(OPENBLAS_INCLUDE_PATH) -isystem$(EIGEN_INCLUDE_PATH) -Wl,-L/usr/local/opt/openblas/lib + GCC_FLAGS=-std=c++11 -isystem$(OPENBLAS_INCLUDE_PATH) -isystem$(EIGEN_INCLUDE_PATH) endif ifdef WITH_OPENBLAS @@ -122,7 +132,10 @@ endif ifeq ($(CXX), clang++) # CPPFLAGS += -isystem$(GUIX)/include/c++ -isystem$(GUIX)/include/c++/x86_64-unknown-linux-gnu - CPPFLAGS += -I$(GUIX)/include/c++ -I$(GUIX)/include/c++/x86_64-unknown-linux-gnu -L$(GUIX)/lib + ifdef GUIX + CPPFLAGS += -I$(GUIX)/include/c++ -I$(GUIX)/include/c++/x86_64-unknown-linux-gnu + endif + # -L$(GUIX)/lib endif ifdef DEBUG @@ -132,6 +145,10 @@ else CPPFLAGS += -DNDEBUG -O3 $(GCC_FLAGS) $(GSL_INCLUDE_PATH) -isystem$(EIGEN_INCLUDE_PATH) -Icontrib/catch-1.9.7 -Isrc $(RPATH) endif +ifdef PROFILING + CPPFLAGS += -pg +endif + ifeq ($(SYS), WIN) CPPFLAGS += -Duint="unsigned int" -D__CRT__NO_INLINE -D__STRING="__STRINGIFY" -DWINDOWS -DWITH_GSLCBLAS=1 endif @@ -193,7 +210,7 @@ OBJS = $(SOURCES:.cpp=.o) all: $(OUTPUT) ./src/version.h: ./VERSION - $(VGEN) $(PROFILE) > src/version.h + $(VGEN) $(GUIX_PROFILE) > src/version.h $(OUTPUT): $(OBJS) $(CPP) $(CPPFLAGS) $(OBJS) $(LIBS) -o $(OUTPUT) |