diff options
author | maho <maho@FreeBSD.org> | 2007-03-08 16:26:19 +0800 |
---|---|---|
committer | maho <maho@FreeBSD.org> | 2007-03-08 16:26:19 +0800 |
commit | 593e0d6bfd6562d63dc12d186d9a24dd4f22e1b7 (patch) | |
tree | 5938a9db1d378b03ea9e5b41c268cab31643ac35 /math | |
parent | 7934292f0c4b71262d66bdbac8b7ee8b6043d244 (diff) | |
download | freebsd-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/Makefile | 2 | ||||
-rw-r--r-- | math/atlas/files/patch-ATL_cmmJIK.c | 14 | ||||
-rw-r--r-- | math/atlas/files/patch-ATL_dmm4x4x8_US.c | 14 | ||||
-rw-r--r-- | math/atlas/files/patch-Make.top | 13 | ||||
-rw-r--r-- | math/atlas/files/patch-USIII.flg | 27 | ||||
-rw-r--r-- | math/atlas/files/patch-config.c | 15 | ||||
-rw-r--r-- | math/atlas/files/patch-ilaenv.f | 220 | ||||
-rw-r--r-- | math/atlas/files/patch-mmsearch.c | 16 | ||||
-rw-r--r-- | math/atlas/files/patch-tfc.c | 13 |
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; |