[gmx-users] gromacs/mopac compilation: linking libmopac (Javier Cerezo)
Gerrit Groenhof
ggroenh at gwdg.de
Thu Nov 17 11:26:50 CET 2011
>
> 3. Re: gromacs/mopac compilation: linking libmopac (Javier Cerezo)
Dear Javier,
Thanks for this update and your efforts. Can i put it on the website?
Could you check however the outcome (energy and forces) of an am1 or pm3 computations with another program?
Best wishes,
Gerrit
>
> Hi all
>
> I post here the present status of my query in case my findings may be
> helpful for someone else. In the case B (using gfortran to compile
> libmopac) I have some success building g the gromacs binary for mdrun in
> my x86_64 system.
>
> **A
> Regarding the compilation with ifort, making test with simple C code I
> relized that (at least in my case), it is needed to add some extra intel
> libreries during compilation. Concretely I added the mkl libraries
> (maybe libm was enough, but just in case) and the additional libraries
> libifcore, libifcore_pic, libimf, libifport and libintlc (actually the
> two that seem strongly required were libifcore and libintlc). The case
> is that libintlc is only available in shared version, so I fist
> recompiled my libmopac library with -fPIC flag:
>
> ifort -O2 -fPIC -c *f; ar rcv libmopac.a *.o; ranlib libifmopac.a
>
> In my test C simple program, it was possible to link against the static
> libifmopac.a while using other shared libraries (omitting the flag
> -static), so I used --enable-shared. The configure script was
> subsequently called as follows (with double precision as well):
>
> ./configure --prefix
> /home/cerezo/Programas/gromacs-4.5.5_with_ifort_mopac/
> --program-suffix=_d_ifmopac LDFLAGS="-L/home/cerezo/lib
> -L/home/cerezo/lib/fftw/lib -L/usr/share/intel/mkl/lib/intel64
> -L/usr/share/intel/lib/intel64" CPPFLAGS="-DUSE_MOPAC
> -I/home/cerezo/lib/fftw/include" --with-qmmm-mopac
> LIBS="-lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lifcore
> -lifcore_pic -limf -lirc -lifport -lintlc -lifmopac" --disable-threads
> --disable-float
> LD_LIBRARY_PATH=/usr/share/intel/mkl/lib/intel64:/usr/share/intel/lib/intel64::LD_LIBRARY_PATH
>
> Then
>
> make mdrun -j 4
>
> gave the following error:
>
> cc -O3 -fomit-frame-pointer -finline-functions -Wall -Wno-unused -msse2
> -funroll-all-loops -std=gnu99 -fexcess-precision=fast -o .libs/mdrun
> gctio.o ionize.o do_gct.o repl_ex.o xutils.o runner.o md.o mdrun.o
> genalg.o md_openmm.o -L/home/cerezo/lib -L/home/cerezo/lib/fftw/lib
> -L/usr/share/intel/mkl/lib/intel64 -L/usr/share/intel/lib/intel64
> ./.libs/libgmxpreprocess_d.so
> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/mdlib/.libs/libmd_d.so
> ../mdlib/.libs/libmd_d.so /home/cerezo/lib/fftw/lib/libfftw3.so
> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/gmxlib/.libs/libgmx_d.so
> ../gmxlib/.libs/libgmx_d.so -lnsl -lm -lmkl_intel_ilp64 -lmkl_core
> -lmkl_sequential -lifcore -lifcore_pic -limf -lirc -lifport -lintlc
> -lifmopac -Wl,--rpath
> -Wl,/home/cerezo/Programas/gromacs-4.5.5_with_ifort_mopac/lib
> -Wl,--rpath -Wl,/home/cerezo/lib/fftw/lib
> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/mdlib/.libs/libmd_d.so:
> undefined reference to `__svml_asin2'
> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/mdlib/.libs/libmd_d.so:
> undefined reference to `__svml_exp2_mask'
> collect2: ld returned 1 exit status
> make[1]: *** [mdrun] Error 1
> make[1]: se sale del directorio
> «/home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/kernel»
>
>
> **B
> I succeeded to build gromacs/mopac with gfortran compiled libmopac.
> Fisrt I compiled libmopac with:
>
> gfortran -std=legacy -c *.f; ar rcv libmopac.a *.o; ranlib libmopac.a
> (I made the necessary changes to remove the warnings and errors, such as
> changing the calls to SECOND(1) by SECOND() in polar.f and writmo.f)
>
> In this case, gfortran procedures are simply linked with a single
> library: libgfortran, with static version. Thus, I deactivated shared
> option in the configure script. Then, the configure script for gromacs
> looked like:
>
> ./configure --prefix
> /home/cerezo/Programas/gromacs-4.5.5_with_gfor_mopac/
> --program-suffix=_d_mopac LDFLAGS="-L/home/cerezo/lib
> -L/home/cerezo/lib/fftw/lib" CPPFLAGS="-DUSE_MOPAC
> -I/home/cerezo/lib/fftw/include" --with-qmmm-mopac LIBS="-lmopac
> -lgfortran" --disable-threads --disable-float -disable-shared
>
> make mdrun -j 4
>
> make install-mdrun
>
> All worked correctly. However, I got a segmentation fault when running a
> qm/mm calculation, the problem originated at libmopac subroutines.
> Actually, the problem is in the subroutine FOCK2 (in fock2.f), at least
> in my system compiling with gfortran: GNU Fortran (Ubuntu/Linaro
> 4.5.2-8ubuntu4) 4.5.2. The work around comes as follows:
>
> In fock2.f:
> Line 35: IF(ICALCN.NE.NUMCAL) THEN
> [This if loop assures that variable initialization is only made the
> fisrt time the main program calls the subroutine. However, in my
> gfortran compiled binary, the variables were not saved from calls. So I
> capped this loop (is should end at line 89), so that now it looks like:]
> Line 35: IF(ICALCN.NE.NUMCAL) THEN
> Line 36: ICALCN=NUMCAL
> Line 37(new): ENDIF [this was moved from line 89]
>
> And now I could run gromacs/mopac without errors. I guess with another
> compiler, this problem will not arise, but at least here is a solution
> for (standard?) gfortran in a x86_64 system
>
> Javier
>
>
>
> El 10/11/11 14:35, Javier Cerezo escribió:
>> Hi all
>>
>> I am trying to compile gromacs with mopac but I'm experience some
>> problems using libmopac.a. I have a x86_64 processor and I'm trying
>> with gromacs-4.5.5. I've followed the instructions at the website
>> (i.e. to compile libmopac.a, I've used the alternte dcart.f and
>> gmxmop.f) but I didn't succeed. I've also seen that this topic have
>> some times appeared in the mailing list but the trick proposed didn't
>> work for me.
>>
>> Here you have the steps with different scenarios I've gone through:
>>
>> **A: Compilation of libmopac.a with fortran compiler then gromacs
>> installation**
>>
>> [ in mopac fortran folder]
>> javier at mopac/fortran/folder> $FC -O2 -c *.f (where FC=gfortran
>> or ifort)
>> javier at mopac/fortran/folder> ar rcv libmopac.a *.o;ranlib libmopac.a
>> javier at mopac/fortran/folder> cp libmopac.a ~/lib/
>>
>> [in gromacs folder]
>> javier at gromacs/folder> ./configure --prefix
>> /home/cerezo/Programas/gromacs-4.5.5_with_mopac/ --with-qmmm-mopac
>> --without-qmmm-gaussian --disable-threads --disable-shared
>> LDFLAGS="-L/home/cerezo/lib" CPPFLAGS="-DUSE_MOPAC" LIBS="-lmopac"
>> javier at gromacs/folder> make -j 4
>>
>> Then I get lots of "undefined reference" errors:
>> cc -O3 -fomit-frame-pointer -finline-functions -Wall -Wno-unused
>> -msse2 -funroll-all-loops -std=gnu99 -fexcess-precision=fast -o
>> tpbconv tpbconv.o -L/home/cerezo/lib ./.libs/libgmxpreprocess.a
>> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/mdlib/.libs/libmd.a
>> ../mdlib/.libs/libmd.a -lfftw3f
>> /home/cerezo/Programas/src/GROMACS_vX/gromacs-4.5.5/src/gmxlib/.libs/libgmx.a
>> ../gmxlib/.libs/libgmx.a -ldl -lnsl -lm -lmopac
>> /bin/bash ../../libtool --tag=CC --mode=link cc -O3
>> -fomit-frame-pointer -finline-functions -Wall -Wno-unused -msse2
>> -funroll-all-loops -std=gnu99 -fexcess-precision=fast
>> -L/home/cerezo/lib -o g_protonate g_protonate.o libgmxpreprocess.la
>> ../mdlib/libmd.la ../gmxlib/libgmx.la -lnsl -lm -lmopac
>> /bin/bash ../../libtool --tag=CC --mode=link cc -O3
>> -fomit-frame-pointer -finline-functions -Wall -Wno-unused -msse2
>> -funroll-all-loops -std=gnu99 -fexcess-precision=fast
>> -L/home/cerezo/lib -o g_luck g_luck.o libgmxpreprocess.la
>> ../mdlib/libmd.la ../gmxlib/libgmx.la -lnsl -lm -lmopac
>> /home/cerezo/lib/libmopac.a(gmxmop.o): In function `donhco_':
>> gmxmop.f:(.text+0x23e): undefined reference to `for_f90_index'
>> gmxmop.f:(.text+0x26c): undefined reference to `for_f90_index'
>> gmxmop.f:(.text+0x298): undefined reference to `for_f90_index'
>> ...
>> /home/cerezo/lib/libmopac.a(gmxmop.o): In function `deriv_':
>> gmxmop.f:(.text+0x792): undefined reference to `for_f90_index'
>> gmxmop.f:(.text+0x7c0): undefined reference to `for_f90_index'
>> gmxmop.f:(.text+0x7e1): undefined reference to `for_f90_index'
>> /home/javier/lib/libmopac.a(timer.o)(.text+0x11d): In function `timer_':
>> : undefined reference to `for_write_seq_fmt'
>> ... (an so on for each mopac object)
>>
>> Where I think these refer to internal intel fortran functions
>> (compilation with ifort, analogous errors come with gfortran internal
>> functions). So probably I'm missing something to include this function
>> at gromacs compilation time
>>
>> ---
>>
>> **B: Compilation of libmopac.a with f2c+gcc then gromacs installation**
>> javier at mopac/fortran/folder> f2c *.f
>> javier at mopac/fortran/folder> gcc -O2 -c *.c
>> javier at mopac/fortran/folder> ar rcv libmopac.a *.o;ranlib libmopac.a
>> javier at mopac/fortran/folder> cp libmopac.a ~/lib
>>
>> [in gromacs folder]
>> javier at gromacs/folder> ./configure --prefix
>> /home/cerezo/Programas/gromacs-4.5.5_with_mopac/ --with-qmmm-mopac
>> --without-qmmm-gaussian --disable-threads --disable-shared
>> LDFLAGS="-L/home/cerezo/lib" CPPFLAGS="-DUSE_MOPAC" LIBS="-lmopac"
>> javier at gromacs/folder> make -j 4
>>
>> This time I also get "undefined reference errors", but related to f2c
>> funtions:
>> +timout.c0x105:)(:. textundefined+ 0x3c8reference) :to undefined`
>> do_fioreference'
>> totimer.c :`(do_fio.'text
>>
>> In this case, do I need to include the f2c.h file somewhere in the
>> gromacs qmmm interface code?
>>
>> Could someone point me out where I'm mistaking and what should I do to
>> complete the installation?
>>
>> Thanks
>>
>> Javier
>>
>>
>
> --
> Javier CEREZO BASTIDA
> PhD Student
> Physical Chemistry
> Universidad de Murcia
> Murcia (Spain)
> Tlf.(+34)868887434
>
>
>
> ------------------------------
>
> Message: 4
> Date: Thu, 17 Nov 2011 15:51:53 +0530
> From: Ravi Kumar Venkatraman <ravikumarvenkatraman at gmail.com>
> Subject: [gmx-users] Regarding TIP4P structure
> To: gmx-users at gromacs.org
> Message-ID:
> <CA+c-nQzzdJZ25rkkL5qdUN-7SnBY6P5Sacp7zjZLt_vVp3PozQ at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Dear all,
> Could anybody send me the link for getting the tip4p tip3p and
> tip5p single water structure in gro/pdb or in anyother format.
>
> Thank you.
>
> *With Regards,
> Ravi Kumar Venkatraman,
> IPC Dept., IISc,
> Bangalore, INDIA.
>
> +91-9686933963.*
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: http://lists.gromacs.org/pipermail/gmx-users/attachments/20111117/4840f654/attachment.html
>
> ------------------------------
>
> --
> gmx-users mailing list
> gmx-users at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-users
> Please search the archive at http://www.gromacs.org/Support/Mailing_Lists/Search before posting!
>
> End of gmx-users Digest, Vol 91, Issue 117
> ******************************************
More information about the gromacs.org_gmx-users
mailing list