aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEijiro Shibusawa <phd_kimberlite@yahoo.co.jp>2023-12-12 18:53:43 +0000
committerThierry Thomas <thierry@FreeBSD.org>2023-12-12 19:03:50 +0000
commit22df0dbcfa877e85bf5c29d7ff6808f7116cafb7 (patch)
tree222626bbdcd2de78e000e31d1db9190d3bfc19e6
parent84ca7effd38f7ff589ef044ad453b93d688542f6 (diff)
downloadports-22df0dbcfa877e85bf5c29d7ff6808f7116cafb7.tar.gz
ports-22df0dbcfa877e85bf5c29d7ff6808f7116cafb7.zip
biology/gcta: chase the upgrade of OpenBLAS
GCTA should modify the LAPACK functios calls, this is a temporary fix. See <https://github.com/jianyangqt/gcta/issues/59>. PR: 273219 Approved by: jwb@
-rw-r--r--biology/gcta/Makefile1
-rw-r--r--biology/gcta/files/patch-include_Matrix.hpp24
-rw-r--r--biology/gcta/files/patch-include_cpu.h7
-rw-r--r--biology/gcta/files/patch-main_mkl.cpp24
-rw-r--r--biology/gcta/files/patch-src_StatLib.cpp19
5 files changed, 72 insertions, 3 deletions
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 <lapack.h>
#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;