[petsc-users] MKL BLAS interface inconsistency

Alexander Grayver agrayver at gfz-potsdam.de
Thu Apr 5 09:06:55 CDT 2012


Now everything works! Thanks for such a quick fix.

On 05.04.2012 15:53, Matthew Knepley wrote:
> On Thu, Apr 5, 2012 at 8:05 AM, Barry Smith <bsmith at mcs.anl.gov 
> <mailto:bsmith at mcs.anl.gov>> wrote:
>
>
>       Matt,
>
>        It doesn't look like that link line is even linking against the
>     MKL libraries?
>
>
> Dang, this is a bug with specifying --with-blas-lapack-lib, since it 
> all gets dumped in
> self.lapackLib, then self.blasLib is empty. Pushed a fix to 
> BuildSystem. Testing now.
>
>    Matt
>
>
>       Barry
>
>     On Apr 5, 2012, at 7:54 AM, Alexander Grayver wrote:
>
>     > On 05.04.2012 14:42, Matthew Knepley wrote:
>     >> On Thu, Apr 5, 2012 at 7:22 AM, Alexander Grayver
>     <agrayver at gfz-potsdam.de <mailto:agrayver at gfz-potsdam.de>> wrote:
>     >> On 05.04.2012 14:13, Jed Brown wrote:
>     >>> On Thu, Apr 5, 2012 at 04:54, Alexander Grayver
>     <agrayver at gfz-potsdam.de <mailto:agrayver at gfz-potsdam.de>> wrote:
>     >>> The inconsistency is still there. I pulled petsc-dev today and
>     came across with the same problem:
>     >>>
>     >>> src/vec/vec/impls/seq/bvec2.c
>     >>> 239:    *z = PetscRealPart(BLASdot_(&bn,xx,&one,xx,&one));
>     >>> 240:    *z = PetscSqrtReal(*z);
>     >>>
>     >>> This doesn't work with Intel MKL. However in one of the
>     mailing list discussions it was said there is now check for that.
>     >>> This check didn't work for me apparently. Any ideas why?
>     >>>
>     >>> As always, we need configure.log.
>     >>>
>     >> Please find it attached.
>     >>
>     >> Please ALWAYS ALWAYS ALWAYS send configure.log to
>     petsc-maint at mcs.anl.gov <mailto:petsc-maint at mcs.anl.gov>. They are too
>     >> big for the public list.
>     >
>     > Sorry, next time I will.
>     >
>     >>
>     >> Second, your problem is that we get a link error tying to test
>     this so it looks like
>     >> your BLAS have no complex implementations:
>     >
>     > It does have zdotc. Old petsc-dev works with it fine (after I
>     patched vec implementaton myself to get around this issue).
>     >
>     > home> nm
>     /opt/intel/Compiler/11.1/072/mkl/lib/em64t/libmkl_intel_lp64.a |
>     grep zdotc
>     > cblas_zdotci_lp64.o:
>     > 0000000000000000 T cblas_zdotci_sub
>     > cblas_zdotc_lp64.o:
>     > 0000000000000000 T cblas_zdotc_sub
>     >                  U zdotc
>     > _zdotci_lp64.o:
>     >                  U mkl_blas_zdotci
>     > 0000000000000000 T zdotci
>     > 0000000000000000 T zdotci_
>     > _zdotc_lp64.o:
>     >                  U mkl_blas_zdotc
>     > 0000000000000000 T zdotc
>     > 0000000000000000 T zdotc_
>     > home>
>     >
>     >>
>     >> sh: /opt/mpi/intel/openmpi-1.4.2/bin/mpicc  -o
>     /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest    -wd1572
>     -Qoption,cpp,--extended_float_type -g
>     /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.o  -ldl
>     -L/opt/mpi/intel/openmpi-1.4.2/lib -lmpi -lopen-rte -lopen-pal
>     -lnsl -lutil -L/opt/mpi/intel/openmpi-1.4.2/lib
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L//opt/intel/Compiler/11.1/072/lib/intel64
>     -L/usr/lib64/gcc/x86_64-suse-linux/4.3
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L/usr/x86_64-suse-linux/lib -limf -lsvml -lipgo -ldecimal -lgcc_s
>     -lirc -lpthread -lirc_s -L/opt/mpi/intel/openmpi-1.4.2/lib
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L//opt/intel/Compiler/11.1/072/lib/intel64
>     -L/usr/lib64/gcc/x86_64-suse-linux/4.3
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L/usr/x86_64-suse-linux/lib -ldl
>     >> Executing: /opt/mpi/intel/openmpi-1.4.2/bin/mpicc  -o
>     /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest    -wd1572
>     -Qoption,cpp,--extended_float_type -g
>     /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.o  -ldl
>     -L/opt/mpi/intel/openmpi-1.4.2/lib -lmpi -lopen-rte -lopen-pal
>     -lnsl -lutil -L/opt/mpi/intel/openmpi-1.4.2/lib
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L//opt/intel/Compiler/11.1/072/lib/intel64
>     -L/usr/lib64/gcc/x86_64-suse-linux/4.3
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L/usr/x86_64-suse-linux/lib -limf -lsvml -lipgo -ldecimal -lgcc_s
>     -lirc -lpthread -lirc_s -L/opt/mpi/intel/openmpi-1.4.2/lib
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L//opt/intel/Compiler/11.1/072/lib/intel64
>     -L/usr/lib64/gcc/x86_64-suse-linux/4.3
>     -L/opt/intel/Compiler/11.1/072/ipp/em64t/lib
>     -L/opt/intel/Compiler/11.1/072/mkl/interfaces/fftw3xf
>     -L/usr/x86_64-suse-linux/lib -ldl
>     >> sh:
>     >> Possible ERROR while running linker:
>     /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.o: In
>     function `main':
>     >> /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.c:14:
>     undefined reference to `zdotc_'
>     >>  output: ret = 256
>     >> error message =
>     {/tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.o: In
>     function `main':
>     >> /tmp/petsc-8AEO1f/config.packages.BlasLapack/conftest.c:14:
>     undefined reference to `zdotc_'
>     >> }
>     >>
>     >>
>     >>     Matt
>     >>
>     >> In include/petscblaslapack_uscore.h (and other places), you
>     will find the following. So we need to know why
>     PETSC_COMPLEX_DOT_RESULT_ARGUMENT was not found by configure.
>     >>
>     >> This I can see...
>     >>
>     >>
>     >>>
>     >>> #ifdef PETSC_COMPLEX_DOT_RESULT_ARGUMENT
>     >>> EXTERN_C_BEGIN
>     >>> extern void zdotc_(PetscScalar *,const PetscBLASInt*,const
>     PetscScalar*,const PetscBLASInt*,const PetscScalar*,const
>     PetscBLASInt*);
>     >>> PETSC_STATIC_INLINE PetscScalar BLASdot_(const PetscBLASInt
>     *n,const PetscScalar *x,const PetscBLASInt *sx,const PetscScalar
>     *y,const PetscBLASInt *sy) {
>     >>>   PetscScalar tmpz;
>     >>>   zdotc_(&tmpz,n,x,sx,y,sy);
>     >>>   return tmpz;
>     >>> }
>     >>> EXTERN_C_END
>     >>> #else
>     >>> #  define BLASdot_     zdotc_
>     >>> #endif
>     >>
>     >>
>     >>
>     >> --
>     >> Regards,
>     >> Alexander
>     >>
>     >>
>     >>
>     >>
>     >> --
>     >> What most experimenters take for granted before they begin
>     their experiments is infinitely more interesting than any results
>     to which their experiments lead.
>     >> -- Norbert Wiener
>     >
>     >
>     > --
>     > Regards,
>     > Alexander
>     >
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener


-- 
Regards,
Alexander

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120405/fc8edd1a/attachment.htm>


More information about the petsc-users mailing list