psblas3-integer8:

base/modules/psi_p2p_mod.F90
 base/modules/psi_penv_mod.F90
 test/pargen/ppde.f90
 util/psb_c_mat_dist_impl.f90
 util/psb_c_renum_impl.F90
 util/psb_d_mat_dist_impl.f90
 util/psb_d_renum_impl.F90
 util/psb_s_mat_dist_impl.f90
 util/psb_s_renum_impl.F90
 util/psb_z_mat_dist_impl.f90
 util/psb_z_renum_impl.F90

8-bytes version now compiles cleanly. 
ppde runs in serial mode but hangs in parallel; will need a bit of debugging.
psblas3-type-indexed
Salvatore Filippone 13 years ago
parent 2f1c0e8892
commit 1ed539347e

@ -45,6 +45,28 @@ module psi_p2p_mod
#endif #endif
#if defined(LONG_INTEGERS)
interface psb_snd
module procedure psb_isnds_ic, psb_isndv_ic, psb_isndm_ic, &
& psb_ssnds_ic, psb_ssndv_ic, psb_ssndm_ic,&
& psb_dsnds_ic, psb_dsndv_ic, psb_dsndm_ic,&
& psb_csnds_ic, psb_csndv_ic, psb_csndm_ic,&
& psb_zsnds_ic, psb_zsndv_ic, psb_zsndm_ic,&
& psb_lsnds_ic, psb_lsndv_ic, &
& psb_lsndm_ic, psb_hsnds_ic
end interface
interface psb_rcv
module procedure psb_ircvs_ic, psb_ircvv_ic, psb_ircvm_ic, &
& psb_srcvs_ic, psb_srcvv_ic, psb_srcvm_ic,&
& psb_drcvs_ic, psb_drcvv_ic, psb_drcvm_ic,&
& psb_crcvs_ic, psb_crcvv_ic, psb_crcvm_ic,&
& psb_zrcvs_ic, psb_zrcvv_ic, psb_zrcvm_ic,&
& psb_lrcvs_ic, psb_lrcvv_ic, &
& psb_lrcvm_ic, psb_hrcvs_ic
end interface
#endif
integer(psb_mpik_), private, parameter:: psb_int_tag = 543987 integer(psb_mpik_), private, parameter:: psb_int_tag = 543987
integer(psb_mpik_), private, parameter:: psb_real_tag = psb_int_tag + 1 integer(psb_mpik_), private, parameter:: psb_real_tag = psb_int_tag + 1
@ -1540,4 +1562,565 @@ contains
#endif #endif
!
! Integer * 8 aliases.
!
#if defined(LONG_INTEGERS)
! !!!!!!!!!!!!!!!!!!!!!!!!
!
! Point-to-point SND
!
! !!!!!!!!!!!!!!!!!!!!!!!!
subroutine psb_isnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_isnds_ic
subroutine psb_isndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_isndv_ic
subroutine psb_isndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_isndm_ic
subroutine psb_ssnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_ssnds_ic
subroutine psb_ssndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_ssndv_ic
subroutine psb_ssndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_ssndm_ic
subroutine psb_dsnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_dsnds_ic
subroutine psb_dsndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_dsndv_ic
subroutine psb_dsndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_dsndm_ic
subroutine psb_csnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_csnds_ic
subroutine psb_csndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_csndv_ic
subroutine psb_csndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_csndm_ic
subroutine psb_zsnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_zsnds_ic
subroutine psb_zsndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_zsndv_ic
subroutine psb_zsndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_zsndm_ic
subroutine psb_lsnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_lsnds_ic
subroutine psb_lsndv_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(in) :: dat(:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_lsndv_ic
subroutine psb_lsndm_ic(ictxt,dat,dst,m)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(in) :: dat(:,:)
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_lsndm_ic
subroutine psb_hsnds_ic(ictxt,dat,dst)
integer(psb_ipk_), intent(in) :: ictxt
character(len=*), intent(in) :: dat
integer(psb_ipk_), intent(in) :: dst
integer(psb_mpik_) :: iictxt, idst
iictxt = ictxt
idst = dst
call psb_snd(iictxt, dat, idst)
end subroutine psb_hsnds_ic
! !!!!!!!!!!!!!!!!!!!!!!!!
!
! Point-to-point RCV
!
! !!!!!!!!!!!!!!!!!!!!!!!!
subroutine psb_ircvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_ircvs_ic
subroutine psb_ircvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_ircvv_ic
subroutine psb_ircvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
integer(psb_ipk_), intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_ircvm_ic
subroutine psb_srcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_srcvs_ic
subroutine psb_srcvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_srcvv_ic
subroutine psb_srcvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_spk_), intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_srcvm_ic
subroutine psb_drcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_drcvs_ic
subroutine psb_drcvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_drcvv_ic
subroutine psb_drcvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
real(psb_dpk_), intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_drcvm_ic
subroutine psb_crcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_crcvs_ic
subroutine psb_crcvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_crcvv_ic
subroutine psb_crcvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_spk_), intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_crcvm_ic
subroutine psb_zrcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_zrcvs_ic
subroutine psb_zrcvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_zrcvv_ic
subroutine psb_zrcvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
complex(psb_dpk_), intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_zrcvm_ic
subroutine psb_lrcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_lrcvs_ic
subroutine psb_lrcvv_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(out) :: dat(:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_lrcvv_ic
subroutine psb_lrcvm_ic(ictxt,dat,src,m)
integer(psb_ipk_), intent(in) :: ictxt
logical, intent(out) :: dat(:,:)
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_lrcvm_ic
subroutine psb_hrcvs_ic(ictxt,dat,src)
integer(psb_ipk_), intent(in) :: ictxt
character(len=*), intent(out) :: dat
integer(psb_ipk_), intent(in) :: src
integer(psb_mpik_) :: iictxt, isrc
iictxt = ictxt
isrc = src
call psb_rcv(iictxt, dat, isrc)
end subroutine psb_hrcvs_ic
#endif
end module psi_p2p_mod end module psi_p2p_mod

@ -3,23 +3,23 @@ module psi_penv_mod
use psi_comm_buffers_mod, only : psb_buffer_queue use psi_comm_buffers_mod, only : psb_buffer_queue
interface psb_init interface psb_init
module procedure psb_init module procedure psb_init_mpik
end interface end interface
interface psb_exit interface psb_exit
module procedure psb_exit module procedure psb_exit_mpik
end interface end interface
interface psb_abort interface psb_abort
module procedure psb_abort module procedure psb_abort_mpik
end interface end interface
interface psb_info interface psb_info
module procedure psb_info module procedure psb_info_mpik
end interface end interface
interface psb_barrier interface psb_barrier
module procedure psb_barrier module procedure psb_barrier_mpik
end interface end interface
#if defined(LONG_INTEGERS) #if defined(LONG_INTEGERS)
@ -204,7 +204,7 @@ contains
#endif #endif
subroutine psb_init(ictxt,np,basectxt,ids) subroutine psb_init_mpik(ictxt,np,basectxt,ids)
use psi_comm_buffers_mod use psi_comm_buffers_mod
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
@ -329,9 +329,9 @@ contains
! !$ endif ! !$ endif
! !$ endif ! !$ endif
end subroutine psb_init end subroutine psb_init_mpik
subroutine psb_exit(ictxt,close) subroutine psb_exit_mpik(ictxt,close)
use psi_comm_buffers_mod use psi_comm_buffers_mod
! !$ use psb_rsb_mod ! !$ use psb_rsb_mod
#ifdef MPI_MOD #ifdef MPI_MOD
@ -381,10 +381,10 @@ contains
#endif #endif
end subroutine psb_exit end subroutine psb_exit_mpik
subroutine psb_barrier(ictxt) subroutine psb_barrier_mpik(ictxt)
#ifdef MPI_MOD #ifdef MPI_MOD
use mpi use mpi
#endif #endif
@ -401,7 +401,7 @@ contains
end if end if
#endif #endif
end subroutine psb_barrier end subroutine psb_barrier_mpik
function psb_wtime() function psb_wtime()
use psb_const_mod use psb_const_mod
@ -417,7 +417,7 @@ contains
psb_wtime = mpi_wtime() psb_wtime = mpi_wtime()
end function psb_wtime end function psb_wtime
subroutine psb_abort(ictxt,errc) subroutine psb_abort_mpik(ictxt,errc)
use psi_comm_buffers_mod use psi_comm_buffers_mod
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
@ -437,10 +437,10 @@ contains
call mpi_abort(ictxt,code,info) call mpi_abort(ictxt,code,info)
#endif #endif
end subroutine psb_abort end subroutine psb_abort_mpik
subroutine psb_info(ictxt,iam,np) subroutine psb_info_mpik(ictxt,iam,np)
use psi_comm_buffers_mod use psi_comm_buffers_mod
#ifdef MPI_MOD #ifdef MPI_MOD
use mpi use mpi
@ -468,7 +468,7 @@ contains
end if end if
#endif #endif
end subroutine psb_info end subroutine psb_info_mpik
subroutine psb_get_mpicomm(ictxt,comm) subroutine psb_get_mpicomm(ictxt,comm)

@ -92,7 +92,7 @@ program ppde
integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst
integer(psb_long_int_k_) :: amatsize, precsize, descsize, d2size integer(psb_long_int_k_) :: amatsize, precsize, descsize, d2size
real(psb_dpk_) :: err, eps real(psb_dpk_) :: err, eps
integer(psb_mpik_) :: iict
! other variables ! other variables
integer(psb_ipk_) :: info, i integer(psb_ipk_) :: info, i
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
@ -101,9 +101,10 @@ program ppde
info=psb_success_ info=psb_success_
call psb_init(ictxt) call psb_init(iict)
ictxt = iict
call psb_info(ictxt,iam,np) call psb_info(ictxt,iam,np)
write(0,*) 'Fromt init/info',iam,np
if (iam < 0) then if (iam < 0) then
! This should not happen, but just in case ! This should not happen, but just in case
call psb_exit(ictxt) call psb_exit(ictxt)
@ -111,7 +112,7 @@ program ppde
endif endif
if(psb_get_errstatus() /= 0) goto 9999 if(psb_get_errstatus() /= 0) goto 9999
name='pde90' name='pde90'
call psb_set_errverbosity(2) call psb_set_errverbosity(itwo)
! !
! Hello world ! Hello world
! !
@ -148,7 +149,7 @@ program ppde
!!$ call psb_cdcpy(desc_a,desc_b,info) !!$ call psb_cdcpy(desc_a,desc_b,info)
!!$ call psb_set_debug_level(9999) !!$ call psb_set_debug_level(9999)
call psb_cdbldext(a,desc_a,2,desc_b,info,extype=psb_ovt_asov_) call psb_cdbldext(a,desc_a,itwo,desc_b,info,extype=psb_ovt_asov_)
if (info /= 0) then if (info /= 0) then
write(0,*) 'Error from bldext' write(0,*) 'Error from bldext'
call psb_abort(ictxt) call psb_abort(ictxt)
@ -317,7 +318,7 @@ contains
write(psb_out_unit,'(" ")') write(psb_out_unit,'(" ")')
else else
! wrong number of parameter, print an error message and exit ! wrong number of parameter, print an error message and exit
call pr_usage(0) call pr_usage(izero)
call psb_abort(ictxt) call psb_abort(ictxt)
stop 1 stop 1
endif endif

@ -365,7 +365,7 @@ subroutine cmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_
@ -396,7 +396,7 @@ subroutine cmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_

@ -20,9 +20,13 @@ subroutine psb_c_mat_renums(alg,mat,info,perm)
ialg = psb_mat_renum_gps_ ialg = psb_mat_renum_gps_
case ('AMD') case ('AMD')
ialg = psb_mat_renum_amd_ ialg = psb_mat_renum_amd_
case ('NONE', 'ID')
ialg = psb_mat_renum_identity_
case default case default
write(0,*) 'Unknown algorithm "',psb_toupper(alg),'"'
ialg = -1 ialg = -1
end select end select
call psb_mat_renum(ialg,mat,info,perm) call psb_mat_renum(ialg,mat,info,perm)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -52,7 +56,7 @@ subroutine psb_c_mat_renum(alg,mat,info,perm)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:) integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:)
integer(psb_ipk_) :: err_act, nr, nc integer(psb_ipk_) :: err_act, nr, nc, i, ierr(5)
character(len=20) :: name character(len=20) :: name
info = psb_success_ info = psb_success_
@ -65,7 +69,8 @@ subroutine psb_c_mat_renum(alg,mat,info,perm)
nc = mat%get_ncols() nc = mat%get_ncols()
if (nr /= nc) then if (nr /= nc) then
info = psb_err_rectangular_mat_unsupported_ info = psb_err_rectangular_mat_unsupported_
call psb_errpush(info,name,i_err=(/nr,nc,0,0,0/)) ierr(1) = nr; ierr(2) = nc;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end if end if
@ -78,9 +83,22 @@ subroutine psb_c_mat_renum(alg,mat,info,perm)
call psb_mat_renum_amd(mat,info,perm) call psb_mat_renum_amd(mat,info,perm)
case(psb_mat_renum_identity_)
nr = mat%get_nrows()
allocate(perm(nr),stat=info)
if (info == 0) then
do i=1,nr
perm(i) = i
end do
else
info = psb_err_alloc_dealloc_
call psb_errpush(info,name)
goto 9999
endif
case default case default
info = psb_err_input_value_invalid_i_ info = psb_err_input_value_invalid_i_
call psb_errpush(info,name,i_err=(/1,alg,0,0,0/)) ierr(1) = 1; ierr(2) = alg;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end select end select

@ -366,7 +366,7 @@ subroutine dmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_
@ -397,7 +397,7 @@ subroutine dmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_

@ -56,7 +56,7 @@ subroutine psb_d_mat_renum(alg,mat,info,perm)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:) integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:)
integer(psb_ipk_) :: err_act, nr, nc, i integer(psb_ipk_) :: err_act, nr, nc, i, ierr(5)
character(len=20) :: name character(len=20) :: name
info = psb_success_ info = psb_success_
@ -69,7 +69,8 @@ subroutine psb_d_mat_renum(alg,mat,info,perm)
nc = mat%get_ncols() nc = mat%get_ncols()
if (nr /= nc) then if (nr /= nc) then
info = psb_err_rectangular_mat_unsupported_ info = psb_err_rectangular_mat_unsupported_
call psb_errpush(info,name,i_err=(/nr,nc,0,0,0/)) ierr(1) = nr; ierr(2) = nc;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end if end if
@ -96,7 +97,8 @@ subroutine psb_d_mat_renum(alg,mat,info,perm)
endif endif
case default case default
info = psb_err_input_value_invalid_i_ info = psb_err_input_value_invalid_i_
call psb_errpush(info,name,i_err=(/1,alg,0,0,0/)) ierr(1) = 1; ierr(2) = alg;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end select end select

@ -365,7 +365,7 @@ subroutine smatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_
@ -396,7 +396,7 @@ subroutine smatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_

@ -20,9 +20,13 @@ subroutine psb_s_mat_renums(alg,mat,info,perm)
ialg = psb_mat_renum_gps_ ialg = psb_mat_renum_gps_
case ('AMD') case ('AMD')
ialg = psb_mat_renum_amd_ ialg = psb_mat_renum_amd_
case ('NONE', 'ID')
ialg = psb_mat_renum_identity_
case default case default
write(0,*) 'Unknown algorithm "',psb_toupper(alg),'"'
ialg = -1 ialg = -1
end select end select
call psb_mat_renum(ialg,mat,info,perm) call psb_mat_renum(ialg,mat,info,perm)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -52,7 +56,7 @@ subroutine psb_s_mat_renum(alg,mat,info,perm)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:) integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:)
integer(psb_ipk_) :: err_act, nr, nc integer(psb_ipk_) :: err_act, nr, nc, i, ierr(5)
character(len=20) :: name character(len=20) :: name
info = psb_success_ info = psb_success_
@ -65,7 +69,8 @@ subroutine psb_s_mat_renum(alg,mat,info,perm)
nc = mat%get_ncols() nc = mat%get_ncols()
if (nr /= nc) then if (nr /= nc) then
info = psb_err_rectangular_mat_unsupported_ info = psb_err_rectangular_mat_unsupported_
call psb_errpush(info,name,i_err=(/nr,nc,0,0,0/)) ierr(1) = nr; ierr(2) = nc;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end if end if
@ -78,9 +83,22 @@ subroutine psb_s_mat_renum(alg,mat,info,perm)
call psb_mat_renum_amd(mat,info,perm) call psb_mat_renum_amd(mat,info,perm)
case(psb_mat_renum_identity_)
nr = mat%get_nrows()
allocate(perm(nr),stat=info)
if (info == 0) then
do i=1,nr
perm(i) = i
end do
else
info = psb_err_alloc_dealloc_
call psb_errpush(info,name)
goto 9999
endif
case default case default
info = psb_err_input_value_invalid_i_ info = psb_err_input_value_invalid_i_
call psb_errpush(info,name,i_err=(/1,alg,0,0,0/)) ierr(1) = 1; ierr(2) = alg;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end select end select

@ -365,7 +365,7 @@ subroutine zmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_
@ -396,7 +396,7 @@ subroutine zmatdist(a_glob, a, ictxt, desc_a,&
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999 goto 9999
end if end if
call psb_geins(1,(/i_count/),b_glob(i_count:i_count),& call psb_geins(ione,(/i_count/),b_glob(i_count:i_count),&
& b,desc_a,info) & b,desc_a,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_

@ -20,9 +20,13 @@ subroutine psb_z_mat_renums(alg,mat,info,perm)
ialg = psb_mat_renum_gps_ ialg = psb_mat_renum_gps_
case ('AMD') case ('AMD')
ialg = psb_mat_renum_amd_ ialg = psb_mat_renum_amd_
case ('NONE', 'ID')
ialg = psb_mat_renum_identity_
case default case default
write(0,*) 'Unknown algorithm "',psb_toupper(alg),'"'
ialg = -1 ialg = -1
end select end select
call psb_mat_renum(ialg,mat,info,perm) call psb_mat_renum(ialg,mat,info,perm)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -52,7 +56,7 @@ subroutine psb_z_mat_renum(alg,mat,info,perm)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:) integer(psb_ipk_), allocatable, optional, intent(out) :: perm(:)
integer(psb_ipk_) :: err_act, nr, nc integer(psb_ipk_) :: err_act, nr, nc, i, ierr(5)
character(len=20) :: name character(len=20) :: name
info = psb_success_ info = psb_success_
@ -65,7 +69,8 @@ subroutine psb_z_mat_renum(alg,mat,info,perm)
nc = mat%get_ncols() nc = mat%get_ncols()
if (nr /= nc) then if (nr /= nc) then
info = psb_err_rectangular_mat_unsupported_ info = psb_err_rectangular_mat_unsupported_
call psb_errpush(info,name,i_err=(/nr,nc,0,0,0/)) ierr(1) = nr; ierr(2) = nc;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end if end if
@ -78,9 +83,22 @@ subroutine psb_z_mat_renum(alg,mat,info,perm)
call psb_mat_renum_amd(mat,info,perm) call psb_mat_renum_amd(mat,info,perm)
case(psb_mat_renum_identity_)
nr = mat%get_nrows()
allocate(perm(nr),stat=info)
if (info == 0) then
do i=1,nr
perm(i) = i
end do
else
info = psb_err_alloc_dealloc_
call psb_errpush(info,name)
goto 9999
endif
case default case default
info = psb_err_input_value_invalid_i_ info = psb_err_input_value_invalid_i_
call psb_errpush(info,name,i_err=(/1,alg,0,0,0/)) ierr(1) = 1; ierr(2) = alg;
call psb_errpush(info,name,i_err=ierr)
goto 9999 goto 9999
end select end select

Loading…
Cancel
Save