SebWouters / CheMPS2

CheMPS2: a spin-adapted implementation of DMRG for ab initio quantum chemistry
GNU General Public License v2.0
70 stars 34 forks source link

About psi4 plugin for CheMPS2 #34

Closed JunboLu closed 8 years ago

JunboLu commented 8 years ago

Hi, I have compiled the psi4 and CheMPS2 separately. To perform DMRG-CI, DMRG-SCF, and DMRG-CASPT2 calculations, build psi4 with the plugin option ENABLE_PLUGINS=ON. What should I do for such operation? My compilation for psi4 is: cd /home/lujb/psi4 ./setup --prefix /home/lujb/psi4_test/psi4_install -DCMAKE_INSTALL_PREFIX=/home/lujb/psi4_test/psi4_install cd objdir make make install Then I go to psi4plugin folder: cd /home/lujb/psi4/plugin psi4 --new-plugin dmrg but there is problem: psi4: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by psi4)

SebWouters commented 8 years ago

Hi Luyoucai,

I have no experience compiling psi4 with autotools, only with CMake.

With the latter, I typically configure and compile with

BLA_VENDOR=Intel10_64lp CXX=icpc CC=icc CXXFLAGS="-fPIC" F77FLAGS="-fPIC" cmake .. -DENABLE_PLUGINS=ON -DENABLE_DUMMY_PLUGIN=ON
BLA_VENDOR=Intel10_64lp CXX=icpc CC=icc make

I'm not an expert in psi4, so I suggest you ask @loriab or @jturney. Can it be that psi4 or cmake internally mixes versions of libstdc++ ?

Best wishes, Sebastian

SebWouters commented 8 years ago

Hi Luyoucai,

Did you or @loriab or @jturney already figure out what the problem was?

Best wishes, Sebastian

SebWouters commented 8 years ago

I guess it's more or less explained here: http://stackoverflow.com/questions/5216399/usr-lib-libstdc-so-6-version-glibcxx-3-4-15-not-found

SebWouters commented 8 years ago

With http://stackoverflow.com/questions/5216399/usr-lib-libstdc-so-6-version-glibcxx-3-4-15-not-found in mind, what does

locate libstdc++.so.6

return, and which of them contain the GLIBCXX_3.4.15 string?

strings /path/to/libstdc++.so.6 | grep GLIBC

To use psi4, you can then preload the specific library with

LD_PRELOAD=/path/to/libstdc++.so.6 psi4 --new-plugin dmrg

Perhaps it's also easier then in the long term to define a command mypsi4 in your .bashrc:

alias mypsi4='LD_PRELOAD=/path/to/libstdc++.so.6 psi4'

Let me know if it works.