Failled to build rel-MaX-2 with Chess and ELSI
Summary:
I'm trying to compile SIESTA MaX 2. I'm having a lot of problems with Chess, ELSI, PEXSI, and Elpa.
I tried many sources and different ways to build the but I conclude that the issue comes from some scripting issues.
Code version:
rel-MaX-2
System information:
-
Operating system and version = Pop!_OS 21.04 x86_64
-
Compiler and version used = gcc 10.3.0
-
Libraries and versions used = -lscalapack-openmpi -lopenblas -lz -lflookall -ldl -lmetis -lzmumps -lcmumps -ldmumps -lmumps_common -lpord -lsmumps -lesmumps -lscotch -lscotcherr -fopenmp -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lhdf5_fortran -lelpa -lCheSS-1 -lfutile-1 -lyaml -latlab-1 -lfutile-1 -ldicts -lfmalloc-1 -lMatrixSwitch -lpspBLAS -lOMM -ldbcsr
-
the arch.make file is attached.
-
Parallel run
Compilation output:
There are many issues but ill start with elpa-elsi:
Using els-bundle, siesta-bundle, and the manual installation. Elpa builds well with apt install libelpa-dev and siesta compiles with no problems. But, manual installation and bundles failed either in the ./config or in make. The same thing happens with Elsi even if I install with or without Elpa. In the bundles, some dependencies also fail. I'm guessing that this is a problem with the installation script. Another funny thing is that I have no option to tell Elsi that Elpa is installed in the system. You have to refer to a manual install.
The problem with Chess is that version that one can download from the web page https://launchpad.net/chess fails. Then, BigDFT directory fails to start with the output
List of modules to be treated: ['libyaml', 'PyYAML', 'futile', 'atlab', 'chess', '']
Traceback (most recent call last):
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 710, in <module>
BigDFTInstaller(args.action,args.package,args.file,\
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 184, in __init__
getattr(self,action)()
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 463, in build
self.jhbuildaction(TINDERBOX, self.package+co)
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 293, in jhbuildaction
raise RuntimeError('JHBuild failed to complete ' + action)
RuntimeError: JHBuild failed to complete tinderbox -o buildlogs
--------------------------------------------------
Thank you for using the Installer of BigDFT suite.
The action considered was: build
WARNING: The Installer seems NOT have created or updated chess binaries
(maybe everything was already compiled?)
ACTION: check the compiling procedure.
HINT: Have a look at the file index.html of the buildlogs/ directory to find the reason
Exception ignored in: <function BigDFTInstaller.__del__ at 0x7f2fa290d1f0>
Traceback (most recent call last):
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 628, in __del__
self.makefile_dump() #temporary
File "/opt/siesta/ExtLibs/BigDFT/build/../Installer.py", line 550, in makefile_dump
os.path.abspath(__file__)+' '+a+' '+self.package+' -y')
NameError: name '__file__' is not defined
Ussing bigdft-suite downloaded from their repository works and installs chess and psolver with no problem. But, when compiling siesta chess gives the following error
/opt/siesta/Src/m_chess.F90:482:45:
482 | call mpiallred(s_global, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:483:45:
483 | call mpiallred(h_global, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:390:51:
390 | call mpiallred(row_ind_global, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:359:48:
359 | call mpiallred(numh_global, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:223:57:
223 | call build_dict_info(node, nodes, dict_timing_info)
| 1
Error: Type mismatch in argument ‘dict_info’ at (1); passed INTEGER(4) to TYPE(dictionary)
/opt/siesta/Src/m_chess.F90:99:45:
99 | call mpiallred(nvctr, 1, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:106:52:
106 | call mpiallred(nvctr_kernel, 1, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:113:50:
113 | call mpiallred(nvctr_mult, 1, mpi_sum, comm=mpi_comm_world)
| 1
Error: Keyword argument requires explicit interface for procedure ‘mpiallred’ at (1)
/opt/siesta/Src/m_chess.F90:483:45:
483 | call mpiallred(h_global, mpi_sum, comm=mpi_comm_world)
Then, if I comment Chess related flags and recompile I get the error
/opt/siesta/Src/m_lib_omm.F90:787:59:
787 | BlockSize_c,BlockSize_h,label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:794:43:
794 | call m_convert_csrdbcsr(C_min, bl_size=BlockSize_h)
| 1
Error: Keyword argument requires explicit interface for procedure ‘m_convert_csrdbcsr’ at (1)
/opt/siesta/Src/m_lib_omm.F90:430:57:
430 | BlockSize_c,BlockSize,label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:434:64:
434 | h_dim,BlockSize_c,BlockSize,label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:447:45:
447 | call m_copy(C_min,C_old2,keep_sparsity=.true.)
| 1
Error: Keyword argument ‘keep_sparsity’ at (1) is not in the procedure
/opt/siesta/Src/m_lib_omm.F90:449:44:
449 | call m_copy(C_min,C_old,keep_sparsity=.true.)
| 1
Error: Keyword argument ‘keep_sparsity’ at (1) is not in the procedure
/opt/siesta/Src/m_lib_omm.F90:463:35:
463 | label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:465:36:
465 | label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:467:88:
467 | call m_allocate(D_min,h_dim,h_dim,BlockSize,BlockSize,label=m_storage,use2D=Use2D)
| 1
Error: There is no specific subroutine for the generic ‘m_allocate’ at (1)
/opt/siesta/Src/m_lib_omm.F90:474:54:
474 | call m_read(C_min,WF_COEFFS_filename,file_exist=file_exist, keep_sparsity=.true.)
| 1
Error: Keyword argument requires explicit interface for procedure ‘m_read’ at (1)
/opt/siesta/Src/m_lib_omm.F90:499:39:
499 | call m_convert_csrdbcsr(S, bl_size=BlockSize)
| 1
Error: Keyword argument requires explicit interface for procedure ‘m_convert_csrdbcsr’ at (1)
/opt/siesta/Src/m_lib_omm.F90:501:37:
501 | call m_convert_csrdbcsr(H, bl_size=BlockSize)
| 1
Error: Keyword argument requires explicit interface for procedure ‘m_convert_csrdbcsr’ at (1)
/opt/siesta/Src/m_lib_omm.F90:532:41:
532 | call m_convert_dbcsrcsr(D_min, bl_size=BlockSize)
| 1
Error: Keyword argument requires explicit interface for procedure ‘m_convert_dbcsrcsr’ at (1)
/opt/siesta/Src/m_lib_omm.F90:501:37:
501 | call m_convert_csrdbcsr(H, bl_size=BlockSize)
The Omm library compiled fine, so I guess this is a problem with SIESTA compiling script
Possible fixes
I know that is not easy but you could add a script that builds all the dependencies as PETSc does. I think that SIESTA installation is way too difficult. the scripts to build psml, libgrid, libxc, netcdf, and flook are a huge help. I really appreciate them. Elsi-Elpa install is tricky so I would like to see a script for that.
Quantum mobile, spack, and easy build alternatives are also great. The problem is that you don't get siesta compiled with everything. So, anyway, one has to install manually. Also, easy build siesta install fails while compiling CMake and asks for some intel license. Could you do a version for GNU compiler?arch.make