Coder Social home page Coder Social logo

sfilippone / psblas3 Goto Github PK

View Code? Open in Web Editor NEW
56.0 10.0 12.0 36.38 MB

A library of parallel sparse linear algebra on high performance computer.

License: Other

Makefile 0.38% Shell 0.10% Fortran 98.42% C 0.44% M4 0.63% Dockerfile 0.01% C++ 0.03%
fortran linear-algebra mpi sparse-linear-systems sparse-matrices

psblas3's People

Contributors

cirdans-home avatar michelemartone avatar scrasmussen avatar sfilippone avatar wlther avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

psblas3's Issues

Support FPM

Hey!
I'm currently searching for a fast sparse linear algebra lib to use in my project and came across this project. Since setting up the project is always such a hassle I'm quite fond of the Fortran Package Manager:
https://fpm.fortran-lang.org/

Would it be possible, that you could add a fpm manifest to this project? As far as I understand it, this would be sufficient so that fpm can pick this up and add it as dependency to any fpm project.
https://fpm.fortran-lang.org/spec/manifest.html

I have no idea, if this is feasable with your project, but I hope you have time to look into it.

Bug in subroutine s_base_set_vect ?

Hello,

I think there is a bug in the mentioned subroutine that results in a wrong behaviour operation. If you use

call v%set( vect, first, last )

the code does not allow "last" to be larger than "size( vect )". In my opinion, "last" should not be larger than "first + size( vect ) - 1"

Patch:

@@ -745,8 +745,9 @@ contains
integer(psb_ipk_) :: info, first_, last_, nr

 first_=1
  • last_=min(psb_size(x%v),size(val))
    if (present(first)) first_ = max(1,first)
  • last_=min(psb_size(x%v),first_+size(val)-1)
    if (present(last)) last_ = min(last,last_)

    if (allocated(x%v)) then

Abstract derived types?

Dear @sfilippone !

Just found you psblas3 and amg4psblas.
Looks great, but why don't you abstract classes? I believe it would be much easier to define abstract interface and make class that inherits abstract class to provide implementation, instead of writing functions that throw exceptions.. Compiler will error the incomplete derived type.

Best regards,
Oleg

Rename base/modules/aux for windows compatibility

Hi Salvatore et al,

I tried to clone psblas3 on a windows machine and the clone succeeds but the checkout fails because aux is a reserved keyword on windows. For any windows support (and for the record I wouldn't be bothering with windows if I didn't have to) base/modules/aux needs to be renamed. I can submit a PR with the required changes.

add topics

I suggest adding topics such as blas, sparse-blas, linear-algebra in the About section.

configure cannot recognize mpich fortran

checking for mpi.h... yes
checking for mpxlf2003_r... no
checking for mpxlf2003... no
checking for mpxlf95_r... no
checking for mpxlf90... no
checking for mpiifort... no
checking for mpf95... no
checking for mpf90... no
checking for mpifort... no
checking for mpif95... no
checking for mpif90... mpif90
checking for mpif90... (cached) mpif90
checking for mpif.h... no
configure: error: Cannot find any suitable MPI implementation for Fortran

Error: Symbol 'mpi_integer4' at (1) has no IMPLICIT type; did you mean 'mpi_integer2'?

Hello!

I'm compiling PSBLAS3-3.7.0 serial libraries on Fedora 33, the compiler fails with following error (config.log is attached):

gfortran   -I.. -I. -I. -DHAVE_AMD -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DLPK8 -DIPK4 -DSERIAL_MPI -DMPI_MOD  -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules -fallow-argument-mismatch -Wno-unused-variable -Wno-unused-dummy-argument -fPIC   -c penv/psi_penv_mod.F90 -o penv/psi_penv_mod.o
f951: Warning: '-Werror=' argument '-Werror=format-security' is not valid for Fortran
penv/psi_penv_mod.F90:741:31:

  741 |     psb_mpi_ipk_ = mpi_integer4
      |                               1
Error: Symbol 'mpi_integer4' at (1) has no IMPLICIT type; did you mean 'mpi_integer2'?
penv/psi_penv_mod.F90:826:11:

  826 |     ctxt = nctxt
      |           1
Error: Cannot convert INTEGER(4) to TYPE(psb_ctxt_type) at (1)
penv/psi_penv_mod.F90:707:23:

  706 |     call psi_c_diffadd(sv(1),sv(2),psb_sizeof_sp)
      |                       2
  707 |     call psi_c_diffadd(dv(1),dv(2),psb_sizeof_dp)
      |                       1
Warning: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(8)/REAL(4)).
penv/psi_penv_mod.F90:643:19:

  643 |     call mpi_isend(node%logbuf,size(node%logbuf),mpi_logical,&
      |                   1
......
  681 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Warning: Type mismatch between actual argument at (1) and actual argument at (2) (LOGICAL(4)/CHARACTER(*)).
make[2]: *** [Makefile:379: penv/psi_penv_mod.o] Error 1
$ gfortran --version
GNU Fortran (GCC) 10.2.1 20201125 (Red Hat 10.2.1-9)

config.log

Linker ' multiple definition ' error

Hello.

I'm using this command for generating .so libraries of PSBLAS from the static ones compiled by default:

gfortran -shared -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,--whole-archive libpsb_base.a -Wl,-no-whole-archive -Wl,-Bdynamic -L/usr/lib64 -lflexiblas -lgfortran -lm -Wl,-soname,libpsb_base.so.3.7 -o libpsb_base.so.3.7

where

$ cat /usr/lib/rpm/redhat/redhat-hardened-ld 
*self_spec:
+ %{!static:%{!shared:%{!r:-pie}}}

Linker fails because of these errors:

/usr/bin/ld: psb_c_remap.o (symbol from plugin): in function `psb_c_remap_':
(.text+0x0): multiple definition of `psb_c_remap_'; psb_c_remap.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: psb_s_remap.o (symbol from plugin): in function `psb_s_remap_':
(.text+0x0): multiple definition of `psb_s_remap_'; psb_s_remap.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: psb_d_remap.o (symbol from plugin): in function `psb_d_remap_':
(.text+0x0): multiple definition of `psb_d_remap_'; psb_d_remap.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: psb_z_remap.o (symbol from plugin): in function `psb_z_remap_':
(.text+0x0): multiple definition of `psb_z_remap_'; psb_z_remap.o (symbol from plugin):(.text+0x0): first defined here
../base/serial/psb_znumbmm.f90:362:39: warning: type of 'lznumbmm' does not match original declaration [-Wlto-type-mismatch]
  362 |          & c%irp,c%ja,lzero,c%val,temp)
      |                                       ^
../base/serial/lsmmp.f90:411:19: note: 'lznumbmm' was previously declared here
  411 | subroutine lznumbmm(n, m, l, ia, ja, diaga, a, ib, jb, diagb, b,&
      |                   ^
../base/serial/lsmmp.f90:411:19: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/psb_cnumbmm.f90:362:39: warning: type of 'lcnumbmm' does not match original declaration [-Wlto-type-mismatch]
  362 |          & c%irp,c%ja,lzero,c%val,temp)
      |                                       ^
../base/serial/lsmmp.f90:162:19: note: 'lcnumbmm' was previously declared here
  162 | subroutine lcnumbmm(n, m, l, ia, ja, diaga, a, ib, jb, diagb, b,&
      |                   ^
../base/serial/lsmmp.f90:162:19: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/psb_dnumbmm.f90:362:39: warning: type of 'ldnumbmm' does not match original declaration [-Wlto-type-mismatch]
  362 |          & c%irp,c%ja,lzero,c%val,temp)
      |                                       ^
../base/serial/lsmmp.f90:245:19: note: 'ldnumbmm' was previously declared here
  245 | subroutine ldnumbmm(n, m, l,  ia, ja, diaga, a, ib, jb, diagb, b,&
      |                   ^
../base/serial/lsmmp.f90:245:19: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/psb_snumbmm.f90:362:39: warning: type of 'lsnumbmm' does not match original declaration [-Wlto-type-mismatch]
  362 |          & c%irp,c%ja,lzero,c%val,temp)
      |                                       ^
../base/serial/lsmmp.f90:328:19: note: 'lsnumbmm' was previously declared here
  328 | subroutine lsnumbmm(n, m, l,  ia, ja, diaga, a, ib, jb, diagb, b,&
      |                   ^
../base/serial/lsmmp.f90:328:19: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/psb_ssymbmm.f90:387:34: warning: type of 'lsymbmm' does not match original declaration [-Wlto-type-mismatch]
  387 |          & c%irp,c%ja,lzero,itemp)
      |                                  ^
../base/serial/lsmmp.f90:45:18: note: 'lsymbmm' was previously declared here
   45 | subroutine lsymbmm(n, m, l, ia, ja, diaga, ib, jb, diagb,&
      |                  ^
../base/serial/lsmmp.f90:45:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/impl/psb_z_coo_impl.F90:6001:85: warning: type of 'psb_lz_fix_coo_inner' does not match original declaration [-Wlto-type-mismatch]
 6001 |           call psb_lz_fix_coo_inner(nra,nca,nzin_+nz,psb_dupl_add_,ia,ja,val,nz,info)
      |                                                                                     ^
../base/serial/impl/psb_z_coo_impl.F90:6754:31: note: 'psb_lz_fix_coo_inner' was previously declared here
 6754 | subroutine psb_lz_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
      |                               ^
../base/serial/impl/psb_z_coo_impl.F90:6754:31: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/impl/psb_c_coo_impl.F90:6001:85: warning: type of 'psb_lc_fix_coo_inner' does not match original declaration [-Wlto-type-mismatch]
 6001 |           call psb_lc_fix_coo_inner(nra,nca,nzin_+nz,psb_dupl_add_,ia,ja,val,nz,info)
      |                                                                                     ^
../base/serial/impl/psb_c_coo_impl.F90:6754:31: note: 'psb_lc_fix_coo_inner' was previously declared here
 6754 | subroutine psb_lc_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
      |                               ^
../base/serial/impl/psb_c_coo_impl.F90:6754:31: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/impl/psb_d_coo_impl.F90:6001:85: warning: type of 'psb_ld_fix_coo_inner' does not match original declaration [-Wlto-type-mismatch]
 6001 |           call psb_ld_fix_coo_inner(nra,nca,nzin_+nz,psb_dupl_add_,ia,ja,val,nz,info)
      |                                                                                     ^
../base/serial/impl/psb_d_coo_impl.F90:6754:31: note: 'psb_ld_fix_coo_inner' was previously declared here
 6754 | subroutine psb_ld_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
      |                               ^
../base/serial/impl/psb_d_coo_impl.F90:6754:31: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/serial/impl/psb_s_coo_impl.F90:6001:85: warning: type of 'psb_ls_fix_coo_inner' does not match original declaration [-Wlto-type-mismatch]
 6001 |           call psb_ls_fix_coo_inner(nra,nca,nzin_+nz,psb_dupl_add_,ia,ja,val,nz,info)
      |                                                                                     ^
../base/serial/impl/psb_s_coo_impl.F90:6754:31: note: 'psb_ls_fix_coo_inner' was previously declared here
 6754 | subroutine psb_ls_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
      |                               ^
../base/serial/impl/psb_s_coo_impl.F90:6754:31: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/psblas/psb_caxpby.f90:647:30: warning: type of 'caxpby' does not match original declaration [-Wlto-type-mismatch]
  647 |          & y,lldy,z,lldz,info)
      |                              ^
../base/serial/psi_c_serial_impl.F90:1093:18: note: type mismatch in parameter 10
 1093 | subroutine  caxpby(m, n, alpha, X, lldx, beta, Y, lldy, info)
      |                  ^
../base/serial/psi_c_serial_impl.F90:1093:18: note: 'caxpby' was previously declared here
../base/serial/psi_c_serial_impl.F90:1093:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/psblas/psb_saxpby.f90:647:30: warning: type of 'saxpby' does not match original declaration [-Wlto-type-mismatch]
  647 |          & y,lldy,z,lldz,info)
      |                              ^
../base/serial/psi_s_serial_impl.F90:1093:18: note: type mismatch in parameter 10
 1093 | subroutine  saxpby(m, n, alpha, X, lldx, beta, Y, lldy, info)
      |                  ^
../base/serial/psi_s_serial_impl.F90:1093:18: note: 'saxpby' was previously declared here
../base/serial/psi_s_serial_impl.F90:1093:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/psblas/psb_zaxpby.f90:647:30: warning: type of 'zaxpby' does not match original declaration [-Wlto-type-mismatch]
  647 |          & y,lldy,z,lldz,info)
      |                              ^
../base/serial/psi_z_serial_impl.F90:1093:18: note: type mismatch in parameter 10
 1093 | subroutine  zaxpby(m, n, alpha, X, lldx, beta, Y, lldy, info)
      |                  ^
../base/serial/psi_z_serial_impl.F90:1093:18: note: 'zaxpby' was previously declared here
../base/serial/psi_z_serial_impl.F90:1093:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/psblas/psb_daxpby.f90:647:30: warning: type of 'daxpby' does not match original declaration [-Wlto-type-mismatch]
  647 |          & y,lldy,z,lldz,info)
      |                              ^
../base/serial/psi_d_serial_impl.F90:1093:18: note: type mismatch in parameter 10
 1093 | subroutine  daxpby(m, n, alpha, X, lldx, beta, Y, lldy, info)
      |                  ^
../base/serial/psi_d_serial_impl.F90:1093:18: note: 'daxpby' was previously declared here
../base/serial/psi_d_serial_impl.F90:1093:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/comm/psb_dspgather.F90:173:46: warning: type of 'mpi_gatherv' does not match original declaration [-Wlto-type-mismatch]
  173 |            & psb_mpi_r_dpk_,root_,icomm,minfo)
      |                                              ^
../base/comm/psb_sspgather.F90:173:46: warning: type of 'mpi_gatherv' does not match original declaration [-Wlto-type-mismatch]
  173 |            & psb_mpi_r_spk_,root_,icomm,minfo)
      |                                              ^
../base/comm/psb_zspgather.F90:173:46: warning: type of 'mpi_gatherv' does not match original declaration [-Wlto-type-mismatch]
  173 |            & psb_mpi_c_dpk_,root_,icomm,minfo)
      |                                              ^
../base/comm/psb_cspgather.F90:173:46: warning: type of 'mpi_gatherv' does not match original declaration [-Wlto-type-mismatch]
  173 |            & psb_mpi_c_spk_,root_,icomm,minfo)
      |                                              ^
../base/comm/psb_dscatter_a.F90:198:50: note: 'mpi_gatherv' was previously declared here
  198 |          & displ,psb_mpi_lpk_,rootrank,icomm,info)
      |                                                  ^
../base/comm/psb_dscatter_a.F90:198:50: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/comm/psb_zscatter_a.F90:215:48: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  215 |            & psb_mpi_c_dpk_,rootrank,icomm,info)
      |                                                ^
../base/comm/psb_zscatter_a.F90:455:46: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  455 |          & psb_mpi_c_dpk_,rootrank,icomm,info)
      |                                              ^
../base/comm/psb_mscatter_a.F90:215:46: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  215 |            & psb_mpi_mpk_,rootrank,icomm,info)
      |                                              ^
../base/comm/psb_mscatter_a.F90:455:44: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  455 |          & psb_mpi_mpk_,rootrank,icomm,info)
      |                                            ^
../base/comm/psb_escatter_a.F90:215:46: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  215 |            & psb_mpi_epk_,rootrank,icomm,info)
      |                                              ^
../base/comm/psb_escatter_a.F90:455:44: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  455 |          & psb_mpi_epk_,rootrank,icomm,info)
      |                                            ^
../base/comm/psb_cscatter_a.F90:215:48: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  215 |            & psb_mpi_c_spk_,rootrank,icomm,info)
      |                                                ^
../base/comm/psb_cscatter_a.F90:455:46: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  455 |          & psb_mpi_c_spk_,rootrank,icomm,info)
      |                                              ^
../base/comm/psb_sscatter_a.F90:215:48: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  215 |            & psb_mpi_r_spk_,rootrank,icomm,info)
      |                                                ^
../base/comm/psb_sscatter_a.F90:455:46: warning: type of 'mpi_scatterv' does not match original declaration [-Wlto-type-mismatch]
  455 |          & psb_mpi_r_spk_,rootrank,icomm,info)
      |                                              ^
../base/comm/psb_dscatter_a.F90:215:48: note: 'mpi_scatterv' was previously declared here
  215 |            & psb_mpi_r_dpk_,rootrank,icomm,info)
      |                                                ^
../base/comm/psb_dscatter_a.F90:215:48: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/comm/internals/psi_sswapdata_a.F90:301:44: warning: type of 'mpi_alltoallv' does not match original declaration [-Wlto-type-mismatch]
  301 |          & brvidx,psb_mpi_r_spk_,icomm,iret)
      |                                            ^
../base/comm/internals/psi_mswapdata_a.F90:301:42: warning: type of 'mpi_alltoallv' does not match original declaration [-Wlto-type-mismatch]
  301 |          & brvidx,psb_mpi_mpk_,icomm,iret)
      |                                          ^
../base/comm/internals/psi_eswapdata_a.F90:301:42: warning: type of 'mpi_alltoallv' does not match original declaration [-Wlto-type-mismatch]
  301 |          & brvidx,psb_mpi_epk_,icomm,iret)
      |                                          ^
../base/comm/internals/psi_cswapdata_a.F90:301:44: warning: type of 'mpi_alltoallv' does not match original declaration [-Wlto-type-mismatch]
  301 |          & brvidx,psb_mpi_c_spk_,icomm,iret)
      |                                            ^
../base/comm/internals/psi_zswapdata_a.F90:301:44: warning: type of 'mpi_alltoallv' does not match original declaration [-Wlto-type-mismatch]
  301 |          & brvidx,psb_mpi_c_dpk_,icomm,iret)
      |                                            ^
../base/comm/internals/psi_dswapdata_a.F90:301:44: note: 'mpi_alltoallv' was previously declared here
  301 |          & brvidx,psb_mpi_r_dpk_,icomm,iret)
      |                                            ^
../base/comm/internals/psi_dswapdata_a.F90:301:44: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/comm/psb_dspgather.F90:161:40: warning: type of 'mpi_allgatherv' does not match original declaration [-Wlto-type-mismatch]
  161 |            & psb_mpi_r_dpk_,icomm,minfo)
      |                                        ^
../base/comm/psb_sspgather.F90:161:40: warning: type of 'mpi_allgatherv' does not match original declaration [-Wlto-type-mismatch]
  161 |            & psb_mpi_r_spk_,icomm,minfo)
      |                                        ^
../base/comm/psb_zspgather.F90:161:40: warning: type of 'mpi_allgatherv' does not match original declaration [-Wlto-type-mismatch]
  161 |            & psb_mpi_c_dpk_,icomm,minfo)
      |                                        ^
../base/comm/psb_cspgather.F90:161:40: warning: type of 'mpi_allgatherv' does not match original declaration [-Wlto-type-mismatch]
  161 |            & psb_mpi_c_spk_,icomm,minfo)
      |                                        ^
../base/internals/psi_bld_glb_dep_list.F90:96:62: note: 'mpi_allgatherv' was previously declared here
   96 |        & c_dep_list,length_dl,dl_ptr,psb_mpi_ipk_,icomm,minfo)
      |                                                              ^
../base/internals/psi_bld_glb_dep_list.F90:96:62: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/penv/psi_m_collective_mod.F90:1096:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
 1096 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/modules/penv/psi_s_collective_mod.F90:1188:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
 1188 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/modules/penv/psi_d_collective_mod.F90:1188:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
 1188 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/modules/penv/psi_c_collective_mod.F90:826:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  826 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/modules/penv/psi_z_collective_mod.F90:826:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  826 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/comm/internals/psi_dswapdata.F90:270:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  270 |              & p2ptag, icomm,y%comid(i,2),iret)
      |                                               ^
../base/comm/internals/psi_sswapdata.F90:270:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  270 |              & p2ptag, icomm,y%comid(i,2),iret)
      |                                               ^
../base/comm/internals/psi_iswapdata.F90:270:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  270 |              & p2ptag, icomm,y%comid(i,2),iret)
      |                                               ^
../base/comm/internals/psi_cswapdata.F90:270:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  270 |              & p2ptag, icomm,y%comid(i,2),iret)
      |                                               ^
../base/comm/internals/psi_zswapdata.F90:270:47: warning: type of 'mpi_irecv' does not match original declaration [-Wlto-type-mismatch]
  270 |              & p2ptag, icomm,y%comid(i,2),iret)
      |                                               ^
../base/modules/penv/psi_e_collective_mod.F90:1096:47: note: 'mpi_irecv' was previously declared here
 1096 |              & p2ptag, icomm,rvhd(ip+1,1),iret)
      |                                               ^
../base/modules/penv/psi_e_collective_mod.F90:1096:47: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/penv/psi_m_collective_mod.F90:1116:34: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
 1116 |              & p2ptag, icomm,iret)
      |                                  ^
../base/modules/penv/psi_s_collective_mod.F90:1208:34: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
 1208 |              & p2ptag, icomm,iret)
      |                                  ^
../base/modules/penv/psi_d_collective_mod.F90:1208:34: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
 1208 |              & p2ptag, icomm,iret)
      |                                  ^
../base/modules/penv/psi_c_collective_mod.F90:846:34: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  846 |              & p2ptag, icomm,iret)
      |                                  ^
../base/modules/penv/psi_z_collective_mod.F90:846:34: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  846 |              & p2ptag, icomm,iret)
      |                                  ^
../base/comm/internals/psi_dswapdata_a.F90:386:33: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  386 |              & p2ptag,icomm,iret)
      |                                 ^
../base/comm/internals/psi_sswapdata_a.F90:386:33: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  386 |              & p2ptag,icomm,iret)
      |                                 ^
../base/comm/internals/psi_mswapdata_a.F90:386:33: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  386 |              & p2ptag,icomm,iret)
      |                                 ^
../base/comm/internals/psi_cswapdata_a.F90:386:33: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  386 |              & p2ptag,icomm,iret)
      |                                 ^
../base/comm/internals/psi_zswapdata_a.F90:386:33: warning: type of 'mpi_send' does not match original declaration [-Wlto-type-mismatch]
  386 |              & p2ptag,icomm,iret)
      |                                 ^
../base/modules/penv/psi_e_collective_mod.F90:1116:34: note: 'mpi_send' was previously declared here
 1116 |              & p2ptag, icomm,iret)
      |                                  ^
../base/modules/penv/psi_e_collective_mod.F90:1116:34: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/penv/psi_penv_mod.F90:645:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  645 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:607:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  607 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:570:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  570 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:533:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  533 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:496:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  496 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:459:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  459 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:422:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  422 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:383:45: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  383 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_dswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_sswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_iswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_lswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_cswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/comm/internals/psi_zswapdata.F90:313:46: warning: type of 'mpi_isend' does not match original declaration [-Wlto-type-mismatch]
  313 |              & p2ptag,icomm,y%comid(i,1),iret)
      |                                              ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type mismatch in parameter 9
  683 |          & dest,tag,icomm,node%request,minfo)
      |                                             ^
../base/modules/penv/psi_penv_mod.F90:683:45: note: type 'long int' should match type 'void'
../base/modules/penv/psi_penv_mod.F90:683:45: note: 'mpi_isend' was previously declared here
../base/modules/penv/psi_penv_mod.F90:683:45: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/serial/psb_z_mat_mod.F90:2360:30: warning: type of 'psb_z_csgetrow' does not match original declaration [-Wlto-type-mismatch]
 2360 |   subroutine psb_z_clean_zeros(a,info)
      |                              ^
../base/serial/impl/psb_z_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/tools/psb_zsphalo.F90:300:42: warning: type of 'psb_z_csgetrow' does not match original declaration [-Wlto-type-mismatch]
  300 |            &  append=.true.,nzin=tot_elem)
      |                                          ^
../base/serial/impl/psb_z_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_z_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/serial/impl/psb_z_mat_impl.F90:837:25: note: 'psb_z_csgetrow' was previously declared here
../base/modules/serial/psb_z_csc_mat_mod.f90:1047:2: warning: type of 'psb_lz_csc_reallocate_nz' does not match original declaration [-Wlto-type-mismatch]
 1047 |   function lz_csc_is_by_cols(a) result(res)
      |  ^
../base/serial/impl/psb_z_csc_impl.f90:4317:36: note: 'psb_lz_csc_reallocate_nz' was previously declared here
 4317 | subroutine  psb_lz_csc_reallocate_nz(nz,a)
      |                                    ^
../base/serial/impl/psb_z_csc_impl.f90:4317:36: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/serial/psb_c_mat_mod.F90:2360:30: warning: type of 'psb_c_csgetrow' does not match original declaration [-Wlto-type-mismatch]
 2360 |   subroutine psb_c_clean_zeros(a,info)
      |                              ^
../base/serial/impl/psb_c_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/tools/psb_csphalo.F90:300:42: warning: type of 'psb_c_csgetrow' does not match original declaration [-Wlto-type-mismatch]
  300 |            &  append=.true.,nzin=tot_elem)
      |                                          ^
../base/serial/impl/psb_c_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_c_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/serial/impl/psb_c_mat_impl.F90:837:25: note: 'psb_c_csgetrow' was previously declared here
../base/modules/serial/psb_c_csc_mat_mod.f90:1047:2: warning: type of 'psb_lc_csc_reallocate_nz' does not match original declaration [-Wlto-type-mismatch]
 1047 |   function lc_csc_is_by_cols(a) result(res)
      |  ^
../base/serial/impl/psb_c_csc_impl.f90:4317:36: note: 'psb_lc_csc_reallocate_nz' was previously declared here
 4317 | subroutine  psb_lc_csc_reallocate_nz(nz,a)
      |                                    ^
../base/serial/impl/psb_c_csc_impl.f90:4317:36: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/serial/psb_d_mat_mod.F90:2360:30: warning: type of 'psb_d_csgetrow' does not match original declaration [-Wlto-type-mismatch]
 2360 |   subroutine psb_d_clean_zeros(a,info)
      |                              ^
../base/serial/impl/psb_d_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/tools/psb_dsphalo.F90:300:42: warning: type of 'psb_d_csgetrow' does not match original declaration [-Wlto-type-mismatch]
  300 |            &  append=.true.,nzin=tot_elem)
      |                                          ^
../base/serial/impl/psb_d_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/serial/impl/psb_d_mat_impl.F90:837:25: note: 'psb_d_csgetrow' was previously declared here
../base/modules/serial/psb_d_csc_mat_mod.f90:1047:2: warning: type of 'psb_ld_csc_reallocate_nz' does not match original declaration [-Wlto-type-mismatch]
 1047 |   function ld_csc_is_by_cols(a) result(res)
      |  ^
../base/serial/impl/psb_d_csc_impl.f90:4317:36: note: 'psb_ld_csc_reallocate_nz' was previously declared here
 4317 | subroutine  psb_ld_csc_reallocate_nz(nz,a)
      |                                    ^
../base/serial/impl/psb_d_csc_impl.f90:4317:36: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/serial/psb_s_mat_mod.F90:2360:30: warning: type of 'psb_s_csgetrow' does not match original declaration [-Wlto-type-mismatch]
 2360 |   subroutine psb_s_clean_zeros(a,info)
      |                              ^
../base/serial/impl/psb_s_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/tools/psb_ssphalo.F90:300:42: warning: type of 'psb_s_csgetrow' does not match original declaration [-Wlto-type-mismatch]
  300 |            &  append=.true.,nzin=tot_elem)
      |                                          ^
../base/serial/impl/psb_s_mat_impl.F90:837:25: note: type mismatch in parameter 16
  837 | subroutine psb_s_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
      |                         ^
../base/serial/impl/psb_s_mat_impl.F90:837:25: note: 'psb_s_csgetrow' was previously declared here
../base/modules/serial/psb_s_csc_mat_mod.f90:1047:2: warning: type of 'psb_ls_csc_reallocate_nz' does not match original declaration [-Wlto-type-mismatch]
 1047 |   function ls_csc_is_by_cols(a) result(res)
      |  ^
../base/serial/impl/psb_s_csc_impl.f90:4317:36: note: 'psb_ls_csc_reallocate_nz' was previously declared here
 4317 | subroutine  psb_ls_csc_reallocate_nz(nz,a)
      |                                    ^
../base/serial/impl/psb_s_csc_impl.f90:4317:36: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/serial/psb_base_mat_mod.F90:1440:37: warning: type of 'psb_lbase_sparse_print' does not match original declaration [-Wlto-type-mismatch]
 1440 |   subroutine psb_lbase_reallocate_inz(nz,a)
      |                                     ^
../base/modules/serial/psb_s_base_mat_mod.F90:4350:29: warning: type of 'psb_lbase_sparse_print' does not match original declaration [-Wlto-type-mismatch]
 4350 | end module psb_s_base_mat_mod
      |                             ^
../base/modules/serial/psb_d_base_mat_mod.F90:4350:29: warning: type of 'psb_lbase_sparse_print' does not match original declaration [-Wlto-type-mismatch]
 4350 | end module psb_d_base_mat_mod
      |                             ^
../base/modules/serial/psb_c_base_mat_mod.F90:4350:29: warning: type of 'psb_lbase_sparse_print' does not match original declaration [-Wlto-type-mismatch]
 4350 | end module psb_c_base_mat_mod
      |                             ^
../base/modules/serial/psb_z_base_mat_mod.F90:4350:29: warning: type of 'psb_lbase_sparse_print' does not match original declaration [-Wlto-type-mismatch]
 4350 | end module psb_z_base_mat_mod
      |                             ^
../base/serial/impl/psb_base_mat_impl.f90:382:33: note: 'psb_lbase_sparse_print' was previously declared here
  382 | subroutine psb_lbase_sparse_print(iout,a,iv,head,ivr,ivc)
      |                                 ^
../base/serial/impl/psb_base_mat_impl.f90:382:33: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/auxil/psb_l_hsort_x_mod.f90:132:45: warning: type of 'psi_e_insert_heap' does not match original declaration [-Wlto-type-mismatch]
  132 |          & heap%last,heap%keys,heap%dir,info)
      |                                             ^
../base/serial/sort/psb_e_hsort_impl.f90:187:28: note: 'psi_e_insert_heap' was previously declared here
  187 | subroutine psi_e_insert_heap(key,last,heap,dir,info)
      |                            ^
../base/serial/sort/psb_e_hsort_impl.f90:187:28: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/auxil/psb_l_hsort_x_mod.f90:148:45: warning: type of 'psi_e_heap_get_first' does not match original declaration [-Wlto-type-mismatch]
  148 |          & heap%last,heap%keys,heap%dir,info)
      |                                             ^
../base/serial/sort/psb_e_hsort_impl.f90:293:31: note: 'psi_e_heap_get_first' was previously declared here
  293 | subroutine psi_e_heap_get_first(key,last,heap,dir,info)
      |                               ^
../base/serial/sort/psb_e_hsort_impl.f90:293:31: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/auxil/psb_l_hsort_x_mod.f90:247:55: warning: type of 'psi_e_idx_insert_heap' does not match original declaration [-Wlto-type-mismatch]
  247 |          & heap%last,heap%keys,heap%idxs,heap%dir,info)
      |                                                       ^
../base/serial/sort/psb_e_hsort_impl.f90:417:32: note: 'psi_e_idx_insert_heap' was previously declared here
  417 | subroutine psi_e_idx_insert_heap(key,index,last,heap,idxs,dir,info)
      |                                ^
../base/serial/sort/psb_e_hsort_impl.f90:417:32: note: code may be misoptimized unless '-fno-strict-aliasing' is used
../base/modules/auxil/psb_l_hsort_x_mod.f90:264:55: warning: type of 'psi_e_idx_heap_get_first' does not match original declaration [-Wlto-type-mismatch]
  264 |          & heap%last,heap%keys,heap%idxs,heap%dir,info)
      |                                                       ^
../base/serial/sort/psb_e_hsort_impl.f90:539:35: note: 'psi_e_idx_heap_get_first' was previously declared here
  539 | subroutine psi_e_idx_heap_get_first(key,index,last,heap,idxs,dir,info)
      |                                   ^
../base/serial/sort/psb_e_hsort_impl.f90:539:35: note: code may be misoptimized unless '-fno-strict-aliasing' is used
collect2: error: ld returned 1 exit status

The flag -Wl,--allow-multiple-definition bypasses the errors but, is it the correct way to resolve this issue?
Build log: psblas3.7.0-build.zip

Requirement on METIS int size

Hello @sfilippone,

I would like to use PSBLAS for an unstructured lattice Boltzmann code (I've seen it used this way in some of your slides).

Running the configure script with ./configure --with-metis=-lmetis I can see the following:

checking metis.h usability... yes
checking metis.h presence... yes
checking for metis.h... yes
checking for METIS integer size... 32
checking for METIS real size... 32
checking for METIS_PartGraphKway in -lmetis ... yes
checking for METIS_SetDefaultOptions in -lmetis  -lm  ... yes

however, the final configuration says:

	METIS usable          : no
	METIS bitsize         : 32
	METIS realsize        : 32

I installed METIS using the apt command on Linux. From previous experimentation with METIS I know it can be compiled also with 64-bit integers in reals.

Would this solve my issue?

Ivan

segmenation fault with ifort 2018 routine psb_spasb

I am using psblas3-development on the AMU mesocentre, with ifort 2018. I obtained segmetation fault errors on executing my application (either in debug mode or optimized). The error appeared in different parts of the code whether or not I was doing different stuffs in my application (such as, for example, saving my unknown vector). I realized the fault was caused by the routine psb_spasb (commenting this routine the code used to run without problem).

The problem was solved by modifying the file: base/modules/serial/psb_d_mat_mod.F90

replacing the following line (~line 248)

class(psb_d_base_sparse_mat), allocatable, target, &                                                                                                                                                                                                                                   
      & save, private :: psb_d_base_mat_default 

with

  class(psb_d_base_sparse_mat), allocatable, target, &
       & save :: psb_d_base_mat_default

and also the file: base/serial/impl/psb_d_mat_impl.F90

replacing the following line (~line 1265)

allocate(altmp, mold=psb_get_mat_default(a),stat=info)

with

if (.not.allocated(psb_d_base_mat_default)) then
allocate(psb_d_csr_sparse_mat :: psb_d_base_mat_default)
end if
allocate(altmp, mold=psb_d_base_mat_default,stat=info)

AMD dependency information

The README doesn't specify in any detail how to obtain a copy of the AMD ordering routine. Adding a link to the SuiteSparse homepage, or the AMD User Guide from the SuiteSparse Github repository would be helpful.

I've noticed that only the C interface (i.e. "amd.h") is actually needed:

#include "amd.h"

The AMD package provided in SuiteSparse however also includes two F77 routines, and a similar routine MC47 can be found in the Harwell Subroutine Library. I would recommend emphasizing that the C interface is used.

Otherwise one can get easily confused by the early versions of the AMD package which can be found in the linalg/amd/ folder on Netlib, or directly from ACM TOMS Algorithm 837: AMD (Netlib mirror: toms/837).

Compiling error of 'psb_metispart_mod' [LONG INTEGERS]

Hi all.

I'm testing compilation of psblas3 libraries for 8-byte integer data. Configure is set in this way:

+ ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-serial --without-metis '--with-fcopt=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wno-unused-variable -fPIC -I/usr/lib64/gfortran/modules -I/usr/include/openblas' '--with-ccopt=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -I/usr/include/openblas' --with-metis=-lmetis64 --with-amd=-lamd --with-blas=-lopenblas64 --with-lapack= --with-amdincdir=/usr/include/suitesparse --with-metisincdir=/usr/include --enable-long-integers

Are used openblas-serial64 and metis64 libraries from Fedora, util library (against Metis64) is failing:

make[1]: Entering directory '/home/sagitter/rpmbuild/BUILD/psblas3-3.5.2/build64/util'
gfortran -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wno-unused-variable -fPIC -I/usr/lib64/gfortran/modules -I/usr/include/openblas  -I. -I../modules  -DHAVE_AMD -DHAVE_METIS -DHAVE_LAPACK -DHAVE_FINAL -DHAVE_ISO_FORTRAN_ENV -DHAVE_FLUSH_STMT -DHAVE_VOLATILE -DLONG_INTEGERS -DSERIAL_MPI -DMPI_MOD  -c psb_metispart_mod.F90 -o psb_metispart_mod.o
psb_metispart_mod.F90:367:19:

             info = METIS_PartGraphKway(nl,irpl,jal,idummy,jdummy,&
                   1
Error: Type mismatch in argument 'n' at (1); passed INTEGER(8) to INTEGER(4)
psb_metispart_mod.F90:372:19:

             info = METIS_PartGraphKway(nl,irpl,jal,idummy,jdummy,&
                   1
Error: Type mismatch in argument 'n' at (1); passed INTEGER(8) to INTEGER(4)
psb_metispart_mod.F90:377:17:

           info = METIS_PartGraphKway(nl,irpl,jal,idummy,jdummy,&
                 1
Error: Type mismatch in argument 'n' at (1); passed INTEGER(8) to INTEGER(4)
psb_metispart_mod.F90:265:15:

         wgh_ = weights
               1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
psb_metispart_mod.F90:244:15:

         wgh_ = weights
               1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
psb_metispart_mod.F90:185:17:

           wgh_ = weights
                 1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
psb_metispart_mod.F90:158:17:

           wgh_ = weights
                 1
Warning: Possible change of value in conversion from REAL(8) to REAL(4) at (1) [-Wconversion]
make[1]: *** [../Make.inc:80: psb_metispart_mod.o] Error 1
make[1]: Leaving directory '/home/sagitter/rpmbuild/BUILD/psblas3-3.5.2/build64/util'
make: *** [Makefile:24: utild] Error 2

documents TOC

hi @sfilippone
There are two 'get_global_rows' in the TOC, and the second should be 'get_global_indices'.

question on matrix/rhs assembly

Sorry guys, I am an absolute beginner with this lib really.

Can you point me to an example to assemble a matrix and a rhs in parallel?

I already have all the info about local to global mapping of indices for the coefficients, so I would need to know better what are the operation needed to put them iniside your container.

if you are a bit used to petsc, I need the equivalent of matSetValues and matAssemblyBegin()/matAssemblyEnd() .

Thanks for the help

Error: Type mismatch between actual argument at (1) and actual argument at (2) (LOGICAL(4)/CHARACTER(*))

Build fails with:

/opt/local/bin/mpif90-mpich-gcc12   -I../ -I. -I. -DHAVE_AMD -DHAVE_LAPACK -DHAVE_FLUSH_STMT -DOPENMP -DLPK8 -DIPK4 -DMPI_MOD  -pipe -Os -m32 -fopenmp  -c penv/psi_penv_mod.F90 -o penv/psi_penv_mod.o
penv/psi_penv_mod.F90:644:19:

  644 |     call mpi_isend(node%logbuf,size(node%logbuf),mpi_logical,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (LOGICAL(4)/CHARACTER(*)).
penv/psi_penv_mod.F90:606:19:

  606 |     call mpi_isend(node%dcomplbuf,size(node%dcomplbuf),psb_mpi_c_dpk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (COMPLEX(8)/CHARACTER(*)).
penv/psi_penv_mod.F90:569:19:

  569 |     call mpi_isend(node%complexbuf,size(node%complexbuf),psb_mpi_c_spk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (COMPLEX(4)/CHARACTER(*)).
penv/psi_penv_mod.F90:532:19:

  532 |     call mpi_isend(node%doublebuf,size(node%doublebuf),psb_mpi_r_dpk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(8)/CHARACTER(*)).
penv/psi_penv_mod.F90:495:19:

  495 |     call mpi_isend(node%realbuf,size(node%realbuf),psb_mpi_r_spk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/CHARACTER(*)).
penv/psi_penv_mod.F90:458:19:

  458 |     call mpi_isend(node%int2buf,size(node%int2buf),psb_mpi_i2pk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(2)/CHARACTER(*)).
penv/psi_penv_mod.F90:421:19:

  421 |     call mpi_isend(node%int8buf,size(node%int8buf),psb_mpi_epk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(8)/CHARACTER(*)).
penv/psi_penv_mod.F90:382:19:

  382 |     call mpi_isend(node%int4buf,size(node%int4buf),psb_mpi_mpk_,&
      |                   1
......
  682 |     call mpi_isend(node%charbuf,size(node%charbuf),mpi_character,&
      |                   2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(4)/CHARACTER(*)).
make[2]: *** [penv/psi_penv_mod.o] Error 1

We can probably handle this locally in Macports, but perhaps worth fixing? There is a flag for this, -fallow-argument-mismatch.

Support CMake build

The NRC-funded work on Morfeus includes a requirement to build NEMO on Windows and Linux. We plan accomplish this in two steps:

  1. Write CMake scripts to build NEMO and its dependencies, including PSBLAS and MLD2P4, on Linux.
  2. Import the CMake scripts into Microsoft Visual Studio for building on Windows.

Because NEMO depends on PSBLAS and MLD2P4, I will fork this repository and the MLD2P4 repository and add CMake files. I will then submit a pull request for your review.

Is this the correct repository to fork for PSBLAS? I assume I don't need to fork the psblas3-ext repository for now.

Makefile install errors with parallel jobs

I have been facing persistent problems when trying to build and install psblas using multiple jobs. The build phase (make -j8) seems to complete successfully.

The errors always originate in commands related to ranlib, e.g.

==> Installing psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3
==> No binary for psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3 found: installing from source
==> Using cached archive: /path/to/cache/_source-cache/archive/dc/dca593010f258af669eb40d92c4934eaaa016ef17280d4ab1208afc3d5aa13f0.tar.gz
==> No patches needed for psblas
==> psblas: Executing phase: 'autoreconf'
==> psblas: Executing phase: 'configure'
==> psblas: Executing phase: 'build'
==> psblas: Executing phase: 'install'
==> Error: ProcessError: Command exited with status 2:
    'make' '-j8' 'install'

4 errors found in build log:
     2875    ranlib ../../libpsb_base.a
     2876    ranlib ../libpsb_base.a
     2877    ranlib ../../libpsb_base.a
     2878    ranlib ../../libpsb_base.a
     2879    ranlib ../libpsb_base.a
     2880    ranlib ../libpsb_base.a
  >> 2881    ranlib: ../libpsb_base.a: error reading psi_eswapdata_a.o: file truncated
  >> 2882    ranlib: ../libpsb_base.a: error reading psb_cgetmatinfo.o: file truncated
     2883    make[2]: *** [Makefile:45: lib] Error 1
     2884    make[2]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/tools'
     2885    make[1]: *** [Makefile:26: tl] Error 2
     2886    make[1]: *** Waiting for unfinished jobs....
     2887    make[2]: *** [Makefile:29: lib] Error 1
     2888    make[2]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/psblas'
     2889    make[1]: *** [Makefile:24: pb] Error 2
  >> 2890    ranlib: ../libpsb_base.a: error reading psb_z_linmap_mod.o: file truncated
     2891    make[2]: *** [Makefile:21: lib] Error 1
     2892    make[2]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/internals
             '
     2893    make[1]: *** [Makefile:22: in] Error 2
  >> 2894    ranlib: ../../libpsb_base.a: error reading psb_z_linmap_mod.o: file truncated
     2895    make[3]: *** [Makefile:36: lib] Error 1
     2896    make[3]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/comm/inte
             rnals'
     2897    make[2]: *** [Makefile:35: interns] Error 2
     2898    make[2]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/comm'
     2899    make[1]: *** [Makefile:20: cm] Error 2
     2900    make[3]: Leaving directory '/path/to/spack-stage-psblas-3.8.0-1-vuk3jokksrg4k34bby2h23wkbnwg3xr3/spack-src/base/serial/im
             pl'

If I use a single job -j 1 it has worked reliably so far.

Make C bindings optional?

For Fortran-only projects, compiling the additional C bindings is a waste of time. Would it be of any interest to add a pair of --enable-cbind/--disable-cbind flags to turn the C bindings compilation on or off?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.