Changeset 14
- Timestamp:
- 04/09/07 12:02:27 (2 years ago)
- Files:
-
- 5 modified
-
Makefile (modified) (1 diff)
-
include/fflas-ffpack/fflas.h (modified) (1 diff)
-
include/fflas-ffpack/ffpack_ludivine.inl (modified) (2 diffs)
-
tests/Makefile (modified) (2 diffs)
-
tests/test-lqup.C (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r9 r14 1 1 VERSION=1.1.2 2 2 3 FFLAS_FFPACK_DIR=/home/ pernet/Logiciels/fflas-ffpack4 LINBOX_DIR=/home/ pernet/Logiciels/linbox3 FFLAS_FFPACK_DIR=/home/cpernet/Logiciels/fflas-ffpack 4 LINBOX_DIR=/home/cpernet/Logiciels/linbox 5 5 6 6 -
include/fflas-ffpack/fflas.h
r13 r14 8 8 * See COPYING for license information. 9 9 */ 10 #include <math.h> 10 11 11 12 #ifndef __FFLAS_H -
include/fflas-ffpack/ffpack_ludivine.inl
r13 r14 37 37 typename Field::Element * A, const size_t lda, size_t*P, 38 38 size_t *Q, const enum FFPACK_LUDIVINE_TAG LuTag){ 39 static typename Field::Element mone,one ;39 static typename Field::Element mone,one,zero; 40 40 F.init(one,1.0); 41 F.init(zero,0.0); 41 42 F.neg (mone, one); 42 43 size_t MN = MIN(M,N); … … 45 46 46 47 for (size_t k = 0; k < MN; ++k){ 47 write_field(F,cerr<<"A = "<<endl,A,M,N,lda);48 cerr<<"Q["<<r<<"] = "<<Q[r]<<endl;49 48 size_t p = r; 49 Acurr = A+k*lda+r; 50 50 while ((p < N) && F.isZero (*(Acurr++))) 51 51 p++; 52 if (p == N){ 53 Q[r] ++; 54 Acurr += lda; 55 } else { 52 if (p < N){ 56 53 P[r] = p; 57 if (r < Q[r]) 58 fcopy (F, N-r, (A + r*(lda+1)), 1, (A+Q[r]*lda+r),1); 54 if (r < k){ 55 fcopy (F, N-r, (A + r*(lda+1)), 1, (A+k*lda+r),1); 56 Acurr = A+r+k*lda; 57 for (size_t i=r; i<N; ++i) 58 F.assign(*(Acurr++),zero); 59 } 60 59 61 fswap (F, M, A+r, lda, A+p, lda); 60 Acurr += lda +1;62 Q[r] = k; 61 63 r++; 62 Q[r] = r; 63 } 64 if (Q[r]<M){ 65 write_field(F,cerr<<"A avant = "<<endl,A,M,N,lda); 66 ftrsv (F, FflasUpper, FflasTrans, FflasNonUnit, r, A, lda, A+(Q[r])*lda, 1); 67 write_field(F,cerr<<"A milieu = "<<endl,A,M,N,lda); 68 fgemv (F, FflasTrans, N-r,r, mone, A+r, lda, A+(Q[r])*lda, 1, one, Acurr, 1); 64 } 65 if (k+1<M){ 66 ftrsv (F, FflasUpper, FflasTrans, FflasNonUnit, r, A, lda, A+(k+1)*lda, 1); 67 fgemv (F, FflasTrans, r, N-r, mone, A+r, lda, A+(k+1)*lda, 1, one, A+(k+1)*lda+r, 1); 69 68 } else 70 69 return r; -
tests/Makefile
r4 r14 4 4 # root for the blas library, for ex. /home/foo/ATLAS/lib/Linux_P4SSE2 5 5 #BLASROOT = /home/cpernet/Logiciels/ATLAS_Opteron64/lib/ 6 BLASROOT = /home/ pernet/Logiciels/ATLAS/lib/Linux_PIIISSE26 BLASROOT = /home/cpernet/Logiciels/GotoBLAS 7 7 8 8 # ATLAS BLAS users : uncomment these lines: 9 CXXFLAGS+=-D__LINBOX_HAVE_CBLAS10 LOADLIBES+=-L${BLASROOT} -lcblas -latlas9 #CXXFLAGS+=-D__LINBOX_HAVE_CBLAS 10 #LOADLIBES+=-L${BLASROOT} -lcblas -latlas 11 11 12 12 # GotoBlas BLAS users : uncomment this line 13 #LOADLIBES+=-L${BLASROOT} -lgoto13 LOADLIBES+=-L${BLASROOT} -lgoto 14 14 15 15 # Other BLAS users, uncomment this line … … 17 17 18 18 # architecture parameter for gcc (-march option) for ex. pentium4, athlon ... 19 ARCH = -march=pentium319 #ARCH = -march=pentium3 20 20 #ARCH = -march=pentium4 21 21 #ARCH = -march=athlon 22 22 #ARCH = -march=opteron 23 ARCH = -march=opteron -m64 -mtune=k8 23 24 24 25 #---------------------------------------------------------- -
tests/test-lqup.C
r4 r14 20 20 #include "Matio.h" 21 21 #include "timer.h" 22 #include "fflas-ffpack/modular- balanced.h"22 #include "fflas-ffpack/modular-positive.h" 23 23 #include "fflas-ffpack/ffpack.h" 24 24 … … 36 36 exit(-1); 37 37 } 38 Field F( atoi(argv[1]));38 Field F((unsigned long)atoi(argv[1])); 39 39 Field::Element * A; 40 40 … … 63 63 tim.clear(); 64 64 tim.start(); 65 R = FFPACK::LUdivine (F, diag, m, n, A, n, P, Q,66 FFPACK::FfpackLQUP, cutoff);65 R = FFPACK::LUdivine_gauss (F, diag, m, n, A, n, P, Q, 66 FFPACK::FfpackLQUP); 67 67 tim.stop(); 68 68 timc+=tim; 69 69 } 70 70 //write_field (F,cerr<<"Result = "<<endl, A, m,n,n); 71 71 72 // cerr<<"P = ["; 73 // for (size_t i=0; i<n; ++i) 74 // cerr<<P[i]<<" "; 75 // cerr<<"]"<<endl; 76 // cerr<<"Q = ["; 77 // for (size_t i=0; i<m; ++i) 78 // cerr<<Q[i]<<" "; 79 // cerr<<"]"<<endl; 72 80 #if DEBUG 73 81 Field::Element * L = new Field::Element[m*m]; … … 84 92 F.assign (*(U + i*n + j), *(A+ i*n+j)); 85 93 } 94 for (size_t i=R;i<m; ++i) 95 for (size_t j=0; j<n; ++j) 96 F.assign(*(U+i*n+j), zero); 86 97 for ( int i=0; i<m; ++i ){ 87 98 int j=0; 88 for (; j< ((i< n)?i:n) ; ++j )99 for (; j< ((i<R)?i:R) ; ++j ) 89 100 F.assign( *(L + i*m+j), *(A+i*n+j)); 90 101 for (; j<m; ++j ) … … 92 103 } 93 104 94 FFPACK::applyP( F, FFLAS::FflasRight, FFLAS::FflasNoTrans, m,0,m, L, m, Q); 105 // write_field(F,cerr<<"L = "<<endl,L,m,m,m); 106 // write_field(F,cerr<<"U = "<<endl,U,m,n,n); 107 FFPACK::applyP( F, FFLAS::FflasRight, FFLAS::FflasNoTrans, m,0,R, L, m, Q); 95 108 if (diag == FFLAS::FflasNonUnit) 96 109 for ( int i=0; i<m; ++i )
