crest-lab / crest

CREST - A program for the automated exploration of low-energy molecular chemical space.
https://crest-lab.github.io/crest-docs/
GNU Lesser General Public License v3.0
201 stars 42 forks source link

compilation problem in tblite_api #333

Closed krzys-r closed 2 months ago

krzys-r commented 2 months ago

I'm trying to compile crest 3.0.1 on RHEL9 (gcc and gfortran 11.4.1). I've compiled OpenBLAS 0.3.28 and cmake-step has worked. However compilation stops here: [ 58%] Building Fortran object CMakeFiles/crest-object.dir/src/calculator/tblite_api.F90.o /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:39:34: ` 39 | use tblite_ceh_singlepoint,only:ceh_guess | 1 Error: Symbol ‘ceh_guess’ referenced at (1) not found in module ‘tblite_ceh_singlepoint’ /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:140:51: 140 | call new_gfn1_calculator(tblite%calc,mctcmol) | 1 Error: Missing actual argument for argument ‘error’ at (1) /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:143:51: 143 | call new_gfn2_calculator(tblite%calc,mctcmol) | 1 Error: Missing actual argument for argument ‘error’ at (1) /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:146:52: 146 | call new_ipea1_calculator(tblite%calc,mctcmol) | 1 Error: Missing actual argument for argument ‘error’ at (1) /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:149:50: 149 | call new_ceh_calculator(tblite%calc,mctcmol) | 1 Error: Missing actual argument for argument ‘error’ at (1) /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:152:93: 152 | call new_ceh_calculator(tblite%calc,mctcmol) !> doesn't matter but needs initialization | 1 Error: Missing actual argument for argument ‘error’ at (1) /mnt/homes/Sources/crest/crest-3.0.1/src/calculator/tblite_api.F90:164:53: 164 | call new_gfn2_calculator(tblite%calc,mctcmol) | 1 Error: Missing actual argument for argument ‘error’ at (1) make[2]: [CMakeFiles/crest-object.dir/build.make:465: CMakeFiles/crest-object.dir/src/calculator/tblite_api.F90.o] Error 1 make[2]: Leaving directory '/mnt/homes/Sources/crest/crest-3.0.1/_build' make[1]: [CMakeFiles/Makefile2:2207: CMakeFiles/crest-object.dir/all] Error 2 make[1]: Leaving directory '/mnt/homes/Sources/crest/crest-3.0.1/_build' make: *** [Makefile:146: all] Error 2`

Help would be very appreciated, Kris

pprcht commented 2 months ago

Hi, The tblite people have renamed some of their subroutines and updated input/output arguments on a few others, which means there is a mismatch between some tblite and CREST builds. The best advice is to clear up whatever build you were trying to do, clone the most recent source code (i.e. as of #331 at the time of writing, which should internally be already flagged as 3.0.2), do the git submodule update, and then try to build again.

krzys-r commented 2 months ago

Hi Philipp and thanks for help but it's still not working. I'm quite sure that I do it not correctly, as I'm not really familiar with git. What I did is: git clone https://github.com/crest-lab/crest.git cd crest git submodule update cmake -DLAPACK_LIBRARIES="/Services/lapack/liblapack.a" -DBLAS_LIBRARIES="/Services/OpenBLAS/lib/libopenblas.a" -B _build make -C _build and now I have a lot of new errors all in crest/src/calculator/tblite_api

:(

pprcht commented 2 months ago

Did the git submodule update actually do something? you may need to use git submodule update --init instead, which should populate different git projects in the subprojects/ directory. Otherwise CMake may look for a tblite installation on your system that is incompatible, which would be my guess why you are still seeing the errors.

The CMake build with the submodules should work this way, otherwise the automatic workflows build wouldn't be passing: CMake build and unit tests

pprcht commented 2 months ago

FYI, I just updated the GitHub workflows so a static binary based on a gfortran/openblas build is available for download:

Download (GNU)

krzys-r commented 2 months ago

Thank you for the static build. I'm using it at the moment.

Back to compilation questions... git submodule update --init did helped. All modules were compiled, however the linking was unsuccessful ( Linking Fortran shared library libcrest.so -- can not be used when making a shared object; recompile with -fPIC). So I changed in CMakeCache.txt the variable WITH_OBJECT to false, and then it went smoothly.

I want to optimize BLAS and Crest for different CPUs we have in our small cluster.

Once again: thanks for your help, Kris