From 22df0dbcfa877e85bf5c29d7ff6808f7116cafb7 Mon Sep 17 00:00:00 2001 From: Eijiro Shibusawa Date: Tue, 12 Dec 2023 19:53:43 +0100 Subject: biology/gcta: chase the upgrade of OpenBLAS GCTA should modify the LAPACK functios calls, this is a temporary fix. See . PR: 273219 Approved by: jwb@ --- biology/gcta/Makefile | 1 + biology/gcta/files/patch-include_Matrix.hpp | 24 ++++++++++++++++++++++++ biology/gcta/files/patch-include_cpu.h | 7 ++++--- biology/gcta/files/patch-main_mkl.cpp | 24 ++++++++++++++++++++++++ biology/gcta/files/patch-src_StatLib.cpp | 19 +++++++++++++++++++ 5 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 biology/gcta/files/patch-include_Matrix.hpp create mode 100644 biology/gcta/files/patch-main_mkl.cpp create mode 100644 biology/gcta/files/patch-src_StatLib.cpp diff --git a/biology/gcta/Makefile b/biology/gcta/Makefile index c9aef3210017..a1721656f2ae 100644 --- a/biology/gcta/Makefile +++ b/biology/gcta/Makefile @@ -1,6 +1,7 @@ PORTNAME= gcta DISTVERSIONPREFIX= v DISTVERSION= 1.94.1 +PORTREVISION= 1 CATEGORIES= biology MAINTAINER= jwb@FreeBSD.org diff --git a/biology/gcta/files/patch-include_Matrix.hpp b/biology/gcta/files/patch-include_Matrix.hpp new file mode 100644 index 000000000000..5039c75580bb --- /dev/null +++ b/biology/gcta/files/patch-include_Matrix.hpp @@ -0,0 +1,24 @@ +--- include/Matrix.hpp.orig 2022-08-03 06:01:52 UTC ++++ include/Matrix.hpp +@@ -32,7 +32,9 @@ bool _LLT(MatrixType &A, double &logdet){ + #if GCTA_CPU_x86 + dpotrf(&uplo, &cols, vi, &cols, &info); + #else +- dpotrf_(&uplo, &cols, vi, &cols, &info); ++ // OpenBLAS 0.3.25 requires a length argument. Is 1 the right value? ++ // Should all dgeqrf_() calls be patched? ++ dpotrf_(&uplo, &cols, vi, &cols, &info, 1); + #endif + //LOGGER << " LLT time: " << LOGGER.tp("LLT") << std::endl; + if(info == 0){ +@@ -41,7 +43,9 @@ bool _LLT(MatrixType &A, double &logdet){ + #if GCTA_CPU_x86 + dpotri(&uplo, &cols, vi, &cols, &info); + #else +- dpotri_(&uplo, &cols, vi, &cols, &info); ++ // OpenBLAS 0.3.25 requires a length argument. Is 1 the right value? ++ // Should all doptri_() calls be patched? ++ dpotri_(&uplo, &cols, vi, &cols, &info, 1); + #endif + //LOGGER << " LLT inverse time: " << LOGGER.tp("LLT_INV") << std::endl; + if(info == 0){ diff --git a/biology/gcta/files/patch-include_cpu.h b/biology/gcta/files/patch-include_cpu.h index 41c192d4c5f7..92a8e4dd1212 100644 --- a/biology/gcta/files/patch-include_cpu.h +++ b/biology/gcta/files/patch-include_cpu.h @@ -1,15 +1,16 @@ ---- include/cpu.h.orig 2023-10-13 13:09:13 UTC +--- include/cpu.h.orig 2022-08-03 06:01:52 UTC +++ include/cpu.h -@@ -13,7 +13,7 @@ +@@ -13,7 +13,8 @@ #define GCTA_ARCH_i386 0 #endif -#if GCTA_ARCH_x86_64 || GCTA_ARCH_i386 ++// GCTA_ARCH_x86 is used (mostly) to enable Intel's MKL library +#if !defined(__FreeBSD__) && (GCTA_ARCH_x86_64 || GCTA_ARCH_i386) #define GCTA_CPU_x86 1 #else #define GCTA_CPU_x86 0 -@@ -50,4 +50,4 @@ +@@ -50,4 +51,4 @@ #include #endif diff --git a/biology/gcta/files/patch-main_mkl.cpp b/biology/gcta/files/patch-main_mkl.cpp new file mode 100644 index 000000000000..a74cbecfa6fd --- /dev/null +++ b/biology/gcta/files/patch-main_mkl.cpp @@ -0,0 +1,24 @@ +--- main/mkl.cpp.orig 2023-11-20 14:09:49 UTC ++++ main/mkl.cpp +@@ -365,7 +365,9 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix + #if GCTA_CPU_x86 + dpotrf(&uplo, &int_n, Vi_mkl, &int_n, &info); + #else +- dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info); ++ // OpenBLAS 0.3.25 requires a length argument. Is 1 the right value? ++ // Should all dpotrf_() calls be patched? ++ dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info, 1); + #endif + //LOGGER << "Finished decompose" << endl; + //spotrf( &uplo, &n, Vi_mkl, &n, &info ); +@@ -386,7 +388,9 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix + #if GCTA_CPU_x86 + dpotri(&uplo, &int_n, Vi_mkl, &int_n, &info); + #else +- dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info); ++ // OpenBLAS 0.3.25 requires a length argument. Is 1 the right value? ++ // Should all dpotri_() calls be patched? ++ dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info, 1); + #endif + //LOGGER << "Inverse finished" << endl; + //spotri( &uplo, &n, Vi_mkl, &n, &info ); diff --git a/biology/gcta/files/patch-src_StatLib.cpp b/biology/gcta/files/patch-src_StatLib.cpp new file mode 100644 index 000000000000..bde6badd351a --- /dev/null +++ b/biology/gcta/files/patch-src_StatLib.cpp @@ -0,0 +1,19 @@ +--- src/StatLib.cpp.orig 2022-08-03 06:01:52 UTC ++++ src/StatLib.cpp +@@ -1,3 +1,4 @@ ++ + /* + GCTA: a tool for Genome-wide Complex Trait Analysis + +@@ -117,8 +118,10 @@ namespace StatLib{ + dormqr(&side, &t, &n, &n, &n, X, &lda, tau, c, + &lda, work, &lwork, &info); + #else ++ // OpenBLAS 0.3.25 requires a length argument. Is 1 the right value? ++ // Should all dormqr_() calls be patched? + dormqr_(&side, &t, &n, &n, &n, X, &lda, tau, c, +- &lda, work, &lwork, &info); ++ &lda, work, &lwork, &info, 1, 1); + #endif + if(info != 0){ + return false; -- cgit v1.2.3