diff options
-rw-r--r-- | .guix-dev-gcc-older | 2 | ||||
-rw-r--r-- | .travis.yml | 34 | ||||
-rw-r--r-- | INSTALL.md | 2 | ||||
-rw-r--r-- | RELEASE-NOTES.md | 5 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | src/fastblas.cpp | 43 | ||||
-rw-r--r-- | src/fastblas.h | 3 | ||||
-rw-r--r-- | src/lmm.cpp | 8 | ||||
-rw-r--r-- | src/mathfunc.cpp | 2 | ||||
-rw-r--r-- | src/version.h | 8 |
10 files changed, 43 insertions, 66 deletions
diff --git a/.guix-dev-gcc-older b/.guix-dev-gcc-older new file mode 100644 index 0000000..7d37f7d --- /dev/null +++ b/.guix-dev-gcc-older @@ -0,0 +1,2 @@ +# Typical Guix container invocation +~/opt/guix/bin/guix environment -C guix --ad-hoc gcc-toolchain@6.5.0 gdb gsl openblas zlib bash ld-wrapper perl vim which diff --git a/.travis.yml b/.travis.yml index 6fd48bd..5bc64eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,5 @@ language: C++ matrix: - # OSX testing is under development - # allow_failures: - # - os: osx include: - os: linux compiler: gcc @@ -11,36 +8,11 @@ matrix: sources: - ubuntu-toolchain-r-test packages: - # Our dev environment is a more recent GNU C++ and GSL2 - - g++-4.9 + - libgsl-dev - libopenblas-dev - - zlib1g-dev - - libgsl0-dev - - os: osx - compiler: clang -# - os: linux -# addons: -# apt: -# sources: -# - ubuntu-toolchain-r-test -# packages: -# - g++-6 -# env: -# - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" -before_install: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install gsl openblas zlib eigen lapack ; fi script: - echo $MATRIX_EVAL - eval "${MATRIX_EVAL}" - $CXX --version - # build and test debug version - - make CXX=$CXX OPENBLAS_LEGACY=1 WITH_GSLCBLAS=1 -j 4 -k - - time make CXX=$CXX OPENBLAS_LEGACY=1 WITH_GSLCBLAS=1 check - # - make clean - # build and test release version (integration test mostly) - # - make CXX=$CXX EIGEN_INCLUDE_PATH=$EIGEN_INCLUDE_PATH DEBUG= FORCE_DYNAMIC=1 WITH_OPENBLAS=1 OPENBLAS_LEGACY=1 -j 4 - # - time make CXX=$CXX DEBUG= WITH_OPENBLAS=1 fast-check - # build static release (fast-check only) - # - make clean - # - make CXX=$CXX TRAVIS_CI=1 -j 4 fast-check - # - ldd ./bin/gemma + - make -j 4 OPENBLAS_LEGACY=1 + - make OPENBLAS_LEGACY=1 fast-check @@ -13,7 +13,7 @@ and it should give you the version. GEMMA runs on Linux and MAC OSX and the runtime has the following dependencies: -* C++ tool chain >= 4.9 +* C++ tool chain >= 6.5.0 (we test with file .guix-dev-gcc-older) * GNU Science library (GSL) 1.x (GEMMA does not currently work with GSL >= 2). * blas/openblas * lapack diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 53674d8..4345c27 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,7 +4,10 @@ see and [commits](https://github.com/genetics-statistics/GEMMA/commits/master). -## ChangeLog v0.98.2 (2018/05/28) +## ChangeLog v0.98.3 (2020/?) + + +## ChangeLog v0.98.2 (2019/05/28) GCC 10.1 fix release @@ -1 +1 @@ -0.98.2 +0.98.3 diff --git a/src/fastblas.cpp b/src/fastblas.cpp index 41ee741..efa8412 100644 --- a/src/fastblas.cpp +++ b/src/fastblas.cpp @@ -2,7 +2,7 @@ Genome-wide Efficient Mixed Model Association (GEMMA) Copyright © 2011-2017, Xiang Zhou Copyright © 2017, Peter Carbonetto - Copyright © 2017, Pjotr Prins + Copyright © 2017-2020, Pjotr Prins This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,6 +25,7 @@ #include "debug.h" #include "mathfunc.h" #include <string.h> +#include "fastblas.h" const char *FastblasTrans = "T"; const char *FastblasNoTrans = "N"; @@ -246,29 +247,27 @@ extern "C" { int gsl_linalg_LU_decomp(gsl_matrix * A, gsl_permutation * p, int * signum); } -void gsl_matrix_inv(gsl_matrix *m) -{ - size_t n=m->size1; - - gsl_matrix *temp1=gsl_matrix_calloc(n,n); - gsl_matrix_memcpy(temp1,m); - - gsl_permutation *p=gsl_permutation_calloc(n); - int sign=0; - gsl_linalg_LU_decomp(temp1,p,&sign); - gsl_matrix *inverse=gsl_matrix_calloc(n,n); - - gsl_linalg_LU_invert(temp1,p,inverse); - gsl_matrix_memcpy(m,inverse); - - gsl_permutation_free(p); - gsl_matrix_free(temp1); - gsl_matrix_free(inverse); - +void gsl_matrix_inv(gsl_matrix *m) +{ + size_t n=m->size1; + + gsl_matrix *temp1=gsl_matrix_calloc(n,n); + gsl_matrix_memcpy(temp1,m); + + gsl_permutation *p=gsl_permutation_calloc(n); + int sign=0; + gsl_linalg_LU_decomp(temp1,p,&sign); + gsl_matrix *inverse=gsl_matrix_calloc(n,n); + + gsl_linalg_LU_invert(temp1,p,inverse); + gsl_matrix_memcpy(m,inverse); + + gsl_permutation_free(p); + gsl_matrix_free(temp1); + gsl_matrix_free(inverse); + } void fast_inverse(gsl_matrix *m) { gsl_matrix_inv(m); } - - diff --git a/src/fastblas.h b/src/fastblas.h index 32253b3..b36506d 100644 --- a/src/fastblas.h +++ b/src/fastblas.h @@ -23,7 +23,8 @@ #include <assert.h> #include <iostream> -// #include "gsl/gsl_matrix.h" +#include "gsl/gsl_cblas.h" +#include "gsl/gsl_matrix.h" gsl_matrix *fast_copy(gsl_matrix *m, const double *mem); diff --git a/src/lmm.cpp b/src/lmm.cpp index b811594..6337116 100644 --- a/src/lmm.cpp +++ b/src/lmm.cpp @@ -278,8 +278,8 @@ void CalcPab(const size_t n_cvt, const size_t e_mode, const gsl_vector *Hi_eval, const gsl_matrix *Uab, const gsl_vector *unused, gsl_matrix *Pab) { - size_t n_index = (n_cvt + 2 + 1) * (n_cvt + 2) / 2; // result size - auto ni_test = Uab->size1; // inds + // size_t n_index = (n_cvt + 2 + 1) * (n_cvt + 2) / 2; // result size + // auto ni_test = Uab->size1; // inds assert(Uab->size1 == Hi_eval->size); assert(Uab->size2 == n_index); @@ -593,8 +593,8 @@ $7 = 3 $8 = 6 */ - auto Uab = p->Uab; - auto ab = p->ab; + // auto Uab = p->Uab; + // auto ab = p->ab; assert(n_index == (n_cvt + 2 + 1) * (n_cvt + 2) / 2); assert(Uab->size1 == ni_test); assert(Uab->size2 == n_index); // n_cvt == 1 -> n_index == 6? diff --git a/src/mathfunc.cpp b/src/mathfunc.cpp index cd74e09..aaa9431 100644 --- a/src/mathfunc.cpp +++ b/src/mathfunc.cpp @@ -400,7 +400,7 @@ uint count_abs_small_values(const gsl_vector *v, double min) { // and the ratio of max and min but one (min is expected to be zero). bool isMatrixIllConditioned(const gsl_vector *eigenvalues, double max_ratio) { auto t = abs_minmax(eigenvalues); - auto absmin = get<0>(t); + // auto absmin = get<0>(t); auto absmin1 = get<1>(t); auto absmax = get<2>(t); if (absmax/absmin1 > max_ratio) { diff --git a/src/version.h b/src/version.h index f97c9f1..6c22a1b 100644 --- a/src/version.h +++ b/src/version.h @@ -1,5 +1,5 @@ -// version.h generated by GEMMA ./scripts/gen_version_info.sh -#define GEMMA_VERSION "0.98.2" -#define GEMMA_DATE "2020-05-28" +// version.h generated by GEMMA scripts/gen_version_info.sh +#define GEMMA_VERSION "0.98.3" +#define GEMMA_DATE "2020-09-29" #define GEMMA_YEAR "2020" -#define GEMMA_PROFILE "" +#define GEMMA_PROFILE "/gnu/store/a7a35vv75zk9k23k8ws4v2wrs123dln1-profile" |