[petsc-users] MKL BLAS interface inconsistency

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


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

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


More information about the petsc-users mailing list