El 23/08/2012, a las 18:11, Barry Smith escribi?: > > Jose, > > This is great, thanks so much! > > Does Satish need to roll a new > http://ftp.mcs.anl.gov/pub/petsc/externalpackages/f2cblaslapack-3.1.1.q.tar.gz > tar ball? I'm guessing yes? >
No. I used the one that is currently brought by --download-f2cblaslapack Anyway, it would be a good opportunity to upgrade to Lapack 3.4 (the toclapack.sh script should work for this version as well). Jose > > > Barry > > > > > On Aug 23, 2012, at 11:02 AM, "Jose E. Roman" <jroman at dsic.upv.es> wrote: > >> >> El 22/08/2012, a las 18:52, Jose E. Roman escribi?: >> >>> f2cblaslapack is more or less prepared for this case already (it is not >>> much tested though, we will make some tests for the w* subroutines >>> tomorrow). >>> >>> What is not ready is PETSc itself. Some definitions are missing. For >>> instance, PetscScalar is undefined, so one should add the following to >>> petscmath.h:106: >>> >>> #elif defined(PETSC_USE_REAL___FLOAT128) >>> typedef __complex128 PetscScalar; >>> >>> #define PetscRealPart(a) crealq(a) >>> #define PetscImaginaryPart(a) cimagq(a) >>> #define PetscAbsScalar(a) cabsq(a) >>> #define PetscConj(a) conjq(a) >>> #define PetscSqrtScalar(a) csqrtq(a) >>> #define PetscPowScalar(a,b) cpowq(a,b) >>> #define PetscExpScalar(a) cexpq(a) >>> #define PetscLogScalar(a) clogq(a) >>> #define PetscSinScalar(a) csinq(a) >>> #define PetscCosScalar(a) ccosq(a) >>> >>> Similarly, MPIU_SCALAR should be defined. Maybe other as well. >>> >>> Jose >> >> I have pushed a change to petsc-dev that allows to configure >> --with-precision=__float128 --with-scalar-type=complex >> >> I have tested this with src/ksp/ksp/examples/tutorials/ex12.c with 1 and 2 >> processes. It seems to work. >> >> Please review the change, since I had to modify pinit.c >> >> A couple of comments: >> >> 1) The f2cblaslapack interface to quad precision subroutines (q* and w*) is >> defined only in the case of "uscore" mangling. Maybe a test in configure >> should assure this. >> >> 2) I could not make it work --with-clanguage=c++ - I get compilation errors >> like this. Any idea? >> >> /usr/include/c++/4.6/complex: In function ?_Tp std::__complex_abs(const >> std::complex<_Tp>&) [with _Tp = __float128]?: >> /usr/include/c++/4.6/complex:592:68: instantiated from ?_Tp std::abs(const >> std::complex<_Tp>&) [with _Tp = __float128]? >> /home/jroman/soft/petsc-dev/src/sys/utils/sortd.c:116:26: instantiated >> from here >> /usr/include/c++/4.6/complex:571:50: error: call of overloaded >> ?abs(__float128&)? is ambiguous >> /usr/include/c++/4.6/complex:571:50: note: candidates are: >> /usr/include/c++/4.6/cmath:82:3: note: double std::abs(double) >> /usr/include/c++/4.6/cmath:86:3: note: float std::abs(float) >> /usr/include/c++/4.6/cmath:90:3: note: long double std::abs(long double) >> /usr/include/c++/4.6/complex:571:50: error: call of overloaded >> ?abs(__float128&)? is ambiguous >> /usr/include/c++/4.6/complex:571:50: note: candidates are: >> /usr/include/c++/4.6/cmath:82:3: note: double std::abs(double) >> /usr/include/c++/4.6/cmath:86:3: note: float std::abs(float) >> /usr/include/c++/4.6/cmath:90:3: note: long double std::abs(long double) >> /usr/include/c++/4.6/complex:576:46: error: call of overloaded >> ?sqrt(__float128)? is ambiguous >> /usr/include/c++/4.6/complex:576:46: note: candidates are: >> /usr/include/x86_64-linux-gnu/bits/mathcalls.h:158:1: note: double >> sqrt(double) >> /usr/include/c++/4.6/cmath:416:3: note: float std::sqrt(float) >> /usr/include/c++/4.6/cmath:420:3: note: long double std::sqrt(long double) >> >> >> >
