[gmx-users] Compiling with ICC: advantages and -if yes- a suitable protocol? (it seems I can't)

Mark Abraham mark.abraham at anu.edu.au
Tue Oct 12 01:33:52 CEST 2010

----- Original Message -----
From: ms <devicerandom at gmail.com>
Date: Tuesday, October 12, 2010 5:53
Subject: [gmx-users] Compiling with ICC: advantages and -if yes- a suitable protocol? (it seems I can't)
To: Discussion list for GROMACS users <gmx-users at gromacs.org>

> Dear gmx users,
> I have heard (read: read on random blogs here and there) that on 
> Intel compiling GROMACS with icc instead of gcc can bring up to 
> 50% performance improvement.

If you are referring to this post (http://kent-vandervelden.blogspot.com/2010/08/optimization-of-gromacs-407.html) then his comparison is based on use of FFTPACK, and is at best misleading. I've posted a follow-up comment that is awaiting approval. He didn't cite relative performance for gcc+mkl, for starters.

GROMACS performance is dependent on 
a) non-bonded kernels (which are coded in assembler for the large majority of platforms for which icc exists, and so compiler version is largely irrelevant)
b) FFT performance (only for PME, and gcc+FFTW3 is only a few percent behind icc+MKL in my tests)
c) a whole pile of MD algorithmic effects (but time spent in these is negligible compared with those above)

You can see this immediately in the timing breakdown reported at the end of the mdrun .log file.

> Since I always used gcc compiled GROMACS, I'd like to know:
> - Is this true?


> - If yes, can anybody help me in doing so? I tried but I cannot 
> find a reasonable protocol online and setting LDFLAGS gives me 
> quite an headache : my last configure dies this way:
> $ export CC=/opt/intel/Compiler/11.0/081/bin/intel64/icc
> $ export LDFLAGS="-L$SOFT/lib -
> L/opt/intel/Compiler/11.0/081/lib/intel64 -lguide -lpthread"
> $ ./configure --with-fft=fftw3 --program-suffix=_icc --enable-mpi
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... x86_64-unknown-linux-gnu
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking how to create a ustar tar archive... gnutar
> checking for C compiler default output file name... a.out
> checking whether the C compiler works... configure: error: 
> cannot run C compiled programs.
> where config.log says, in the relevant section:
> configure:3441: /opt/intel/Compiler/11.0/081/bin/intel64/icc -
> I/home/ms872/software/include -L/home/ms872/software/lib -
> L/opt/intel/Compiler/11.0/081/lib/intel64 -lguide -lpthread 
> conftest.c  >&5
> configure:3444: $? = 0
> configure:3482: result: a.out
> configure:3499: checking whether the C compiler works
> configure:3509: ./a.out
> ./a.out: error while loading shared libraries: libguide.so: 
> cannot open shared object file: No such file or directory
> configure:3512: $? = 127
> configure:3521: error: cannot run C compiled programs.
> but if I look for this library:
> $ locate libguide.so
> /opt/intel/Compiler/11.0/081/lib/intel64/libguide.so
> ...that seems therefore to be in the LDFLAGS!
> Note that I am trying to compile 4.0.7 and not 4.5.1 (because I 
> then need to apply 3rd-party patches that do not apply to 4.5.1 
> yet -but before thinking of that, I want to get the compilation 
> right, so now it's vanilla gromacs)

Probably you need LD_RUN_PATH set properly to load these shared libraries at run time, or to use LDFLAGS="-static" (or something) to force linking of a static executable.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-users/attachments/20101012/177fcfd0/attachment.html>

More information about the gromacs.org_gmx-users mailing list