aboutsummaryrefslogtreecommitdiffstats
path: root/math
diff options
context:
space:
mode:
authormaho <maho@FreeBSD.org>2007-03-08 16:26:19 +0800
committermaho <maho@FreeBSD.org>2007-03-08 16:26:19 +0800
commit593e0d6bfd6562d63dc12d186d9a24dd4f22e1b7 (patch)
tree5938a9db1d378b03ea9e5b41c268cab31643ac35 /math
parent7934292f0c4b71262d66bdbac8b7ee8b6043d244 (diff)
downloadfreebsd-ports-graphics-593e0d6bfd6562d63dc12d186d9a24dd4f22e1b7.tar.gz
freebsd-ports-graphics-593e0d6bfd6562d63dc12d186d9a24dd4f22e1b7.tar.zst
freebsd-ports-graphics-593e0d6bfd6562d63dc12d186d9a24dd4f22e1b7.zip
Fix errata listed at http://math-atlas.sourceforge.net/errata.html and
bump portrevision. Submitted by: bf <bf2006a@yahoo.com>
Diffstat (limited to 'math')
-rw-r--r--math/atlas/Makefile2
-rw-r--r--math/atlas/files/patch-ATL_cmmJIK.c14
-rw-r--r--math/atlas/files/patch-ATL_dmm4x4x8_US.c14
-rw-r--r--math/atlas/files/patch-Make.top13
-rw-r--r--math/atlas/files/patch-USIII.flg27
-rw-r--r--math/atlas/files/patch-config.c15
-rw-r--r--math/atlas/files/patch-ilaenv.f220
-rw-r--r--math/atlas/files/patch-mmsearch.c16
-rw-r--r--math/atlas/files/patch-tfc.c13
9 files changed, 333 insertions, 1 deletions
diff --git a/math/atlas/Makefile b/math/atlas/Makefile
index 864d2f44bae..d5cd6969aca 100644
--- a/math/atlas/Makefile
+++ b/math/atlas/Makefile
@@ -10,7 +10,7 @@
PORTNAME= atlas
PORTVERSION= 3.6.0
-PORTREVISION= 2
+PORTREVISION= 3
PORTEPOCH= 1
CATEGORIES= math
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
diff --git a/math/atlas/files/patch-ATL_cmmJIK.c b/math/atlas/files/patch-ATL_cmmJIK.c
new file mode 100644
index 00000000000..14dca5155a1
--- /dev/null
+++ b/math/atlas/files/patch-ATL_cmmJIK.c
@@ -0,0 +1,14 @@
+http://math-atlas.sourceforge.net/errata.html
+Error in complex gemm for A*A^T.
+
+--- src/blas/gemm/ATL_cmmJIK.c Mon Dec 22 09:08:00 2003
++++ src/blas/gemm/ATL_cmmJIK.c Wed Mar 7 00:26:46 2007
+@@ -190,7 +190,7 @@
+ pA = ATL_AlignPtr(vB);
+ if (TA == AtlasNoTrans)
+ Mjoin(PATL,row2blkT2_a1)(M, K, A, lda, pA, alpha);
+- else Mjoin(PATL,col2blk_a1)(K, M, A, lda, pA, alpha);
++ else Mjoin(PATL,col2blk2_a1)(K, M, A, lda, pA, alpha);
+ /*
+ * Can't write directly to C if alpha is not one
+ */
diff --git a/math/atlas/files/patch-ATL_dmm4x4x8_US.c b/math/atlas/files/patch-ATL_dmm4x4x8_US.c
new file mode 100644
index 00000000000..653cd331a34
--- /dev/null
+++ b/math/atlas/files/patch-ATL_dmm4x4x8_US.c
@@ -0,0 +1,14 @@
+http://math-atlas.sourceforge.net/errata.html
+Error in UltraSPARC cleanup
+
+--- tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c Mon Dec 22 09:12:04 2003
++++ tune/blas/gemm/CASES/ATL_dmm4x4x8_US.c Wed Mar 7 02:57:37 2007
+@@ -272,7 +272,7 @@
+ !
+ ! For K == 1, we never enter the loop at all
+ !
+-#if (KB != 2)
++#if (KB != 8)
+ #if KB == 0
+ subcc Kstart, %g0, %g0
+ bz KDRAIN
diff --git a/math/atlas/files/patch-Make.top b/math/atlas/files/patch-Make.top
new file mode 100644
index 00000000000..6f062fff02a
--- /dev/null
+++ b/math/atlas/files/patch-Make.top
@@ -0,0 +1,13 @@
+http://math-atlas.sourceforge.net/errata.html
+make kill from topdir removes libraries
+
+--- Make.top Mon Dec 22 09:06:32 2003
++++ Make.top Wed Mar 7 02:15:31 2007
+@@ -211,7 +211,6 @@
+ rm -rf src/blas/reference/level1/$(arch)
+ rm -rf src/auxil/$(arch)
+ rm -rf src/testing/$(arch)
+- rm -rf lib/$(arch)
+ rm -rf bin/$(arch)
+
+ killall :
diff --git a/math/atlas/files/patch-USIII.flg b/math/atlas/files/patch-USIII.flg
new file mode 100644
index 00000000000..73948021777
--- /dev/null
+++ b/math/atlas/files/patch-USIII.flg
@@ -0,0 +1,27 @@
+http://math-atlas.sourceforge.net/errata.html
+Error in compiler flags for gcc/USIII arch defaults
+
+--- tune/blas/gemm/CASES/ccases.flg Mon Dec 22 09:12:07 2003
++++ tune/blas/gemm/CASES/ccases.flg Wed Mar 7 03:06:39 2007
+@@ -5,7 +5,7 @@
+ -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O
+ 306 192 4 4 8 0 4 4 4 8 ATL_mm4x4x8p.c "R. Clint Whaley" \
+ gcc
+--O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
++-mcpu=ultrasparc -mtune=ultrasparc -O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
+ 307 192 4 4 16 1 0 4 4 16 ATL_smm4x4x16_av.c "R. Clint Whaley"
+ 308 192 4 4 4 1 0 4 4 4 ATL_smm4x4x4_av.c "R. Clint Whaley"
+ 309 16 0 0 4 1 0 4 4 4 ATL_smmMNCU_av.c "R. Clint Whaley"
+
+--- tune/blas/gemm/CASES/scases.flg Mon Dec 22 09:12:07 2003
++++ tune/blas/gemm/CASES/scases.flg Wed Mar 7 03:08:48 2007
+@@ -5,7 +5,7 @@
+ -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O
+ 306 192 4 4 8 0 4 4 4 8 ATL_mm4x4x8p.c "R. Clint Whaley" \
+ gcc
+--O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
++-mcpu=ultrasparc -mtune=ultrasparc -O -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2
+ 307 192 4 4 16 1 0 4 4 16 ATL_smm4x4x16_av.c "R. Clint Whaley"
+ 308 192 4 4 4 1 0 4 4 4 ATL_smm4x4x4_av.c "R. Clint Whaley"
+ 309 16 0 0 4 1 0 4 4 4 ATL_smmMNCU_av.c "R. Clint Whaley"
+
diff --git a/math/atlas/files/patch-config.c b/math/atlas/files/patch-config.c
index c7417d2ff76..f96f241f373 100644
--- a/math/atlas/files/patch-config.c
+++ b/math/atlas/files/patch-config.c
@@ -180,3 +180,18 @@
fprintf(fpout, " LIBS = %s\n\n", LIBS);
fprintf(fpout,
+
+http://math-atlas.sourceforge.net/errata.html
+String overrun in config for long compiler paths
+
+--- config.c Mon Dec 22 09:06:32 2003
++++ config.c Wed Mar 7 02:08:34 2007
+@@ -3411,7 +3411,7 @@
+ char LIBS[256];
+ char TAR[256], GZIP[256], GUNZIP[256], PMAKE[128];
+
+- char comp[64], cflg[512], ln[512], tnam[256], archdef[256], mmdef[256];
++ char comp[512], cflg[512], ln[512], tnam[256], archdef[256], mmdef[256];
+ char BC[256], BCFLAGS[256];
+ int GOGO=0, L2IsKnown=0, Use3DNow=0, TuneL1=1;
+ int USEDEFL1=0;
diff --git a/math/atlas/files/patch-ilaenv.f b/math/atlas/files/patch-ilaenv.f
new file mode 100644
index 00000000000..53b834de59c
--- /dev/null
+++ b/math/atlas/files/patch-ilaenv.f
@@ -0,0 +1,220 @@
+http://math-atlas.sourceforge.net/errata.html
+Large blocking factors hurt LAPACK performance for small N
+
+--- interfaces/lapack/F77/src/ilaenv.f Mon Dec 22 09:07:51 2003
++++ interfaces/lapack/F77/src/ilaenv.f Mon Mar 5 12:41:41 2007
+@@ -7,7 +7,7 @@
+ * June 30, 1999
+ *
+ * -- Modified by R. Clint Whaley for ATLAS Fortran77 LAPACK interface,
+-* 1999
++* 1999, 2006
+ *
+ * .. Scalar Arguments ..
+ CHARACTER*( * ) NAME, OPTS
+@@ -111,6 +111,7 @@
+ CHARACTER*3 C3
+ CHARACTER*6 SUBNAM
+ INTEGER I, IC, IZ, NB, NBMIN, NX
++ INTEGER MN, ATLNB
+ * ..
+ * .. Intrinsic Functions ..
+ INTRINSIC CHAR, ICHAR, INT, MIN, REAL
+@@ -207,13 +208,10 @@
+ * ISPEC = 1: block size
+ *
+ * ATLAS sets default blocking factor to the internal blocking factor of
+-* GEMM. In routines such as QR where unblocked code addresses a panel
+-* (as opposed to a NBxNB block as in POTF2), this will often be too large
+-* to provide the optimal performance due to the slowness of the panel
+-* factorization. Asymptotically, however, you will want it at least
+-* this big. Therefore, we choose this NB as default since how much smaller
+-* an NB is required is very problem size and system architecture
+-* dependent. Note that the recursive routines provided by ATLAS
++* GEMM. For particular routines, we then examine input parameters to
++* see if we should reduce it (for instance, to ensure that we don't
++* spend too much time in the unblocked level-2 portion of the algorithm).
++* Note that the recursive routines provided by ATLAS
+ * (presently, LU & Cholesky) do not need this value.
+ *
+ NB = 60
+@@ -226,6 +224,179 @@
+ ELSE IF (DCPLX) THEN
+ CALL ATL_F77WRAP_ZGETNB(NB)
+ ENDIF
++ ATLNB = NB
++*
++* Find minimum dimension of problem: don't want NB bigger than that
++*
++ MN = N1
++ IF (N2 .GT. 0) THEN
++ IF (MN .GT. N2) MN = N2
++ IF (N3 .GT. 0) THEN
++ IF (MN .GT. N3) MN = N3
++ IF (N4 .GT. 0) THEN
++ IF (MN .GT. N4) MN = N4
++ END IF
++ END IF
++ END IF
++*
++* Make sure NB is not close to size of entire dimension, unless smallest
++* dimension is so small you might as well use unblocked code the whole way
++*
++ IF (MN .LE. 3) THEN
++ NB = MN;
++ ELSE IF (NB*5 .GT. MN) THEN
++ IF (MN .LT. 16) THEN
++ IF (MN .LT. 8) THEN
++ NB = 2
++ ELSE
++ NB = 4
++ END IF
++ ELSE
++ NB = (MN / 4)
++ IF (NB .GT. 4) THEN
++ NB = (NB/4)*4
++ ENDIF
++ END IF
++ END IF
++ IF( C2.EQ.'GE' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ NB = NB
++*
++* QR requires extra flops for blocking, so restrain total NB
++*
++ ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
++ $ C3.EQ.'QLF' ) THEN
++ IF (NB .GT. 80) THEN
++ IF( SNAME ) THEN
++ NB = 60
++ ELSE
++ NB = 40
++ END IF
++ END IF
++ ELSE IF( C3.EQ.'HRD' ) THEN
++ IF (NB .GT. 80) THEN
++ IF( SNAME ) THEN
++ NB = 60
++ ELSE
++ NB = 40
++ END IF
++ END IF
++ ELSE IF( C3.EQ.'BRD' ) THEN
++ IF (NB .GT. 80) THEN
++ IF( SNAME ) THEN
++ NB = 60
++ ELSE
++ NB = 40
++ END IF
++ END IF
++ ELSE IF( C3.EQ.'TRI' ) THEN
++ NB = NB
++ END IF
++ ELSE IF( C2.EQ.'PO' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ NB = NB
++ END IF
++ ELSE IF( C2.EQ.'SY' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ NB = NB
++ ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
++ IF (NB .GT. 80) THEN
++ IF( SNAME ) THEN
++ NB = 60
++ ELSE
++ NB = 40
++ END IF
++ END IF
++ ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
++ NB = NB
++ END IF
++ ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ NB = NB
++ ELSE IF( C3.EQ.'TRD' ) THEN
++ IF (NB .GT. 80) THEN
++ IF( SNAME ) THEN
++ NB = 60
++ ELSE
++ NB = 40
++ END IF
++ END IF
++ ELSE IF( C3.EQ.'GST' ) THEN
++ NB = NB
++ END IF
++ ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
++ IF( C3( 1:1 ).EQ.'G' ) THEN
++ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
++ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
++ $ C4.EQ.'BR' ) THEN
++ IF (NB .GT. 80) NB = 60
++ END IF
++ ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
++ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
++ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
++ $ C4.EQ.'BR' ) THEN
++ IF (NB .GT. 80) NB = 60
++ END IF
++ END IF
++ ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
++ IF( C3( 1:1 ).EQ.'G' ) THEN
++ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
++ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
++ $ C4.EQ.'BR' ) THEN
++ IF (NB .GT. 80) NB = 40
++ END IF
++ ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
++ IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
++ $ C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
++ $ C4.EQ.'BR' ) THEN
++ IF (NB .GT. 80) NB = 40
++ END IF
++ END IF
++ ELSE IF( C2.EQ.'GB' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ IF( SNAME ) THEN
++ NB = NB
++ ELSE
++ NB = NB
++ END IF
++ END IF
++ ELSE IF( C2.EQ.'PB' ) THEN
++ IF( C3.EQ.'TRF' ) THEN
++ IF( SNAME ) THEN
++ IF( N2.LE.64 ) THEN
++ NB = NB
++ ELSE
++ NB = NB
++ END IF
++ ELSE
++ IF( N2.LE.64 ) THEN
++ NB = NB
++ ELSE
++ NB = NB
++ END IF
++ END IF
++ END IF
++ ELSE IF( C2.EQ.'TR' ) THEN
++ IF( C3.EQ.'TRI' ) THEN
++ IF( SNAME ) THEN
++ NB = NB
++ ELSE
++ NB = NB
++ END IF
++ END IF
++ ELSE IF( C2.EQ.'LA' ) THEN
++ IF( C3.EQ.'UUM' ) THEN
++ IF( SNAME ) THEN
++ NB = NB
++ ELSE
++ NB = NB
++ END IF
++ END IF
++ ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
++ IF( C3.EQ.'EBZ' ) THEN
++ NB = 1
++ END IF
++ END IF
+ *
+ ILAENV = NB
+ RETURN
diff --git a/math/atlas/files/patch-mmsearch.c b/math/atlas/files/patch-mmsearch.c
new file mode 100644
index 00000000000..eb91fa7af5b
--- /dev/null
+++ b/math/atlas/files/patch-mmsearch.c
@@ -0,0 +1,16 @@
+http://math-atlas.sourceforge.net/errata.html
+Misdetection of nregs causes some x86 installs to go awry.
+
+--- tune/blas/gemm/mmsearch.c Mon Dec 22 09:11:57 2003
++++ tune/blas/gemm/mmsearch.c Wed Mar 7 02:42:27 2007
+@@ -822,6 +822,10 @@
+ int lat, NO1D=0;
+ double mf0, mf1, mf;
+
++ #if defined(ATL_GAS_x8632) || defined(ATL_GAS_x8664)
++ return(0);
++ #endif
++
+ if (pre == 'z') pre = 'd';
+ else if (pre == 'c') pre = 's';
+
diff --git a/math/atlas/files/patch-tfc.c b/math/atlas/files/patch-tfc.c
new file mode 100644
index 00000000000..3520d7f5974
--- /dev/null
+++ b/math/atlas/files/patch-tfc.c
@@ -0,0 +1,13 @@
+http://math-atlas.sourceforge.net/errata.html
+Install dies in tfc / ?Xover.h is incomplete
+--- tune/blas/gemm/tfc.c Mon Dec 22 09:11:57 2003
++++ tune/blas/gemm/tfc.c Wed Mar 7 02:01:20 2007
+@@ -55,7 +55,7 @@
+ double time00();
+
+ #define DENMAT 175
+-#define MAXALLOC (3*1024*1024*8)
++#define MAXALLOC (8*1024*1024*8)
+
+ #ifdef ATL_DeclareSlens
+ F77_INTEGER ATL_Slen1, ATL_Slen2;