On 05.04.2012 14:42, Matthew Knepley wrote:
On Thu, Apr 5, 2012 at 7:22 AM, Alexander Grayver <[email protected] <mailto:[email protected]>> wrote:
On 05.04.2012 14:13, Jed Brown wrote:
On Thu, Apr 5, 2012 at 04:54, Alexander Grayver <[email protected] <mailto:[email protected]>> 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 [email protected] <mailto:[email protected]>. 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