The problem lies in ARPACK's using the DLACPY routine to copy arrays where the source and destination overlap. It caused no problem when DLACPY was implemented as a serial operation. Intel MKL 11.0 Update 3 introduces a multithreaded implementation for DLACPY, which manifests the issue of copying overlapped arrays. Note that FORTRAN standard enforces that array arguments passed to a routine to be non-aliased. MKL's threaded DLACPY is taking advantages of this specification, and therefore it is a valid implementation. We have contacted the ARPACK developers and made them aware of this issue. Meanwhile, in order to continue to provide compatibility with the existing ARPACK implementation, we will fully resolve this problem in our next release (Intel MKL 11.0 Update 4).
This article describes two ways ARPACK users can fix the problem on their own before the Intel MKL 11.0 Update 4 release.
- Compile the default dlacpy.f source from the LAPACK directory in the ARPACK source. For example:
ifort -c dlacpy.f
- Modify the ARmake.inc file by adding the dlacpy.o object file produced in the previous step to the link line and make it linked before MKL libraries being linked. For example, suppose you have defined LAPACKLIB to include MKL libraries, then you modify it on the line below the definition with
LAPACKLIB = dlacpy.o $LAPACKLIB
- Rebuild ARPACK.
- Download and save the patch file, arpack_patch.txt.
- Patch the ARPACK source. Execute this command inside the top level directory of ARPACK source tree:
patch -p1 <arpack_patch.txt
- After the patch is successfully applied, rebuild ARPACK.
If there are any questions, please leave comments to this article.
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804