works on x86_64, but fails on IA64

works on x86_64, but fails on IA64

Hi,

I'm trying to build an MD application (Fortran programs) & tools package on SGI IA64 128 core SMP SLES-10 Linux cluster.

The code gets build successfully, but during testing the code fails with Segmentation fault.

The version of ifort:

# ifort -V
Intel Fortran IA-64 Compiler Professional for applications running on IA-64, Version 11.1 Build 20090511 Package ID: l_cprof_p_11.1.038
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.

The C compiler is also of same package as ifort.

Some of the errors occurred during "make test" are:

Running test to compute GB Newton-Raphson and normal modes:

asp(151615): unaligned access to 0x607fffffff3a5994, ip=0x4000000000108010
asp(151615): unaligned access to 0x607fffffff3a5994, ip=0x4000000000108300
asp(151615): unaligned access to 0x607fffffff3a5994, ip=0x40000000001081d0
asp(151615): unaligned access to 0x607fffffff3a5994, ip=0x4000000000108250
asp(151615): unaligned access to 0x607fffffff3a5994, ip=0x4000000000166410

..
---
> MKL ERROR: Parameter 3 was incorrect on entry to DGEMM
> adding 0.00000 to diagonal of the hessian
FAILED (possibly: it is very common to see small diffs here)
..
ptraj: analyze fluctuation matrices
ptraj(151882): unaligned access to 0x607ffffffeb9e164, ip=0x400000000024b990
ptraj(151882): unaligned access to 0x607ffffffeb9e164, ip=0x400000000024bae0
ptraj(151882): unaligned access to 0x607ffffffeb9e164, ip=0x400000000024bae0
ptraj(151882): unaligned access to 0x607ffffffeb9e164, ip=0x400000000024bae0
ptraj(151882): unaligned access to 0x607ffffffeb9e164, ip=0x400000000024bae0
Segmentation fault

The MKL link line is:

IA64 build:

FLIBS= $(LIBDIR)/libsym.a $(LIBDIR)/arpack.a $(LIBDIR)/f2c.a $(MKL_HOME)/lib/64/libmkl_solver_ilp64_sequential.a -Wl,--start-group $(MKL_HOME)/lib/64/libmkl_intel_ilp64.a $(MKL_HOME)/lib/64/libmkl_sequential.a $(MKL_HOME)/lib/64/libmkl_core.a -Wl,--end-group -lpthread

x86_64 build:

FLIBS= $(LIBDIR)/libsym.a $(LIBDIR)/arpack.a $(LIBDIR)/f2c.a -L$(MKL_HOME)/lib/em64t -lmkl_lapack -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

On IA64, I've tried building code using both 32 & 64 bit integers. But no success.

But the same code works well on SGI ICE x86_64 hardware with same compilers and mkl. What could be the problem herewith IA64?

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Well, to begin with, x86_64 hardware can fix up all scalar misalignments, with only a performance penalty, while IA64 can't, without special performance-killing setup.
Next, you told MKL to expect 32-bit integers on x86_64 and 64-bit on IA64. Did you change your source code or compile options accordingly? Your error code would imply not.
Next, it would be surprising if libf2c would work with either ifort. I never saw it implemented reliably on IA64. It certainly wouldn't support 64-bit integers. If one of those libraries is built for g77 rather than ifort, you have a big problem. Besides, g77 never worked well on IA64, nor has it been maintained the last 5 years. SLES-10 supports gfortran (early, possibly buggy, versions, as you probably can't update your SLES-10), and MKL has options for compatibility with it (at least on x86_64), but not in combination with ifort.
I don't have much of a clue about which ifort version is best for the orphaned SLES-10/SGI IA64, but 11.1 post-dates the abandonment of the SGI IA64.

Quoting tim18

Next, you told MKL to expect 32-bit integers on x86_64 and 64-bit on IA64. Did you change your source code or compile options accordingly? Your error code would imply not.
Next, it would be surprising if libf2c would work with either ifort. I never saw it implemented reliably on IA64. It certainly wouldn't support 64-bit integers.

As per your instruction, I used 32 bit integer mkl libraries. The sample tests are working fine now. Thank you very much

Leave a Comment

Please sign in to add a comment. Not a member? Join today