sfilippone / psblas3 Goto Github PK
View Code? Open in Web Editor NEWA library of parallel sparse linear algebra on high performance computer.
License: Other
A library of parallel sparse linear algebra on high performance computer.
License: Other
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.
I suggest adding topics such as blas
, sparse-blas
, linear-algebra
in the About section.
Are there any constraints on which versions of METIS are supported, i.e. 4.0.3 or 5.1.0?
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
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),first_+size(val)-1)
if (present(last)) last_ = min(last,last_)
if (allocated(x%v)) then
hi @sfilippone
There are two 'get_global_rows' in the TOC, and the second should be 'get_global_indices'.
The NRC-funded work on Morfeus includes a requirement to build NEMO on Windows and Linux. We plan accomplish this in two steps:
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.
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
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)
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
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:
Line 33 in b05679f
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
).
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
.
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.
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
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)
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.
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
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
Instead of a single topic blas-sparse-blas-linear-algebra
you should add them as separate topics: blas, sparse-blas, linear-algebra.
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?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.