Hi!
I am trying to install VASP.5.4.4 using Intel oneapi 2024 compilers. In the near past I was able to compile VASP.5.4.4 using the 2023 (or older) oneapi versions. But, now I am having trouble. I tried to adapt the makefile.include following these instructions:
https://www.vasp.at/wiki/index.php/Make ... ude.oneapi
https://www.intel.com/content/www/us/en ... ilers.html
My makefile.include:
# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxIFC\"\
-DMPI -DMPI_BLOCK=8000 -Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Duse_bse_te \
-Dtbdyn \
-Duse_shmem \
-Dshmem_bcast_buffer \
-Dshmem_rproj
CPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)
FC = mpiifort -fc=ifx
FCL = mpiifort -fc=ifx
FREE = -free -names lowercase
FFLAGS = -assume byterecl -w
OFLAG = -O2
OFLAG_IN = $(OFLAG)
DEBUG = -O0
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = icx
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB = linpack_double.o getshmem.o
# For the parser library
CXX_PARS = icpx
LLIBS = -lstdc++
##
## Customize as of this point! Of course you may change the preceding
## part of this file as well if you like, but it should rarely be
## necessary ...
##
# When compiling on the target machine itself, change this to the
# relevant target when cross-compiling for another architecture
VASP_TARGET_CPU ?= -xHOST
FFLAGS += $(VASP_TARGET_CPU)
# Intel MKL (FFTW, BLAS, LAPACK, and scaLAPACK)
# (Note: for Intel Parallel Studio's MKL use -mkl instead of -qmkl)
FCL += -qmkl=sequential
MKLROOT ?= /opt/intel/oneapi/mkl/2024.1
MKL_PATH = $(MKLROOT)/lib/intel64 /opt/intel/oneapi/2024.1/lib
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
INCS = -I/opt/fftw-3.3.10 -I/opt/fftw-3.3.10/api -I/opt/fftw-3.3.10/mpi
My log from the compilation (only the final lines):
mpiifort -fc=ifx -qmkl=sequential -o vasp c2f_interface.o base.o profiling.o openmp.o mpi.o mpi_shmem.o smart_allocate.o xml.o constant.o jacobi.o main_mpi.o scala.o asa.o lattice.o poscar.o ini.o mgrid.o xclib.o vdw_nl.o xclib_grad.o radial.o pseudo.o gridq.o ebs.o mkpoints.o wave.o wave_mpi.o wave_high.o bext.o spinsym.o symlib.o symmetry.o lattlib.o random.o nonl.o nonlr.o nonl_high.o dfast.o choleski2.o mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o constrmag.o cl_shift.o relativistic.o LDApU.o paw_base.o metagga.o egrad.o pawsym.o pawfock.o pawlhf.o rhfatm.o hyperfine.o paw.o mkpoints_full.o charge.o Lebedev-Laikov.o stockholder.o dipol.o solvation.o pot.o dos.o elf.o tet.o tetweight.o hamil_rot.o chain.o dyna.o k-proj.o sphpro.o us.o core_rel.o aedens.o wavpre.o wavpre_noio.o broyden.o dynbr.o reader.o writer.o tutor.o xml_writer.o brent.o stufak.o fileio.o opergrid.o stepver.o chgloc.o fast_aug.o fock_multipole.o fock.o fock_dbl.o mkpoints_change.o subrot_cluster.o sym_grad.o mymath.o npt_dynamics.o subdftd3.o internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o hamil_high.o nmr.o pead.o subrot.o subrot_scf.o paircorrection.o rpa_force.o force.o pwlhf.o gw_model.o optreal.o steep.o rmm-diis.o davidson.o david_inner.o lcao_bare.o locproj.o electron.o rot.o electron_all.o shm.o pardens.o optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o hamil_lr.o rmm-diis_lr.o subrot_lr.o lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o linear_optics.o setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o gauss_quad.o m_unirnk.o varpro.o minimax.o mlwf.o wnpr.o ratpol.o pade_fit.o screened_2e.o wave_cacher.o crpa.o chi_base.o wpot.o local_field.o ump2.o ump2kpar.o fcidump.o ump2no.o bse_te.o bse.o acfdt.o chi.o sydmat.o rmm-diis_mlr.o linear_response_NMR.o wannier_interpol.o linear_response.o dmft.o auger.o dmatrix.o elphon.o fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o main.o -Llib -ldmy -lstdc++ -L/opt/intel/oneapi/mkl/2024.1/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
ld: locproj.o: na função "locproj_mp_lprj_reader_":
locproj.f90:(.text+0x99): referência não definida para "parse_file_C"
ld: locproj.f90:(.text+0x1da): referência não definida para "fill_basis_info_C"
ld: locproj.f90:(.text+0x1ef): referência não definida para "free_parser_C"
ld: locproj.f90:(.text+0x3bf): referência não definida para "free_parser_C"
make[2]: *** [makefile:145: vasp] Erro 1
make[2]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
cp: não foi possível obter estado de 'vasp': Arquivo ou diretório inexistente
make[1]: *** [makefile:142: all] Erro 1
make[1]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
make: *** [makefile:10: std] Erro 2
Translation:
referência não definida = reference not defined for
cp: não foi possível obter estado de 'vasp': Arquivo ou diretório inexistente = cp: unable to get status of 'vasp': No such file or directory
It seems that the problem is the C compiler with locproj.f90 source code. How can I solved it?
Thanks!
Ricardo Oliveira.
VASP.5.4.4 with Intel oneapi 2024
Moderators: Global Moderator, Moderator
-
- Newbie
- Posts: 2
- Joined: Tue Nov 19, 2019 7:55 pm
-
- Global Moderator
- Posts: 504
- Joined: Mon Nov 04, 2019 12:41 pm
- Contact:
Re: VASP.5.4.4 with Intel oneapi 2024
Hi Ricardo,
I think the problem is just that you are not including the parser libraries in the linking stage.
Adding the following lines to your `makefile.include` should do the trick:
Let me know if that does not work!
PS: A tradução não é necessária para mim porque português é a minha língua nativa. Mas é bom para outros utilizadores que encontrem o mesmo problema
I think the problem is just that you are not including the parser libraries in the linking stage.
Adding the following lines to your `makefile.include` should do the trick:
Code: Select all
LIBS += parser
LLIBS += -Lparser -lparser -lstdc++
PS: A tradução não é necessária para mim porque português é a minha língua nativa. Mas é bom para outros utilizadores que encontrem o mesmo problema
-
- Newbie
- Posts: 2
- Joined: Tue Nov 19, 2019 7:55 pm
Re: VASP.5.4.4 with Intel oneapi 2024
Hi!
When I tried with:
LIBS += parser
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -Lparser -lparser -lstdc++
I got the error:
icpx: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
lex.yy.c:691:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
691 | register yy_state_type yy_current_state;
| ^~~~~~~~
lex.yy.c:692:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
692 | register char *yy_cp, *yy_bp;
| ^~~~~~~~
lex.yy.c:692:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
692 | register char *yy_cp, *yy_bp;
| ^~~~~~~~
lex.yy.c:693:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
693 | register int yy_act;
| ^~~~~~~~
lex.yy.c:741:4: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
741 | register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
| ^~~~~~~~
lex.yy.c6: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1089 | register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1090 | register char *source = (yytext_ptr);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1091 | register int number_to_move, i;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1091 | register int number_to_move, i;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1223 | register yy_state_type yy_current_state;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1224 | register char *yy_cp;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1230 | register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1255 | register int yy_is_jam;
| ^~~~~~~~
lex.yy.c6: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1256 | register char *yy_cp = (yy_c_buf_p);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1258 | register YY_CHAR yy_c = 1;
| ^~~~~~~~
lex.yy.c33: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1276 | static void yyunput (int c, register char * yy_bp )
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1278 | register char *yy_cp;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1288 | register yy_size_t number_to_move = (yy_n_chars) + 2;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1289 | register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
| ^~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
________________________________________________________________
When I removed the LIBS flag I have this error (ld: could not find -lparser):
mpiifort -fc=ifx -o vasp c2f_interface.o base.o profiling.o openmp.o mpi.o mpi_shmem.o smart_allocate.o xml.o constant.o jacobi.o main_mpi.o scala.o asa.o lattice.o poscar.o ini.o mgrid.o xclib.o vdw_nl.o xclib_grad.o radial.o pseudo.o gridq.o ebs.o mkpoints.o wave.o wave_mpi.o wave_high.o bext.o spinsym.o symlib.o symmetry.o lattlib.o random.o nonl.o nonlr.o nonl_high.o dfast.o choleski2.o mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o constrmag.o cl_shift.o relativistic.o LDApU.o paw_base.o metagga.o egrad.o pawsym.o pawfock.o pawlhf.o rhfatm.o hyperfine.o paw.o mkpoints_full.o charge.o Lebedev-Laikov.o stockholder.o dipol.o solvation.o pot.o dos.o elf.o tet.o tetweight.o hamil_rot.o chain.o dyna.o k-proj.o sphpro.o us.o core_rel.o aedens.o wavpre.o wavpre_noio.o broyden.o dynbr.o reader.o writer.o tutor.o xml_writer.o brent.o stufak.o fileio.o opergrid.o stepver.o chgloc.o fast_aug.o fock_multipole.o fock.o fock_dbl.o mkpoints_change.o subrot_cluster.o sym_grad.o mymath.o npt_dynamics.o subdftd3.o internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o hamil_high.o nmr.o pead.o subrot.o subrot_scf.o paircorrection.o rpa_force.o force.o pwlhf.o gw_model.o optreal.o steep.o rmm-diis.o davidson.o david_inner.o lcao_bare.o locproj.o electron.o rot.o electron_all.o shm.o pardens.o optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o hamil_lr.o rmm-diis_lr.o subrot_lr.o lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o linear_optics.o setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o gauss_quad.o m_unirnk.o varpro.o minimax.o mlwf.o wnpr.o ratpol.o pade_fit.o screened_2e.o wave_cacher.o crpa.o chi_base.o wpot.o local_field.o ump2.o ump2kpar.o fcidump.o ump2no.o bse_te.o bse.o acfdt.o chi.o sydmat.o rmm-diis_mlr.o linear_response_NMR.o wannier_interpol.o linear_response.o dmft.o auger.o dmatrix.o elphon.o fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o main.o -Llib -ldmy -L/opt/intel/oneapi/mkl/2024.1/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -Lparser -lparser -lstdc++
ld: não foi possível localizar -lparser
make[2]: *** [makefile:145: vasp] Erro 1
make[2]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
cp: não foi possível obter estado de 'vasp': Arquivo ou diretório inexistente
make[1]: *** [makefile:142: all] Erro 1
make[1]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
make: *** [makefile:10: std] Erro 2
________________________________________________________________
Also, if I remove the "-lparser" flag, I got "undefined reference" errors concerning several objects.
What I am missing here?
Muito obrigado amigo! Saudações brasileiras!
When I tried with:
LIBS += parser
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -Lparser -lparser -lstdc++
I got the error:
icpx: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
lex.yy.c:691:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
691 | register yy_state_type yy_current_state;
| ^~~~~~~~
lex.yy.c:692:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
692 | register char *yy_cp, *yy_bp;
| ^~~~~~~~
lex.yy.c:692:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
692 | register char *yy_cp, *yy_bp;
| ^~~~~~~~
lex.yy.c:693:2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
693 | register int yy_act;
| ^~~~~~~~
lex.yy.c:741:4: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
741 | register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
| ^~~~~~~~
lex.yy.c6: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1089 | register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1090 | register char *source = (yytext_ptr);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1091 | register int number_to_move, i;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1091 | register int number_to_move, i;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1223 | register yy_state_type yy_current_state;
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1224 | register char *yy_cp;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1230 | register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1255 | register int yy_is_jam;
| ^~~~~~~~
lex.yy.c6: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1256 | register char *yy_cp = (yy_c_buf_p);
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1258 | register YY_CHAR yy_c = 1;
| ^~~~~~~~
lex.yy.c33: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1276 | static void yyunput (int c, register char * yy_bp )
| ^~~~~~~~
lex.yy.c2: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1278 | register char *yy_cp;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1288 | register yy_size_t number_to_move = (yy_n_chars) + 2;
| ^~~~~~~~
lex.yy.c3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
1289 | register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
| ^~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
________________________________________________________________
When I removed the LIBS flag I have this error (ld: could not find -lparser):
mpiifort -fc=ifx -o vasp c2f_interface.o base.o profiling.o openmp.o mpi.o mpi_shmem.o smart_allocate.o xml.o constant.o jacobi.o main_mpi.o scala.o asa.o lattice.o poscar.o ini.o mgrid.o xclib.o vdw_nl.o xclib_grad.o radial.o pseudo.o gridq.o ebs.o mkpoints.o wave.o wave_mpi.o wave_high.o bext.o spinsym.o symlib.o symmetry.o lattlib.o random.o nonl.o nonlr.o nonl_high.o dfast.o choleski2.o mix.o hamil.o xcgrad.o xcspin.o potex1.o potex2.o constrmag.o cl_shift.o relativistic.o LDApU.o paw_base.o metagga.o egrad.o pawsym.o pawfock.o pawlhf.o rhfatm.o hyperfine.o paw.o mkpoints_full.o charge.o Lebedev-Laikov.o stockholder.o dipol.o solvation.o pot.o dos.o elf.o tet.o tetweight.o hamil_rot.o chain.o dyna.o k-proj.o sphpro.o us.o core_rel.o aedens.o wavpre.o wavpre_noio.o broyden.o dynbr.o reader.o writer.o tutor.o xml_writer.o brent.o stufak.o fileio.o opergrid.o stepver.o chgloc.o fast_aug.o fock_multipole.o fock.o fock_dbl.o mkpoints_change.o subrot_cluster.o sym_grad.o mymath.o npt_dynamics.o subdftd3.o internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o hamil_high.o nmr.o pead.o subrot.o subrot_scf.o paircorrection.o rpa_force.o force.o pwlhf.o gw_model.o optreal.o steep.o rmm-diis.o davidson.o david_inner.o lcao_bare.o locproj.o electron.o rot.o electron_all.o shm.o pardens.o optics.o constr_cell_relax.o stm.o finite_diff.o elpol.o hamil_lr.o rmm-diis_lr.o subrot_lr.o lr_helper.o hamil_lrf.o elinear_response.o ilinear_response.o linear_optics.o setlocalpp.o wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o gauss_quad.o m_unirnk.o varpro.o minimax.o mlwf.o wnpr.o ratpol.o pade_fit.o screened_2e.o wave_cacher.o crpa.o chi_base.o wpot.o local_field.o ump2.o ump2kpar.o fcidump.o ump2no.o bse_te.o bse.o acfdt.o chi.o sydmat.o rmm-diis_mlr.o linear_response_NMR.o wannier_interpol.o linear_response.o dmft.o auger.o dmatrix.o elphon.o fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o main.o -Llib -ldmy -L/opt/intel/oneapi/mkl/2024.1/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -Lparser -lparser -lstdc++
ld: não foi possível localizar -lparser
make[2]: *** [makefile:145: vasp] Erro 1
make[2]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
cp: não foi possível obter estado de 'vasp': Arquivo ou diretório inexistente
make[1]: *** [makefile:142: all] Erro 1
make[1]: Saindo do diretório '/usr/local/vasp/vasp.5.4.4/build/std'
make: *** [makefile:10: std] Erro 2
________________________________________________________________
Also, if I remove the "-lparser" flag, I got "undefined reference" errors concerning several objects.
What I am missing here?
Muito obrigado amigo! Saudações brasileiras!
-
- Global Moderator
- Posts: 504
- Joined: Mon Nov 04, 2019 12:41 pm
- Contact:
Re: VASP.5.4.4 with Intel oneapi 2024
I have not tried compiling vasp.5.4.4 using oneapi 2024, and we don't officially support it. Sorry.
That being said, you might be able to compile the parser by removing all the occurrences of `register` from lex.yy.c manually or defining an empty preprocessor macro "#define register" or something like that.
If you have lex and bison you might also just regenerate lex.yy.c by uncommenting the lines in src/parser/makefile.
Espero ter ajudado! Saudações
That being said, you might be able to compile the parser by removing all the occurrences of `register` from lex.yy.c manually or defining an empty preprocessor macro "#define register" or something like that.
If you have lex and bison you might also just regenerate lex.yy.c by uncommenting the lines in src/parser/makefile.
Espero ter ajudado! Saudações