<br><br>----- Original Message -----<br>From: ms &lt;devicerandom@gmail.com&gt;<br>Date: Tuesday, October 12, 2010 5:53<br>Subject: [gmx-users] Compiling with ICC: advantages and -if yes- a suitable protocol? (it seems I can't)<br>To: Discussion list for GROMACS users &lt;gmx-users@gromacs.org&gt;<br><br>&gt; Dear gmx users,<br>&gt; <br>&gt; I have heard (read: read on random blogs here and there) that on <br>&gt; Intel compiling GROMACS with icc instead of gcc can bring up to <br>&gt; 50% performance improvement.<br><br>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.<br><br>GROMACS performance is dependent on <br>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)<br>b) FFT performance (only for PME, and gcc+FFTW3 is only a few percent behind icc+MKL in my tests)<br>c) a whole pile of MD algorithmic effects (but time spent in these is negligible compared with those above)<br><br>You can see this immediately in the timing breakdown reported at the end of the mdrun .log file.<br><br>&gt; Since I always used gcc compiled GROMACS, I'd like to know:<br>&gt; - Is this true?<br><br>No.<br><br>&gt; - If yes, can anybody help me in doing so? I tried but I cannot <br>&gt; find a reasonable protocol online and setting LDFLAGS gives me <br>&gt; quite an headache : my last configure dies this way:<br>&gt; <br>&gt; $ export CC=/opt/intel/Compiler/11.0/081/bin/intel64/icc<br>&gt; $ export LDFLAGS="-L$SOFT/lib -<br>&gt; L/opt/intel/Compiler/11.0/081/lib/intel64 -lguide -lpthread"<br>&gt; $ ./configure --with-fft=fftw3 --program-suffix=_icc --enable-mpi<br>&gt; <br>&gt; checking build system type... x86_64-unknown-linux-gnu<br>&gt; checking host system type... x86_64-unknown-linux-gnu<br>&gt; checking for a BSD-compatible install... /usr/bin/install -c<br>&gt; checking whether build environment is sane... yes<br>&gt; checking for a thread-safe mkdir -p... /bin/mkdir -p<br>&gt; checking for gawk... gawk<br>&gt; checking whether make sets $(MAKE)... yes<br>&gt; checking how to create a ustar tar archive... gnutar<br>&gt; checking for C compiler default output file name... a.out<br>&gt; checking whether the C compiler works... configure: error: <br>&gt; cannot run C compiled programs.<br>&gt; <br>&gt; where config.log says, in the relevant section:<br>&gt; <br>&gt; configure:3441: /opt/intel/Compiler/11.0/081/bin/intel64/icc -<br>&gt; I/home/ms872/software/include -L/home/ms872/software/lib -<br>&gt; L/opt/intel/Compiler/11.0/081/lib/intel64 -lguide -lpthread <br>&gt; conftest.c&nbsp; &gt;&amp;5<br>&gt; configure:3444: $? = 0<br>&gt; configure:3482: result: a.out<br>&gt; configure:3499: checking whether the C compiler works<br>&gt; configure:3509: ./a.out<br>&gt; ./a.out: error while loading shared libraries: libguide.so: <br>&gt; cannot open shared object file: No such file or directory<br>&gt; configure:3512: $? = 127<br>&gt; configure:3521: error: cannot run C compiled programs.<br>&gt; <br>&gt; but if I look for this library:<br>&gt; $ locate libguide.so<br>&gt; /opt/intel/Compiler/11.0/081/lib/intel64/libguide.so<br>&gt; <br>&gt; ...that seems therefore to be in the LDFLAGS!<br>&gt; <br>&gt; Note that I am trying to compile 4.0.7 and not 4.5.1 (because I <br>&gt; then need to apply 3rd-party patches that do not apply to 4.5.1 <br>&gt; yet -but before thinking of that, I want to get the compilation <br>&gt; right, so now it's vanilla gromacs)<br><br>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.<br><br>Mark