From 461a6a325f39dabfea6e09b357a8a40d6996b042 Mon Sep 17 00:00:00 2001 From: Stack-1 Date: Thu, 19 Mar 2026 17:36:44 +0100 Subject: [PATCH] [UPDATE] Removed work/aux buffer from vector routines that use psb_x_vect_type encapsulation for data exchange --- base/auxil/Makefile | 2 +- base/comm/internals/Makefile | 2 +- base/comm/internals/psi_cswapdata.F90 | 29 +- base/comm/internals/psi_cswaptran.F90 | 17 +- base/comm/internals/psi_dswapdata.F90 | 93 +- base/comm/internals/psi_dswapdata_a.F90 | 40 +- base/comm/internals/psi_dswaptran.F90 | 81 +- base/comm/internals/psi_dswaptran_a.F90 | 38 +- base/comm/internals/psi_eswaptran_a.F90 | 2 +- base/comm/internals/psi_iswapdata.F90 | 22 +- base/comm/internals/psi_iswaptran.F90 | 21 +- base/comm/internals/psi_lswapdata.F90 | 18 +- base/comm/internals/psi_lswaptran.F90 | 18 +- ...s_comm_v_mod@psi_s_ovrl_restr_v_impl.smod0 | Bin 49152 -> 0 bytes base/comm/internals/psi_sswapdata.F90 | 41 +- base/comm/internals/psi_sswaptran.F90 | 62 +- base/comm/internals/psi_sswaptran_a.F90 | 2 +- base/comm/internals/psi_zswapdata.F90 | 18 +- base/comm/internals/psi_zswaptran.F90 | 18 +- base/comm/psb_chalo.f90 | 115 +- base/comm/psb_chalo_a.f90 | 4 +- base/comm/psb_covrl.f90 | 86 +- base/comm/psb_covrl_a.f90 | 2 +- base/comm/psb_dhalo.f90 | 101 +- base/comm/psb_dhalo_a.f90 | 2 +- base/comm/psb_dovrl.f90 | 96 +- base/comm/psb_ehalo_a.f90 | 6 +- base/comm/psb_ihalo.f90 | 110 +- base/comm/psb_iovrl.f90 | 99 +- base/comm/psb_lhalo.f90 | 119 +- base/comm/psb_lovrl.f90 | 96 +- base/comm/psb_shalo.f90 | 111 +- base/comm/psb_shalo_a.f90 | 4 +- base/comm/psb_sovrl.f90 | 95 +- base/comm/psb_zhalo.f90 | 110 +- base/comm/psb_zovrl.f90 | 96 +- base/modules/comm/psb_c_comm_mod.f90 | 42 +- base/modules/comm/psb_c_linmap_mod.f90 | 6 +- base/modules/comm/psb_d_comm_a_mod.f90 | 28 +- base/modules/comm/psb_d_comm_mod.f90 | 44 +- base/modules/comm/psb_d_linmap_mod.f90 | 6 +- base/modules/comm/psb_i_comm_mod.f90 | 40 +- base/modules/comm/psb_l_comm_mod.f90 | 40 +- base/modules/comm/psb_s_comm_mod.f90 | 40 +- base/modules/comm/psb_s_linmap_mod.f90 | 6 +- base/modules/comm/psb_z_comm_mod.f90 | 40 +- base/modules/comm/psb_z_linmap_mod.f90 | 6 +- base/modules/comm/psi_c_comm_v_mod.f90 | 24 +- base/modules/comm/psi_d_comm_a_mod.f90 | 66 +- base/modules/comm/psi_d_comm_v_mod.f90 | 74 +- base/modules/comm/psi_i_comm_v_mod.f90 | 24 +- base/modules/comm/psi_l_comm_v_mod.f90 | 24 +- base/modules/comm/psi_s_comm_v_mod.f90 | 94 +- base/modules/comm/psi_z_comm_v_mod.f90 | 24 +- base/modules/psblas/psb_c_psblas_mod.F90 | 22 +- base/modules/psblas/psb_d_psblas_mod.F90 | 6 +- base/modules/psblas/psb_s_psblas_mod.F90 | 6 +- base/modules/psblas/psb_z_psblas_mod.F90 | 6 +- base/psblas/psb_cspmm.f90 | 79 +- base/psblas/psb_cspsm.f90 | 60 +- base/psblas/psb_dspmm.f90 | 112 +- base/psblas/psb_dspsm.f90 | 55 +- base/psblas/psb_sspmm.f90 | 71 +- base/psblas/psb_sspsm.f90 | 51 +- base/psblas/psb_zspmm.f90 | 73 +- base/psblas/psb_zspsm.f90 | 56 +- base/tools/psb_c_map.f90 | 22 +- base/tools/psb_d_map.f90 | 22 +- base/tools/psb_s_map.f90 | 22 +- base/tools/psb_z_map.f90 | 22 +- linsolve/impl/psb_cbicg.f90 | 23 +- linsolve/impl/psb_ccg.F90 | 13 +- linsolve/impl/psb_ccgs.f90 | 18 +- linsolve/impl/psb_ccgstab.f90 | 18 +- linsolve/impl/psb_ccgstabl.f90 | 15 +- linsolve/impl/psb_cfcg.F90 | 10 +- linsolve/impl/psb_cgcr.f90 | 14 +- linsolve/impl/psb_crgmres.f90 | 16 +- linsolve/impl/psb_crichardson.f90 | 16 +- linsolve/impl/psb_dbicg.f90 | 18 +- linsolve/impl/psb_dcg.F90 | 13 +- linsolve/impl/psb_dcgs.f90 | 18 +- linsolve/impl/psb_dcgstab.f90 | 20 +- linsolve/impl/psb_dcgstabl.f90 | 15 +- linsolve/impl/psb_dfcg.F90 | 10 +- linsolve/impl/psb_dgcr.f90 | 15 +- linsolve/impl/psb_drgmres.f90 | 18 +- linsolve/impl/psb_drichardson.f90 | 14 +- linsolve/impl/psb_sbicg.f90 | 20 +- linsolve/impl/psb_scg.F90 | 13 +- linsolve/impl/psb_scgs.f90 | 18 +- linsolve/impl/psb_scgstab.f90 | 25 +- linsolve/impl/psb_scgstabl.f90 | 15 +- linsolve/impl/psb_sfcg.F90 | 10 +- linsolve/impl/psb_sgcr.f90 | 21 +- linsolve/impl/psb_srgmres.f90 | 18 +- linsolve/impl/psb_srichardson.f90 | 12 +- linsolve/impl/psb_zbicg.f90 | 19 +- linsolve/impl/psb_zcg.F90 | 13 +- linsolve/impl/psb_zcgs.f90 | 18 +- linsolve/impl/psb_zcgstab.f90 | 24 +- linsolve/impl/psb_zcgstabl.f90 | 15 +- linsolve/impl/psb_zfcg.F90 | 11 +- linsolve/impl/psb_zgcr.f90 | 20 +- linsolve/impl/psb_zrgmres.f90 | 18 +- linsolve/impl/psb_zrichardson.f90 | 12 +- log.txt | 1855 +++++++++++++++-- prec/impl/psb_c_bjacprec_impl.f90 | 46 +- prec/impl/psb_c_diagprec_impl.f90 | 3 +- prec/impl/psb_c_nullprec_impl.f90 | 3 +- prec/impl/psb_c_prec_type_impl.f90 | 66 +- prec/impl/psb_d_bjacprec_impl.f90 | 67 +- prec/impl/psb_d_diagprec_impl.f90 | 3 +- prec/impl/psb_d_nullprec_impl.f90 | 3 +- prec/impl/psb_d_prec_type_impl.f90 | 61 +- prec/impl/psb_s_bjacprec_impl.f90 | 68 +- prec/impl/psb_s_diagprec_impl.f90 | 3 +- prec/impl/psb_s_nullprec_impl.f90 | 3 +- prec/impl/psb_s_prec_type_impl.f90 | 57 +- prec/impl/psb_z_bjacprec_impl.f90 | 49 +- prec/impl/psb_z_diagprec_impl.f90 | 3 +- prec/impl/psb_z_nullprec_impl.f90 | 3 +- prec/impl/psb_z_prec_type_impl.f90 | 51 +- prec/psb_c_base_prec_mod.f90 | 3 +- prec/psb_c_bjacprec.f90 | 4 +- prec/psb_c_diagprec.f90 | 3 +- prec/psb_c_nullprec.f90 | 3 +- prec/psb_c_prec_type.f90 | 28 +- prec/psb_d_base_prec_mod.f90 | 4 +- prec/psb_d_bjacprec.f90 | 3 +- prec/psb_d_diagprec.f90 | 3 +- prec/psb_d_nullprec.f90 | 3 +- prec/psb_d_prec_type.f90 | 6 +- prec/psb_s_base_prec_mod.f90 | 31 +- prec/psb_s_bjacprec.f90 | 5 +- prec/psb_s_diagprec.f90 | 3 +- prec/psb_s_nullprec.f90 | 3 +- prec/psb_s_prec_type.f90 | 6 +- prec/psb_z_base_prec_mod.f90 | 4 +- prec/psb_z_bjacprec.f90 | 3 +- prec/psb_z_diagprec.f90 | 3 +- prec/psb_z_nullprec.f90 | 3 +- test/torture/psb_s_mvsv_tester.f90 | 40 +- 143 files changed, 3051 insertions(+), 3129 deletions(-) delete mode 100644 base/comm/internals/psi_s_comm_v_mod@psi_s_ovrl_restr_v_impl.smod0 diff --git a/base/auxil/Makefile b/base/auxil/Makefile index 1bb3f105..9e8597e6 100644 --- a/base/auxil/Makefile +++ b/base/auxil/Makefile @@ -16,7 +16,7 @@ MODDIR=../modules FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) CINCLUDES=-I. -objs: mpfobjs $(FOBJS) $(FOBJS2) $(COBJS) $(MPFOBJS2) $(MPFOBJS) +objs: mpfobjs $(FOBJS) $(FOBJS2) $(COBJS) $(MPFOBJS2) lib: objs $(AR) $(LIBDIR)/$(LIBNAME) $(MPFOBJS) $(MPFOBJS2) $(FOBJS) $(FOBJS2) $(COBJS) $(RANLIB) $(LIBDIR)/$(LIBNAME) diff --git a/base/comm/internals/Makefile b/base/comm/internals/Makefile index f8055544..2d0278f6 100644 --- a/base/comm/internals/Makefile +++ b/base/comm/internals/Makefile @@ -31,7 +31,7 @@ MODDIR=../../modules FINCLUDES=$(FMFLAG). $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) CINCLUDES=-I. -objs: mpfobjs $(FOBJS) $(MPFOBJS) +objs: mpfobjs $(FOBJS) lib: objs $(AR) $(LIBDIR)/$(LIBNAME) $(MPFOBJS) $(MPFOBJS2) $(FOBJS) $(FOBJS2) $(COBJS) $(RANLIB) $(LIBDIR)/$(LIBNAME) diff --git a/base/comm/internals/psi_cswapdata.F90 b/base/comm/internals/psi_cswapdata.F90 index 4d6be418..657c9de6 100644 --- a/base/comm/internals/psi_cswapdata.F90 +++ b/base/comm/internals/psi_cswapdata.F90 @@ -77,7 +77,6 @@ ! beta - complex Choose overwrite or sum. ! y - type(psb_@x@_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - complex Buffer space. If not sufficient, will do ! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data @@ -92,7 +91,7 @@ submodule (psi_c_comm_v_mod) psi_c_swapdata_impl use psb_base_mod contains - subroutine psi_cswapdata_vect(flag,beta,y,desc_a,work,info,data) + subroutine psi_cswapdata_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -103,11 +102,10 @@ contains #endif integer(psb_ipk_), intent(in) :: flag + class(psb_c_base_vect_type) :: y + complex(psb_spk_) :: beta + type(psb_desc_type), target :: desc_a integer(psb_ipk_), intent(out) :: info - class(psb_c_base_vect_type) :: y - complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) - type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data ! locals @@ -117,8 +115,8 @@ contains class(psb_i_base_vect_type), pointer :: d_vidx character(len=20) :: name - info=psb_success_ - name='psi_swap_datav' + info = psb_success_ + name = 'psi_cswapdata_vect' call psb_erractionsave(err_act) ctxt = desc_a%get_context() @@ -148,7 +146,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -174,7 +172,7 @@ contains ! ! module subroutine psi_cswap_vidx_vect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -189,7 +187,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -207,7 +204,7 @@ contains character(len=20) :: name info=psb_success_ - name='psi_swap_datav' + name='psi_cswap_vidx_vect' call psb_erractionsave(err_act) call psb_info(ctxt,me,np) if (np == -1) then @@ -420,7 +417,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_cswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswapdata_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi #endif @@ -433,7 +430,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data @@ -475,7 +471,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -501,7 +497,7 @@ contains ! ! module subroutine psi_cswap_vidx_multivect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -516,7 +512,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_cswaptran.F90 b/base/comm/internals/psi_cswaptran.F90 index 92b9f326..56985264 100644 --- a/base/comm/internals/psi_cswaptran.F90 +++ b/base/comm/internals/psi_cswaptran.F90 @@ -80,7 +80,6 @@ ! beta - complex Choose overwrite or sum. ! y - type(psb_c_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - complex Buffer space. If not sufficient, will do ! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data @@ -94,7 +93,7 @@ submodule (psi_c_comm_v_mod) psi_c_swaptran_impl use psb_base_mod contains - module subroutine psi_cswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswaptran_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -108,7 +107,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -150,7 +148,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -175,7 +173,7 @@ contains ! ! module subroutine psi_ctran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -190,7 +188,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -430,7 +427,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_cswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswaptran_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -444,7 +441,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -486,7 +482,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -512,7 +508,7 @@ contains ! ! module subroutine psi_ctran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -527,7 +523,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_dswapdata.F90 b/base/comm/internals/psi_dswapdata.F90 index 6dcc4eea..4ed8cb48 100644 --- a/base/comm/internals/psi_dswapdata.F90 +++ b/base/comm/internals/psi_dswapdata.F90 @@ -91,7 +91,7 @@ submodule (psi_d_comm_v_mod) psi_d_swapdata_impl use psb_desc_const_mod, only: psb_swap_start_, psb_swap_wait_ use psb_base_mod contains - module subroutine psi_dswapdata_vect(flag,beta,y,desc_a,info,data,work) + module subroutine psi_dswapdata_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -101,13 +101,12 @@ contains include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - type(psb_desc_type), target :: desc_a - real(psb_dpk_), optional, target :: work(:) - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + class(psb_d_base_vect_type), intent(inout) :: y + real(psb_dpk_), intent(in) :: beta + type(psb_desc_type), target :: desc_a ! TODO: should this be intent(in)? + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -209,15 +208,15 @@ contains #endif type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_) :: icomm integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y real(psb_dpk_), intent(in) :: beta + class(psb_d_base_vect_type), intent(inout) :: y class(psb_i_base_vect_type), intent(inout) :: comm_indexes - integer(psb_ipk_), intent(in) :: num_neighbors,total_send, total_recv + integer(psb_ipk_), intent(in) :: num_neighbors, total_send, total_recv + integer(psb_ipk_), intent(out) :: info ! locals + integer(psb_mpk_) :: icomm integer(psb_mpk_) :: np, me integer(psb_mpk_) :: proc_to_comm, p2ptag, p2pstat(mpi_status_size),& & iret, nesd, nerv @@ -449,15 +448,15 @@ contains #endif type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_) :: icomm - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y real(psb_dpk_), intent(in) :: beta + integer(psb_ipk_), intent(in) :: flag + class(psb_d_base_vect_type), intent(inout) :: y class(psb_i_base_vect_type), intent(inout) :: comm_indexes integer(psb_ipk_), intent(in) :: num_neighbors,total_send,total_recv + integer(psb_ipk_), intent(out) :: info ! locals + integer(psb_mpk_) :: icomm integer(psb_mpk_) :: np, me integer(psb_mpk_) :: iret, p2pstat(mpi_status_size) integer(psb_ipk_) :: err_act, topology_total_send, topology_total_recv, buffer_size @@ -606,7 +605,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_dswapdata_multivect(flag,beta,y,desc_a,info,data,work) + module subroutine psi_dswapdata_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi #endif @@ -615,13 +614,12 @@ contains include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - type(psb_desc_type), target :: desc_a - real(psb_dpk_), optional, target :: work(:) - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + class(psb_d_base_multivect_type), intent(inout) :: y + real(psb_dpk_), intent(in) :: beta + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! local variables used to detect the communication scheme logical :: swap_mpi, swap_sync, swap_send, swap_recv, swap_start, swap_wait @@ -722,16 +720,16 @@ subroutine psi_dswap_baseline_multivect(ctxt,flag,beta,y,comm_indexes, & include 'mpif.h' #endif - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_) :: icomm - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_), intent(in) :: beta - class(psb_i_base_vect_type), intent(inout) :: comm_indexes - integer(psb_ipk_), intent(in) :: num_neighbors,total_send, total_recv + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_multivect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: comm_indexes + integer(psb_ipk_), intent(in) :: num_neighbors,total_send, total_recv + integer(psb_ipk_), intent(out) :: info ! locals + integer(psb_mpk_) :: icomm integer(psb_mpk_) :: np, me, nesd, nerv, n integer(psb_mpk_) :: proc_to_comm, p2ptag, p2pstat(mpi_status_size), iret integer(psb_mpk_), allocatable :: prcid(:) @@ -964,26 +962,27 @@ subroutine psi_dswap_neighbor_topology_multivect(ctxt,flag,beta,y,comm_indexes,n include 'mpif.h' #endif - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_) :: icomm - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_), intent(in) :: beta - class(psb_i_base_vect_type), intent(inout) :: comm_indexes - integer(psb_ipk_), intent(in) :: num_neighbors,total_send, total_recv + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_multivect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: comm_indexes + integer(psb_ipk_), intent(in) :: num_neighbors,total_send, total_recv + integer(psb_ipk_), intent(out) :: info + ! locals - integer(psb_mpk_) :: np, me - integer(psb_mpk_) :: iret, p2pstat(mpi_status_size) - integer(psb_ipk_) :: err_act, topology_total_send, topology_total_recv, buffer_size - logical :: do_start, do_wait - logical, parameter :: debug = .false. - character(len=30) :: name + integer(psb_mpk_) :: icomm + integer(psb_mpk_) :: np, me + integer(psb_mpk_) :: iret, p2pstat(mpi_status_size) + integer(psb_ipk_) :: err_act, topology_total_send, topology_total_recv, buffer_size + logical :: do_start, do_wait + logical, parameter :: debug = .false. + character(len=30) :: name info = psb_success_ - name = 'psi_dswap_nbr_vect' + name = 'psi_dswap_neighbor_topology_multivect' call psb_erractionsave(err_act) call psb_info(ctxt,me,np) if (np == -1) then diff --git a/base/comm/internals/psi_dswapdata_a.F90 b/base/comm/internals/psi_dswapdata_a.F90 index 2b10ea2d..fae1a711 100644 --- a/base/comm/internals/psi_dswapdata_a.F90 +++ b/base/comm/internals/psi_dswapdata_a.F90 @@ -97,13 +97,14 @@ contains include 'mpif.h' #endif - integer(psb_mpk_), intent(in) :: n - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info -real(psb_dpk_) :: y(:,:), beta -real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:,:) + type(psb_desc_type),target :: desc_a + real(psb_dpk_), target :: work(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -165,12 +166,13 @@ real(psb_dpk_), target :: work(:) #endif type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(out) :: info -real(psb_dpk_) :: y(:,:), beta -real(psb_dpk_), target :: work(:) - integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:,:) + real(psb_dpk_), target :: work(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv ! locals @@ -565,12 +567,13 @@ real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:) + type(psb_desc_type),target :: desc_a + real(psb_dpk_), target :: work(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -648,7 +651,8 @@ real(psb_dpk_), pointer, dimension(:) :: sndbuf, rcvbuf type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:) real(psb_dpk_), target :: work(:) integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_dswaptran.F90 b/base/comm/internals/psi_dswaptran.F90 index ee4a1a73..75e18f2a 100644 --- a/base/comm/internals/psi_dswaptran.F90 +++ b/base/comm/internals/psi_dswaptran.F90 @@ -80,7 +80,6 @@ ! beta - real Choose overwrite or sum. ! y - type(psb_d_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - real Buffer space. If not sufficient, will do ! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data @@ -94,7 +93,7 @@ submodule (psi_d_comm_v_mod) psi_d_swaptran_impl use psb_base_mod contains - module subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_dswaptran_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -104,13 +103,12 @@ contains include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_vect_type), intent(inout) :: y + type(psb_desc_type),target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -119,8 +117,8 @@ contains class(psb_i_base_vect_type), pointer :: d_vidx character(len=20) :: name - info=psb_success_ - name='psi_swap_tranv' + info = psb_success_ + name = 'psi_dswaptran_vect' call psb_erractionsave(err_act) ctxt = desc_a%get_context() @@ -150,7 +148,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -175,7 +173,7 @@ contains ! ! module subroutine psi_dtran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -185,14 +183,13 @@ contains include 'mpif.h' #endif - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) - class(psb_i_base_vect_type), intent(inout) :: idx - integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_vect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: idx + integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + integer(psb_ipk_), intent(out) :: info ! locals integer(psb_mpk_) :: np, me, nesd, nerv, n @@ -206,8 +203,8 @@ contains logical, parameter :: usersend=.false., debug=.false. character(len=20) :: name - info=psb_success_ - name='psi_swap_tran' + info = psb_success_ + name = 'psi_dtran_vidx_vect' call psb_erractionsave(err_act) call psb_info(ctxt,me,np) if (np == -1) then @@ -430,7 +427,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_dswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_dswaptran_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -440,13 +437,12 @@ contains include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_multivect_type), intent(inout) :: y + type(psb_desc_type),target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -486,7 +482,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -512,7 +508,7 @@ contains ! ! module subroutine psi_dtran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -522,14 +518,13 @@ contains include 'mpif.h' #endif - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) - class(psb_i_base_vect_type), intent(inout) :: idx - integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_d_base_multivect_type), intent(inout) :: y + real(psb_dpk_), intent(in) :: beta + class(psb_i_base_vect_type), intent(inout) :: idx + integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv ! locals integer(psb_mpk_) :: np, me, nesd, nerv, n @@ -543,8 +538,8 @@ contains logical, parameter :: usersend=.false., debug=.false. character(len=20) :: name - info=psb_success_ - name='psi_swap_tran' + info = psb_success_ + name = 'psi_dtran_vidx_multivect' call psb_erractionsave(err_act) call psb_info(ctxt,me,np) if (np == -1) then diff --git a/base/comm/internals/psi_dswaptran_a.F90 b/base/comm/internals/psi_dswaptran_a.F90 index bd89d814..e8e991e4 100644 --- a/base/comm/internals/psi_dswaptran_a.F90 +++ b/base/comm/internals/psi_dswaptran_a.F90 @@ -30,7 +30,7 @@ ! ! ! -! File: psi_dswaptran.F90 +! File: psi_dswaptran_a.F90 ! ! Subroutine: psi_dswaptranm ! Implements the data exchange among processes. This is similar to Xswapdata, but @@ -101,13 +101,14 @@ contains include 'mpif.h' #endif - integer(psb_mpk_), intent(in) :: n - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta - real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:,:) + type(psb_desc_type),target :: desc_a + real(psb_dpk_), target :: work(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -149,7 +150,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,n,beta,y,d_idx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,n,beta,y,d_idx,totxch,idxs,idxr,work,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -174,7 +175,8 @@ contains integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta + real(psb_dpk_), intent(inout) :: y(:,:) + real(psb_dpk_), intent(in) :: beta real(psb_dpk_), target :: work(:) integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv @@ -579,12 +581,13 @@ contains include 'mpif.h' #endif - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_), target :: work(:) - type(psb_desc_type),target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + real(psb_dpk_), intent(inout) :: y(:) + type(psb_desc_type),target :: desc_a + real(psb_dpk_), target :: work(:) + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data ! locals type(psb_ctxt_type) :: ctxt @@ -659,7 +662,8 @@ contains type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta + real(psb_dpk_), intent(inout) :: y(:) + real(psb_dpk_), intent(in) :: beta real(psb_dpk_), target :: work(:) integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_eswaptran_a.F90 b/base/comm/internals/psi_eswaptran_a.F90 index b5f375ff..c095f708 100644 --- a/base/comm/internals/psi_eswaptran_a.F90 +++ b/base/comm/internals/psi_eswaptran_a.F90 @@ -30,7 +30,7 @@ ! ! ! -! File: psi_eswaptran.F90 +! File: psi_eswaptran_a.F90 ! ! Subroutine: psi_eswaptranm ! Implements the data exchange among processes. This is similar to Xswapdata, but diff --git a/base/comm/internals/psi_iswapdata.F90 b/base/comm/internals/psi_iswapdata.F90 index 23c6d1da..8d659f9b 100644 --- a/base/comm/internals/psi_iswapdata.F90 +++ b/base/comm/internals/psi_iswapdata.F90 @@ -77,8 +77,6 @@ ! beta - integer Choose overwrite or sum. ! y - type(psb_@x@_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - integer Buffer space. If not sufficient, will do -! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data ! default psb_comm_halo_ @@ -92,7 +90,7 @@ submodule (psi_i_comm_v_mod) psi_i_swapdata_impl use psb_base_mod contains - subroutine psi_iswapdata_vect(flag,beta,y,desc_a,work,info,data) + subroutine psi_iswapdata_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -106,7 +104,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data @@ -148,7 +145,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -174,7 +171,7 @@ contains ! ! module subroutine psi_iswap_vidx_vect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -189,7 +186,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -206,8 +202,8 @@ contains logical, parameter :: usersend=.false., debug=.false. character(len=20) :: name - info=psb_success_ - name='psi_swap_datav' + info = psb_success_ + name = 'psi_iswap_vidx_vect' call psb_erractionsave(err_act) call psb_info(ctxt,me,np) if (np == -1) then @@ -420,7 +416,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_iswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswapdata_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi #endif @@ -433,7 +429,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data @@ -475,7 +470,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -501,7 +496,7 @@ contains ! ! module subroutine psi_iswap_vidx_multivect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -516,7 +511,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_iswaptran.F90 b/base/comm/internals/psi_iswaptran.F90 index ce4e64e7..0454bc1e 100644 --- a/base/comm/internals/psi_iswaptran.F90 +++ b/base/comm/internals/psi_iswaptran.F90 @@ -80,7 +80,6 @@ ! beta - integer Choose overwrite or sum. ! y - type(psb_i_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - integer Buffer space. If not sufficient, will do ! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data @@ -94,7 +93,7 @@ submodule (psi_i_comm_v_mod) psi_i_swaptran_impl use psb_base_mod contains - module subroutine psi_iswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswaptran_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -108,7 +107,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -119,8 +117,8 @@ contains class(psb_i_base_vect_type), pointer :: d_vidx character(len=20) :: name - info=psb_success_ - name='psi_swap_tranv' + info = psb_success_ + name = 'psi_iswaptran_vect' call psb_erractionsave(err_act) ctxt = desc_a%get_context() @@ -150,7 +148,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -175,7 +173,7 @@ contains ! ! module subroutine psi_itran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -190,7 +188,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -430,7 +427,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_iswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswaptran_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -444,7 +441,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -486,7 +482,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -512,7 +508,7 @@ contains ! ! module subroutine psi_itran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -527,7 +523,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_lswapdata.F90 b/base/comm/internals/psi_lswapdata.F90 index 7d9e13a4..46b607df 100644 --- a/base/comm/internals/psi_lswapdata.F90 +++ b/base/comm/internals/psi_lswapdata.F90 @@ -77,8 +77,6 @@ ! beta - integer Choose overwrite or sum. ! y - type(psb_@x@_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - integer Buffer space. If not sufficient, will do -! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data ! default psb_comm_halo_ @@ -92,7 +90,7 @@ submodule (psi_l_comm_v_mod) psi_l_swapdata_impl use psb_base_mod contains - subroutine psi_lswapdata_vect(flag,beta,y,desc_a,work,info,data) + subroutine psi_lswapdata_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -106,7 +104,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data @@ -148,7 +145,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -174,7 +171,7 @@ contains ! ! module subroutine psi_lswap_vidx_vect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -189,7 +186,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -420,7 +416,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_lswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswapdata_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi #endif @@ -433,7 +429,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data @@ -475,7 +470,7 @@ contains goto 9999 end if - call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swapdata(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -501,7 +496,7 @@ contains ! ! module subroutine psi_lswap_vidx_multivect(ctxt,flag,beta,y,idx, & - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -516,7 +511,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_lswaptran.F90 b/base/comm/internals/psi_lswaptran.F90 index 094fc574..ff7d3400 100644 --- a/base/comm/internals/psi_lswaptran.F90 +++ b/base/comm/internals/psi_lswaptran.F90 @@ -80,8 +80,6 @@ ! beta - integer Choose overwrite or sum. ! y - type(psb_l_vect_type) The data area ! desc_a - type(psb_desc_type). The communication descriptor. -! work(:) - integer Buffer space. If not sufficient, will do -! our own internal allocation. ! info - integer. return code. ! data - integer which list is to be used to exchange data ! default psb_comm_halo_ @@ -94,7 +92,7 @@ submodule (psi_l_comm_v_mod) psi_l_swaptran_impl use psb_base_mod contains - module subroutine psi_lswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswaptran_vect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -108,7 +106,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -150,7 +147,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -175,7 +172,7 @@ contains ! ! module subroutine psi_ltran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -190,7 +187,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv @@ -430,7 +426,7 @@ contains ! Takes care of Y an encaspulated multivector. ! ! - module subroutine psi_lswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswaptran_multivect(flag,beta,y,desc_a,info,data) #ifdef PSB_MPI_MOD use mpi @@ -444,7 +440,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) type(psb_desc_type),target :: desc_a integer(psb_ipk_), optional :: data @@ -486,7 +481,7 @@ contains goto 9999 end if - call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,work,info) + call psi_swaptran(ctxt,flag,beta,y,d_vidx,totxch,idxs,idxr,info) if (info /= psb_success_) goto 9999 call psb_erractionrestore(err_act) @@ -512,7 +507,7 @@ contains ! ! module subroutine psi_ltran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) #ifdef PSB_MPI_MOD use mpi @@ -527,7 +522,6 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv diff --git a/base/comm/internals/psi_s_comm_v_mod@psi_s_ovrl_restr_v_impl.smod0 b/base/comm/internals/psi_s_comm_v_mod@psi_s_ovrl_restr_v_impl.smod0 deleted file mode 100644 index 5767f7ca74babbd3a282c786fa29902a6cc189f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 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 psb_chalo_vect use psi_mod implicit none - type(psb_c_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_c_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_spk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_chalov' - info=psb_success_ + name = 'psb_chalo_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then - info = psb_err_internal_error_ ; goto 9999 + info = psb_err_internal_error_ + goto 9999 end if ctxt=desc_a%get_context() @@ -129,39 +127,11 @@ subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,czero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,czero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,cone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,cone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -174,9 +144,6 @@ subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -196,7 +163,6 @@ end subroutine psb_chalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -207,36 +173,34 @@ end subroutine psb_chalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_chalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_chalo_multivect use psi_mod implicit none - type(psb_c_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a + type(psb_c_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), target, optional, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_spk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_chalov' - info=psb_success_ + name = 'psb_chalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -285,39 +249,11 @@ subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,czero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,czero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,cone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,cone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -325,14 +261,11 @@ subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data) end if if (info /= psb_success_) then - ch_err='PSI_swapdata' + ch_err = 'PSI_swapdata' call psb_errpush(psb_err_from_subroutine_,name,a_err=ch_err) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_chalo_a.f90 b/base/comm/psb_chalo_a.f90 index 30d47ba0..d2e3480c 100644 --- a/base/comm/psb_chalo_a.f90 +++ b/base/comm/psb_chalo_a.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_chalo.f90 +! File: psb_chalo_a.f90 ! ! Subroutine: psb_chalom ! This subroutine performs the exchange of the halo elements in a @@ -52,7 +52,7 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_chalom(x,desc_a,info,jx,ik,work,tran,mode,data) +subroutine psb_chalom(x,desc_a,info,jx,ik,work,tran,mode,data) use psb_base_mod, psb_protect_name => psb_chalom use psi_mod implicit none diff --git a/base/comm/psb_covrl.f90 b/base/comm/psb_covrl.f90 index 6ae6ce9f..91355415 100644 --- a/base/comm/psb_covrl.f90 +++ b/base/comm/psb_covrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,7 +62,7 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_covrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_covrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_covrl_vect use psi_mod implicit none @@ -71,27 +70,25 @@ subroutine psb_covrl_vect(x,desc_a,info,work,update,mode) type(psb_c_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional, target, intent(inout) :: work(:) integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_spk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_covrlv' - info=psb_success_ + name = 'psb_covrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -137,41 +134,15 @@ subroutine psb_covrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,cone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,cone,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') goto 9999 end if - - if (aliw) deallocate(iwork) - nullify(iwork) call psb_erractionrestore(err_act) return @@ -192,7 +163,6 @@ end subroutine psb_covrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -213,29 +183,27 @@ end subroutine psb_covrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_covrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_covrl_multivect use psi_mod implicit none type(psb_c_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_spk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_covrlv' - info=psb_success_ + name = 'psb_covrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -289,32 +257,9 @@ subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,cone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,cone,x%v, desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -322,9 +267,6 @@ subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_covrl_a.f90 b/base/comm/psb_covrl_a.f90 index 2d389438..d42bcd94 100644 --- a/base/comm/psb_covrl_a.f90 +++ b/base/comm/psb_covrl_a.f90 @@ -30,7 +30,7 @@ ! ! ! -! File: psb_covrl.f90 +! File: psb_covrl_a.f90 ! ! Subroutine: psb_covrlm ! This subroutine performs the exchange of the overlap elements in a diff --git a/base/comm/psb_dhalo.f90 b/base/comm/psb_dhalo.f90 index 4a585be6..8a182d45 100644 --- a/base/comm/psb_dhalo.f90 +++ b/base/comm/psb_dhalo.f90 @@ -41,7 +41,6 @@ ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - real(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -52,7 +51,7 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data) +subroutine psb_dhalo_vect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_dhalo_vect use psi_mod implicit none @@ -60,16 +59,14 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data) type(psb_d_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,data ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode,data_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_dpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw @@ -129,38 +126,12 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(flag=imode, info=info, y=x%v, beta=dzero, desc_a=desc_a, & - & data=data_, work=iwork) + call psi_swapdata(imode,dzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,done,x%v,desc_a,iwork,info) + call psi_swaptran(imode,done,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -168,14 +139,11 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data) end if if (info /= psb_success_) then - ch_err='PSI_swapdata' + ch_err = 'PSI_swapdata' call psb_errpush(psb_err_from_subroutine_,name,a_err=ch_err) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -195,7 +163,6 @@ end subroutine psb_dhalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - real(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -206,36 +173,34 @@ end subroutine psb_dhalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_dhalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_dhalo_multivect use psi_mod implicit none - type(psb_d_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_d_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,data ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_dpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_dhalov' - info=psb_success_ + name = 'psb_dhalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -284,38 +249,11 @@ subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(flag=imode, info=info, y=x%v, beta=dzero, desc_a=desc_a, data=data_, work=iwork) + call psi_swapdata(imode,dzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,done,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,done,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -328,9 +266,6 @@ subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_dhalo_a.f90 b/base/comm/psb_dhalo_a.f90 index d802ead5..f068db27 100644 --- a/base/comm/psb_dhalo_a.f90 +++ b/base/comm/psb_dhalo_a.f90 @@ -52,7 +52,7 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_dhalom(x,desc_a,info,jx,ik,work,tran,mode,data) +subroutine psb_dhalom(x,desc_a,info,jx,ik,work,tran,mode,data) use psb_base_mod, psb_protect_name => psb_dhalom use psi_mod implicit none diff --git a/base/comm/psb_dovrl.f90 b/base/comm/psb_dovrl.f90 index ccbcce6c..a252d658 100644 --- a/base/comm/psb_dovrl.f90 +++ b/base/comm/psb_dovrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - real(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,35 +62,33 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_dovrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_dovrl_vect use psi_mod implicit none - type(psb_d_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_d_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_dpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_dovrlv' - info=psb_success_ + name = 'psb_dovrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -137,41 +134,15 @@ subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(flag=mode_, beta=done, y=x%v, desc_a=desc_a, & - & data=psb_comm_ovr_, info=info, work=iwork) + call psi_swapdata(mode_, done, x%v, desc_a, info, data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') goto 9999 end if - - if (aliw) deallocate(iwork) - nullify(iwork) call psb_erractionrestore(err_act) return @@ -192,7 +163,6 @@ end subroutine psb_dovrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - real(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -213,29 +183,27 @@ end subroutine psb_dovrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_dovrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_dovrl_multivect use psi_mod implicit none - type(psb_d_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_d_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_dpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_dovrlv' - info=psb_success_ + name = 'psb_dovrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -289,32 +257,9 @@ subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(flag=mode_, beta=done, y=x%v, desc_a=desc_a, & - & data=psb_comm_ovr_, info=info, work=iwork) + call psi_swapdata(mode_, done, x%v, desc_a, info, data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -322,9 +267,6 @@ subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_ehalo_a.f90 b/base/comm/psb_ehalo_a.f90 index d5431e69..712ae961 100644 --- a/base/comm/psb_ehalo_a.f90 +++ b/base/comm/psb_ehalo_a.f90 @@ -52,7 +52,7 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_ehalom(x,desc_a,info,jx,ik,work,tran,mode,data) +subroutine psb_ehalom(x,desc_a,info,jx,ik,work,tran,mode,data) use psb_base_mod, psb_protect_name => psb_ehalom use psi_mod implicit none @@ -174,7 +174,7 @@ subroutine psb_ehalom(x,desc_a,info,jx,ik,work,tran,mode,data) & desc_a,iwork,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then call psi_swaptran(imode,k,eone,xp,& - &desc_a,iwork,info) + & desc_a,iwork,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -254,7 +254,7 @@ end subroutine psb_ehalom ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_ehalov(x,desc_a,info,work,tran,mode,data) +subroutine psb_ehalov(x,desc_a,info,work,tran,mode,data) use psb_base_mod, psb_protect_name => psb_ehalov use psi_mod implicit none diff --git a/base/comm/psb_ihalo.f90 b/base/comm/psb_ihalo.f90 index 57e52958..9ca4080c 100644 --- a/base/comm/psb_ihalo.f90 +++ b/base/comm/psb_ihalo.f90 @@ -41,7 +41,6 @@ ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -52,36 +51,34 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data) +subroutine psb_ihalo_vect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_ihalo_vect use psi_mod implicit none type(psb_i_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode,data_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_ipk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_ihalov' - info=psb_success_ + name = 'psb_ihalo_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -129,39 +126,11 @@ subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,izero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,izero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,ione,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,ione,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -174,9 +143,6 @@ subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -196,7 +162,6 @@ end subroutine psb_ihalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -207,36 +172,34 @@ end subroutine psb_ihalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_ihalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_ihalo_multivect use psi_mod implicit none - type(psb_i_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_i_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_ipk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_ihalov' - info=psb_success_ + name = 'psb_ihalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -285,39 +248,11 @@ subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,izero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,izero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,ione,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,ione,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -330,9 +265,6 @@ subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_iovrl.f90 b/base/comm/psb_iovrl.f90 index 3dd459f1..f1b9767a 100644 --- a/base/comm/psb_iovrl.f90 +++ b/base/comm/psb_iovrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,35 +62,33 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_iovrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_iovrl_vect use psi_mod implicit none - type(psb_i_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_i_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_ipk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_iovrlv' - info=psb_success_ + name = 'psb_iovrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -137,41 +134,15 @@ subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,ione,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,ione,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') goto 9999 end if - - if (aliw) deallocate(iwork) - nullify(iwork) call psb_erractionrestore(err_act) return @@ -192,7 +163,6 @@ end subroutine psb_iovrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -213,35 +183,34 @@ end subroutine psb_iovrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_iovrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_iovrl_multivect use psi_mod implicit none type(psb_i_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_ipk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_iovrlv' - info=psb_success_ + name = 'psb_iovrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then - info = psb_err_internal_error_ ; goto 9999 + info = psb_err_internal_error_ + goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -289,32 +258,9 @@ subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,ione,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,ione,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -322,9 +268,6 @@ subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_lhalo.f90 b/base/comm/psb_lhalo.f90 index 3a188561..322ba72a 100644 --- a/base/comm/psb_lhalo.f90 +++ b/base/comm/psb_lhalo.f90 @@ -41,7 +41,6 @@ ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -52,36 +51,35 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data) +subroutine psb_lhalo_vect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_lhalo_vect use psi_mod implicit none type(psb_l_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_lpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_lhalov' - info=psb_success_ + name = 'psb_lhalo_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then - info = psb_err_internal_error_ ; goto 9999 + info = psb_err_internal_error_ + goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -124,44 +122,17 @@ subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data) if ((info == 0).and.(lldx= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,lzero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,lzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,lone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,lone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -174,9 +145,6 @@ subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -196,7 +164,6 @@ end subroutine psb_lhalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -207,36 +174,35 @@ end subroutine psb_lhalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_lhalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_lhalo_multivect use psi_mod implicit none - type(psb_l_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_l_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_lpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_lhalov' - info=psb_success_ + name = 'psb_lhalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then - info = psb_err_internal_error_ ; goto 9999 + info = psb_err_internal_error_ + goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -285,39 +251,11 @@ subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,lzero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,lzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,lone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,lone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -330,9 +268,6 @@ subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_lovrl.f90 b/base/comm/psb_lovrl.f90 index 43de77bb..b669e31e 100644 --- a/base/comm/psb_lovrl.f90 +++ b/base/comm/psb_lovrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,35 +62,33 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_lovrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_lovrl_vect use psi_mod implicit none - type(psb_l_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_l_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_lpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_lovrlv' - info=psb_success_ + name = 'psb_lovrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -137,41 +134,15 @@ subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,lone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,lone,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') goto 9999 end if - - if (aliw) deallocate(iwork) - nullify(iwork) call psb_erractionrestore(err_act) return @@ -192,7 +163,6 @@ end subroutine psb_lovrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - integer(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -213,29 +183,27 @@ end subroutine psb_lovrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_lovrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_lovrl_multivect use psi_mod implicit none - type(psb_l_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_l_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - integer(psb_lpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_lovrlv' - info=psb_success_ + name = 'psb_lovrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -289,32 +257,9 @@ subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,lone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,lone,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -322,9 +267,6 @@ subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_shalo.f90 b/base/comm/psb_shalo.f90 index a0671d4d..366f3713 100644 --- a/base/comm/psb_shalo.f90 +++ b/base/comm/psb_shalo.f90 @@ -41,7 +41,6 @@ ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - real(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -52,36 +51,34 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data) +subroutine psb_shalo_vect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_shalo_vect use psi_mod implicit none type(psb_s_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_spk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_shalov' - info=psb_success_ + name = 'psb_shalo_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -124,44 +121,17 @@ subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data) if ((info == 0).and.(lldx= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(flag=imode, beta=szero, y=x%v, desc_a=desc_a, & - & data=data_, info=info, work=iwork) + call psi_swapdata(imode, szero, x%v, desc_a, info, data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(flag=imode, beta=sone, y=x%v, desc_a=desc_a, & - & info=info, work=iwork) + call psi_swaptran(imode, sone, x%v, desc_a, info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -174,9 +144,6 @@ subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -196,7 +163,6 @@ end subroutine psb_shalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - real(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -207,36 +173,34 @@ end subroutine psb_shalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_shalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_shalo_multivect use psi_mod implicit none - type(psb_s_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_s_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_spk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_shalov' - info=psb_success_ + name = 'psb_shalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -285,37 +249,11 @@ subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(flag=imode, beta=szero, y=x%v, desc_a=desc_a, info=info, data=data_, work=iwork) + call psi_swapdata(imode, szero, x%v, desc_a, info, data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(flag=imode, beta=sone, y=x%v, desc_a=desc_a, info=info, work=iwork) + call psi_swaptran(imode, sone, x%v, desc_a, info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -328,9 +266,6 @@ subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_shalo_a.f90 b/base/comm/psb_shalo_a.f90 index 23cc464d..21ec8e81 100644 --- a/base/comm/psb_shalo_a.f90 +++ b/base/comm/psb_shalo_a.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -! File: psb_shalo.f90 +! File: psb_shalo_a.f90 ! ! Subroutine: psb_shalom ! This subroutine performs the exchange of the halo elements in a @@ -52,7 +52,7 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_shalom(x,desc_a,info,jx,ik,work,tran,mode,data) +subroutine psb_shalom(x,desc_a,info,jx,ik,work,tran,mode,data) use psb_base_mod, psb_protect_name => psb_shalom use psi_mod implicit none diff --git a/base/comm/psb_sovrl.f90 b/base/comm/psb_sovrl.f90 index b164b967..9ca9c6b4 100644 --- a/base/comm/psb_sovrl.f90 +++ b/base/comm/psb_sovrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - real(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,35 +62,33 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_sovrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_sovrl_vect use psi_mod implicit none - type(psb_s_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_s_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_spk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_sovrlv' - info=psb_success_ + name = 'psb_sovrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -137,31 +134,9 @@ subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(flag=mode_, beta=sone, y=x%v, desc_a=desc_a, info=info, data=psb_comm_ovr_, work=iwork) + call psi_swapdata(mode_, sone, x%v, desc_a, info, data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -169,9 +144,6 @@ subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -191,7 +163,6 @@ end subroutine psb_sovrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - real(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -212,35 +183,33 @@ end subroutine psb_sovrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_sovrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_sovrl_multivect use psi_mod implicit none type(psb_s_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - real(psb_spk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_sovrlv' - info=psb_success_ + name = 'psb_sovrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -288,32 +257,9 @@ subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,sone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_, sone, x%v, desc_a, info, data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -321,9 +267,6 @@ subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_zhalo.f90 b/base/comm/psb_zhalo.f90 index 2bf1aef2..b3e37d02 100644 --- a/base/comm/psb_zhalo.f90 +++ b/base/comm/psb_zhalo.f90 @@ -41,7 +41,6 @@ ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -52,36 +51,34 @@ ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data) +subroutine psb_zhalo_vect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_zhalo_vect use psi_mod implicit none type(psb_z_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_dpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_zhalov' - info=psb_success_ + name = 'psb_zhalo_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -129,39 +126,11 @@ subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,zzero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,zzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,zone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,zone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -174,9 +143,6 @@ subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return @@ -196,7 +162,6 @@ end subroutine psb_zhalo_vect ! info - integer. Return code ! jx - integer(optional). The starting column of the global matrix. ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). Work area. ! tran - character(optional). Transpose exchange. ! mode - integer(optional). Communication mode (see Swapdata) ! data - integer Which index list in desc_a should be used @@ -207,36 +172,34 @@ end subroutine psb_zhalo_vect ! psb_comm_mov_ use ovr_mst_idx ! ! -subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data) +subroutine psb_zhalo_multivect(x,desc_a,info,tran,mode,data) use psb_base_mod, psb_protect_name => psb_zhalo_multivect use psi_mod implicit none - type(psb_z_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_z_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, iix, jjx, & - & nrow, ncol, lldx, imode, liwork,data_ + & nrow, ncol, lldx, imode, data_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_dpk_),pointer :: iwork(:) character :: tran_ character(len=20) :: name, ch_err logical :: aliw - name='psb_zhalov' - info=psb_success_ + name = 'psb_zhalo_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -285,39 +248,11 @@ subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - liwork=nrow - if (present(work)) then - if(size(work) >= liwork) then - iwork => work - aliw=.false. - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - else - aliw=.true. - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - end if - ! exchange halo elements if(tran_ == 'N') then - call psi_swapdata(imode,zzero,x%v,& - & desc_a,iwork,info,data=data_) + call psi_swapdata(imode,zzero,x%v,desc_a,info,data=data_) else if((tran_ == 'T').or.(tran_ == 'C')) then - call psi_swaptran(imode,zone,x%v,& - & desc_a,iwork,info) + call psi_swaptran(imode,zone,x%v,desc_a,info) else info = psb_err_internal_error_ call psb_errpush(info,name,a_err='invalid tran') @@ -330,9 +265,6 @@ subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/comm/psb_zovrl.f90 b/base/comm/psb_zovrl.f90 index 02a2a73d..60a8a76a 100644 --- a/base/comm/psb_zovrl.f90 +++ b/base/comm/psb_zovrl.f90 @@ -42,7 +42,6 @@ ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -63,29 +62,27 @@ ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode) +subroutine psb_zovrl_vect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_zovrl_vect use psi_mod implicit none - type(psb_z_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_z_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_dpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_zovrlv' - info=psb_success_ + name = 'psb_zovrl_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -137,41 +134,15 @@ subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,zone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,zone,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Inner updates') goto 9999 end if - - if (aliw) deallocate(iwork) - nullify(iwork) call psb_erractionrestore(err_act) return @@ -192,7 +163,6 @@ end subroutine psb_zovrl_vect ! info - integer. Return code. ! jx - integer(optional). The starting column of the global matrix ! ik - integer(optional). The number of columns to gather. -! work - complex(optional). A work area. ! update - integer(optional). Type of update: ! psb_none_ do nothing ! psb_sum_ sum of overlaps @@ -213,35 +183,33 @@ end subroutine psb_zovrl_vect ! - if (swap_recv): use psb_rcv (completing a ! previous call with swap_send) ! -subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode) +subroutine psb_zovrl_multivect(x,desc_a,info,update,mode) use psb_base_mod, psb_protect_name => psb_zovrl_multivect use psi_mod implicit none - type(psb_z_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional, target, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_z_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode ! locals type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me, err_act, k, iix, jjx, & - & nrow, ncol, ldx, liwork, data_, update_, mode_ + & nrow, ncol, ldx, data_, update_, mode_ integer(psb_lpk_) :: m, n, ix, ijx - complex(psb_dpk_),pointer :: iwork(:) logical :: do_swap character(len=20) :: name, ch_err logical :: aliw - name='psb_zovrlv' - info=psb_success_ + name = 'psb_zovrl_multivect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() ! check on blacs grid call psb_info(ctxt, me, np) @@ -289,32 +257,9 @@ subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - ! check for presence/size of a work area - liwork=ncol - if (present(work)) then - if(size(work) >= liwork) then - aliw=.false. - else - aliw=.true. - end if - else - aliw=.true. - end if - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - else - iwork => work - end if - ! exchange overlap elements if (do_swap) then - call psi_swapdata(mode_,zone,x%v,& - & desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(mode_,zone,x%v,desc_a,info,data=psb_comm_ovr_) end if if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,update_,info) if (info /= psb_success_) then @@ -322,9 +267,6 @@ subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode) goto 9999 end if - if (aliw) deallocate(iwork) - nullify(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/modules/comm/psb_c_comm_mod.f90 b/base/modules/comm/psb_c_comm_mod.f90 index 1bd46197..44126faa 100644 --- a/base/modules/comm/psb_c_comm_mod.f90 +++ b/base/modules/comm/psb_c_comm_mod.f90 @@ -37,52 +37,48 @@ module psb_c_comm_mod use psb_c_multivect_mod, only : psb_c_multivect_type, psb_c_base_multivect_type interface psb_ovrl - subroutine psb_covrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_covrl_vect(x,desc_a,info,update,mode) import implicit none type(psb_c_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_covrl_vect - subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_covrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_c_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_c_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_covrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_chalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_c_vect_type), intent(inout) :: x + type(psb_c_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_chalo_vect - subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_chalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_c_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_c_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_chalo_multivect end interface psb_halo interface psb_scatter - subroutine psb_cscatter_vect(globx, locx, desc_a, info, root, mold) + subroutine psb_cscatter_vect(globx, locx, desc_a, info, root, mold) import implicit none type(psb_c_vect_type), intent(inout) :: locx diff --git a/base/modules/comm/psb_c_linmap_mod.f90 b/base/modules/comm/psb_c_linmap_mod.f90 index 07257d88..4ccc8d55 100644 --- a/base/modules/comm/psb_c_linmap_mod.f90 +++ b/base/modules/comm/psb_c_linmap_mod.f90 @@ -73,7 +73,7 @@ module psb_c_linmap_mod integer(psb_ipk_), intent(out) :: info complex(psb_spk_), optional :: work(:) end subroutine psb_c_map_U2V_a - subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_c_vect_mod, only : psb_c_vect_type import :: psb_ipk_, psb_spk_, psb_clinmap_type implicit none @@ -81,7 +81,6 @@ module psb_c_linmap_mod complex(psb_spk_), intent(in) :: alpha,beta type(psb_c_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional :: work(:) type(psb_c_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_c_map_U2V_v end interface @@ -97,7 +96,7 @@ module psb_c_linmap_mod integer(psb_ipk_), intent(out) :: info complex(psb_spk_), optional :: work(:) end subroutine psb_c_map_V2U_a - subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_c_vect_mod, only : psb_c_vect_type import :: psb_ipk_, psb_spk_, psb_clinmap_type implicit none @@ -105,7 +104,6 @@ module psb_c_linmap_mod complex(psb_spk_), intent(in) :: alpha,beta type(psb_c_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional :: work(:) type(psb_c_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_c_map_V2U_v end interface diff --git a/base/modules/comm/psb_d_comm_a_mod.f90 b/base/modules/comm/psb_d_comm_a_mod.f90 index 5fb410f2..0190225f 100644 --- a/base/modules/comm/psb_d_comm_a_mod.f90 +++ b/base/modules/comm/psb_d_comm_a_mod.f90 @@ -36,11 +36,11 @@ module psb_d_comm_a_mod subroutine psb_dovrlm(x,desc_a,info,jx,ik,work,update,mode) import implicit none - real(psb_dpk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + real(psb_dpk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode + integer(psb_ipk_), intent(in), optional :: update,jx,ik,mode end subroutine psb_dovrlm subroutine psb_dovrlv(x,desc_a,info,work,update,mode) import @@ -57,22 +57,22 @@ module psb_d_comm_a_mod subroutine psb_dhalom(x,desc_a,info,jx,ik,work,tran,mode,data) import implicit none - real(psb_dpk_), intent(inout), target :: x(:,:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + real(psb_dpk_), intent(inout), target :: x(:,:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data - character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,jx,ik,data + character, intent(in), optional :: tran end subroutine psb_dhalom subroutine psb_dhalov(x,desc_a,info,work,tran,mode,data) import implicit none - real(psb_dpk_), intent(inout) :: x(:) - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info + real(psb_dpk_), intent(inout) :: x(:) + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_dhalov end interface psb_halo diff --git a/base/modules/comm/psb_d_comm_mod.f90 b/base/modules/comm/psb_d_comm_mod.f90 index 013c76e2..90cbfbc9 100644 --- a/base/modules/comm/psb_d_comm_mod.f90 +++ b/base/modules/comm/psb_d_comm_mod.f90 @@ -37,46 +37,42 @@ module psb_d_comm_mod use psb_d_multivect_mod, only : psb_d_multivect_type, psb_d_base_multivect_type interface psb_ovrl - subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_dovrl_vect(x,desc_a,info,update,mode) import implicit none - type(psb_d_vect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_d_vect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_dovrl_vect - subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_dovrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_d_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_d_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_dovrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_dhalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_d_vect_type), intent(inout) :: x + type(psb_d_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,data end subroutine psb_dhalo_vect - subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_dhalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_d_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_d_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + character, intent(in), optional :: tran + integer(psb_ipk_), intent(in), optional :: mode,data end subroutine psb_dhalo_multivect end interface psb_halo diff --git a/base/modules/comm/psb_d_linmap_mod.f90 b/base/modules/comm/psb_d_linmap_mod.f90 index 744cad2d..2bef33fd 100644 --- a/base/modules/comm/psb_d_linmap_mod.f90 +++ b/base/modules/comm/psb_d_linmap_mod.f90 @@ -73,7 +73,7 @@ module psb_d_linmap_mod integer(psb_ipk_), intent(out) :: info real(psb_dpk_), optional :: work(:) end subroutine psb_d_map_U2V_a - subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_d_vect_mod, only : psb_d_vect_type import :: psb_ipk_, psb_dpk_, psb_dlinmap_type implicit none @@ -81,7 +81,6 @@ module psb_d_linmap_mod real(psb_dpk_), intent(in) :: alpha,beta type(psb_d_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional :: work(:) type(psb_d_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_d_map_U2V_v end interface @@ -97,7 +96,7 @@ module psb_d_linmap_mod integer(psb_ipk_), intent(out) :: info real(psb_dpk_), optional :: work(:) end subroutine psb_d_map_V2U_a - subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_d_vect_mod, only : psb_d_vect_type import :: psb_ipk_, psb_dpk_, psb_dlinmap_type implicit none @@ -105,7 +104,6 @@ module psb_d_linmap_mod real(psb_dpk_), intent(in) :: alpha,beta type(psb_d_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional :: work(:) type(psb_d_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_d_map_V2U_v end interface diff --git a/base/modules/comm/psb_i_comm_mod.f90 b/base/modules/comm/psb_i_comm_mod.f90 index 25d761ba..a6f24327 100644 --- a/base/modules/comm/psb_i_comm_mod.f90 +++ b/base/modules/comm/psb_i_comm_mod.f90 @@ -36,46 +36,42 @@ module psb_i_comm_mod use psb_i_multivect_mod, only : psb_i_multivect_type, psb_i_base_multivect_type interface psb_ovrl - subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_iovrl_vect(x,desc_a,info,update,mode) import implicit none type(psb_i_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_iovrl_vect - subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_iovrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_i_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_i_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_iovrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_ihalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_i_vect_type), intent(inout) :: x + type(psb_i_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_ihalo_vect - subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_ihalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_i_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_ipk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_i_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_ihalo_multivect end interface psb_halo diff --git a/base/modules/comm/psb_l_comm_mod.f90 b/base/modules/comm/psb_l_comm_mod.f90 index 2bba923d..0f55c7b1 100644 --- a/base/modules/comm/psb_l_comm_mod.f90 +++ b/base/modules/comm/psb_l_comm_mod.f90 @@ -36,46 +36,42 @@ module psb_l_comm_mod use psb_l_multivect_mod, only : psb_l_multivect_type, psb_l_base_multivect_type interface psb_ovrl - subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_lovrl_vect(x,desc_a,info,update,mode) import implicit none type(psb_l_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_lovrl_vect - subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_lovrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_l_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_l_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_lovrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_lhalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_l_vect_type), intent(inout) :: x + type(psb_l_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_lhalo_vect - subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_lhalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_l_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - integer(psb_lpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_l_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_lhalo_multivect end interface psb_halo diff --git a/base/modules/comm/psb_s_comm_mod.f90 b/base/modules/comm/psb_s_comm_mod.f90 index a202b5b6..3430af4c 100644 --- a/base/modules/comm/psb_s_comm_mod.f90 +++ b/base/modules/comm/psb_s_comm_mod.f90 @@ -37,46 +37,42 @@ module psb_s_comm_mod use psb_s_multivect_mod, only : psb_s_multivect_type, psb_s_base_multivect_type interface psb_ovrl - subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_sovrl_vect(x,desc_a,info,update,mode) import implicit none type(psb_s_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_sovrl_vect - subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_sovrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_s_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_s_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_sovrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_shalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_s_vect_type), intent(inout) :: x + type(psb_s_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_shalo_vect - subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_shalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_s_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - real(psb_spk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_s_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_shalo_multivect end interface psb_halo diff --git a/base/modules/comm/psb_s_linmap_mod.f90 b/base/modules/comm/psb_s_linmap_mod.f90 index 1ded2c59..7e248df8 100644 --- a/base/modules/comm/psb_s_linmap_mod.f90 +++ b/base/modules/comm/psb_s_linmap_mod.f90 @@ -73,7 +73,7 @@ module psb_s_linmap_mod integer(psb_ipk_), intent(out) :: info real(psb_spk_), optional :: work(:) end subroutine psb_s_map_U2V_a - subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_s_vect_mod, only : psb_s_vect_type import :: psb_ipk_, psb_spk_, psb_slinmap_type implicit none @@ -81,7 +81,6 @@ module psb_s_linmap_mod real(psb_spk_), intent(in) :: alpha,beta type(psb_s_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional :: work(:) type(psb_s_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_s_map_U2V_v end interface @@ -97,7 +96,7 @@ module psb_s_linmap_mod integer(psb_ipk_), intent(out) :: info real(psb_spk_), optional :: work(:) end subroutine psb_s_map_V2U_a - subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_s_vect_mod, only : psb_s_vect_type import :: psb_ipk_, psb_spk_, psb_slinmap_type implicit none @@ -105,7 +104,6 @@ module psb_s_linmap_mod real(psb_spk_), intent(in) :: alpha,beta type(psb_s_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional :: work(:) type(psb_s_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_s_map_V2U_v end interface diff --git a/base/modules/comm/psb_z_comm_mod.f90 b/base/modules/comm/psb_z_comm_mod.f90 index 304cdfb9..cac47f45 100644 --- a/base/modules/comm/psb_z_comm_mod.f90 +++ b/base/modules/comm/psb_z_comm_mod.f90 @@ -37,46 +37,42 @@ module psb_z_comm_mod use psb_z_multivect_mod, only : psb_z_multivect_type, psb_z_base_multivect_type interface psb_ovrl - subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode) + subroutine psb_zovrl_vect(x,desc_a,info,update,mode) import implicit none type(psb_z_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_zovrl_vect - subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode) + subroutine psb_zovrl_multivect(x,desc_a,info,update,mode) import implicit none - type(psb_z_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), intent(inout), optional, target :: work(:) - integer(psb_ipk_), intent(in), optional :: update,mode + type(psb_z_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: update,mode end subroutine psb_zovrl_multivect end interface psb_ovrl interface psb_halo - subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data) + subroutine psb_zhalo_vect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_z_vect_type), intent(inout) :: x + type(psb_z_vect_type), intent(inout) :: x type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data character, intent(in), optional :: tran end subroutine psb_zhalo_vect - subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data) + subroutine psb_zhalo_multivect(x,desc_a,info,tran,mode,data) import implicit none - type(psb_z_multivect_type), intent(inout) :: x - type(psb_desc_type), intent(in) :: desc_a - integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), target, optional, intent(inout) :: work(:) - integer(psb_ipk_), intent(in), optional :: mode,data - character, intent(in), optional :: tran + type(psb_z_multivect_type), intent(inout) :: x + type(psb_desc_type), intent(in) :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), intent(in), optional :: mode,data + character, intent(in), optional :: tran end subroutine psb_zhalo_multivect end interface psb_halo diff --git a/base/modules/comm/psb_z_linmap_mod.f90 b/base/modules/comm/psb_z_linmap_mod.f90 index 8fe61b0a..24ec0db0 100644 --- a/base/modules/comm/psb_z_linmap_mod.f90 +++ b/base/modules/comm/psb_z_linmap_mod.f90 @@ -73,7 +73,7 @@ module psb_z_linmap_mod integer(psb_ipk_), intent(out) :: info complex(psb_dpk_), optional :: work(:) end subroutine psb_z_map_U2V_a - subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_z_vect_mod, only : psb_z_vect_type import :: psb_ipk_, psb_dpk_, psb_zlinmap_type implicit none @@ -81,7 +81,6 @@ module psb_z_linmap_mod complex(psb_dpk_), intent(in) :: alpha,beta type(psb_z_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional :: work(:) type(psb_z_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_z_map_U2V_v end interface @@ -97,7 +96,7 @@ module psb_z_linmap_mod integer(psb_ipk_), intent(out) :: info complex(psb_dpk_), optional :: work(:) end subroutine psb_z_map_V2U_a - subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) + subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_z_vect_mod, only : psb_z_vect_type import :: psb_ipk_, psb_dpk_, psb_zlinmap_type implicit none @@ -105,7 +104,6 @@ module psb_z_linmap_mod complex(psb_dpk_), intent(in) :: alpha,beta type(psb_z_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional :: work(:) type(psb_z_vect_type), optional, target, intent(inout) :: vtx,vty end subroutine psb_z_map_V2U_v end interface diff --git a/base/modules/comm/psi_c_comm_v_mod.f90 b/base/modules/comm/psi_c_comm_v_mod.f90 index 9f7c8758..f6e7f3d0 100644 --- a/base/modules/comm/psi_c_comm_v_mod.f90 +++ b/base/modules/comm/psi_c_comm_v_mod.f90 @@ -36,43 +36,39 @@ module psi_c_comm_v_mod use psb_c_base_multivect_mod, only : psb_c_base_multivect_type interface psi_swapdata - module subroutine psi_cswapdata_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswapdata_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_cswapdata_vect - module subroutine psi_cswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswapdata_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_cswapdata_multivect module subroutine psi_cswap_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_cswap_vidx_vect module subroutine psi_cswap_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_cswap_vidx_multivect @@ -80,43 +76,39 @@ module psi_c_comm_v_mod interface psi_swaptran - module subroutine psi_cswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswaptran_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_cswaptran_vect - module subroutine psi_cswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_cswaptran_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_cswaptran_multivect module subroutine psi_ctran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ctran_vidx_vect module subroutine psi_ctran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_c_base_multivect_type) :: y complex(psb_spk_) :: beta - complex(psb_spk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ctran_vidx_multivect diff --git a/base/modules/comm/psi_d_comm_a_mod.f90 b/base/modules/comm/psi_d_comm_a_mod.f90 index 46f02142..ca1aa947 100644 --- a/base/modules/comm/psi_d_comm_a_mod.f90 +++ b/base/modules/comm/psi_d_comm_a_mod.f90 @@ -35,40 +35,44 @@ module psi_d_comm_a_mod interface psi_swapdata module subroutine psi_dswapdatam(flag,n,beta,y,desc_a,work,info,data) - integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:,:) + type(psb_desc_type), target :: desc_a + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_dswapdatam module subroutine psi_dswapdatav(flag,beta,y,desc_a,work,info,data) integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:) + type(psb_desc_type), target :: desc_a + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_dswapdatav module subroutine psi_dswapidxm(ctxt,flag,n,beta,y,idx,& & totxch,totsnd,totrcv,work,info) type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:,:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta - real(psb_dpk_),target :: work(:) - integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_dswapidxm module subroutine psi_dswapidxv(ctxt,flag,beta,y,idx,& & totxch,totsnd,totrcv,work,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_),target :: work(:) - integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_dswapidxv end interface psi_swapdata @@ -77,38 +81,42 @@ module psi_d_comm_a_mod module subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_Mpk_), intent(in) :: n + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:,:) + type(psb_desc_type), target :: desc_a + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), optional :: data !! TODO: Is this used in the code? If not, remove it. end subroutine psi_dswaptranm module subroutine psi_dswaptranv(flag,beta,y,desc_a,work,info,data) integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:) + type(psb_desc_type), target :: desc_a + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data + integer(psb_ipk_), optional :: data !! TODO: Is this used in the code? If not, remove it. end subroutine psi_dswaptranv module subroutine psi_dtranidxm(ctxt,flag,n,beta,y,idx,& & totxch,totsnd,totrcv,work,info) type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_mpk_), intent(in) :: n integer(psb_ipk_), intent(in) :: flag + integer(psb_mpk_), intent(in) :: n + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:,:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:,:), beta - real(psb_dpk_),target :: work(:) - integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_dtranidxm module subroutine psi_dtranidxv(ctxt,flag,beta,y,idx,& & totxch,totsnd,totrcv,work,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_),intent(in) :: beta + real(psb_dpk_),intent(inout) :: y(:) + integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv + real(psb_dpk_),target :: work(:) integer(psb_ipk_), intent(out) :: info - real(psb_dpk_) :: y(:), beta - real(psb_dpk_),target :: work(:) - integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv end subroutine psi_dtranidxv end interface psi_swaptran diff --git a/base/modules/comm/psi_d_comm_v_mod.f90 b/base/modules/comm/psi_d_comm_v_mod.f90 index 40ba09f2..e22ed0f5 100644 --- a/base/modules/comm/psi_d_comm_v_mod.f90 +++ b/base/modules/comm/psi_d_comm_v_mod.f90 @@ -40,23 +40,21 @@ module psi_d_comm_v_mod ! Wrapper that calls different communications schemes depending on ! flag variable using communication buff obtained from desc_a%get_list_p ! --------------------------------------------------------------- - module subroutine psi_dswapdata_vect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_dpk_), optional, target :: work(:) + module subroutine psi_dswapdata_vect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_vect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_dswapdata_vect - module subroutine psi_dswapdata_multivect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_dpk_), optional, target :: work(:) + module subroutine psi_dswapdata_multivect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_multivect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_dswapdata_multivect end interface psi_swapdata @@ -65,23 +63,21 @@ module psi_d_comm_v_mod ! --------------------------------------------------------------- ! Upper call in order to populate idx using desc_a%get_list_p ! --------------------------------------------------------------- - module subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data + module subroutine psi_dswaptran_vect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_vect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_dswaptran_vect - module subroutine psi_dswaptran_multivect(flag,beta,y,desc_a,work,info,data) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_),target :: work(:) - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data + module subroutine psi_dswaptran_multivect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_dpk_), intent(in) :: beta + class(psb_d_base_multivect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_dswaptran_multivect ! --------------------------------------------------------------- @@ -91,24 +87,22 @@ module psi_d_comm_v_mod ! flag variable ! --------------------------------------------------------------- module subroutine psi_dtran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info - class(psb_d_base_vect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) + class(psb_d_base_vect_type), intent(inout) :: y + real(psb_dpk_), intent(in) :: beta class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_dtran_vidx_vect module subroutine psi_dtran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info - class(psb_d_base_multivect_type) :: y - real(psb_dpk_) :: beta - real(psb_dpk_), target :: work(:) + class(psb_d_base_multivect_type), intent(inout) :: y + real(psb_dpk_), intent(in) :: beta class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_dtran_vidx_multivect diff --git a/base/modules/comm/psi_i_comm_v_mod.f90 b/base/modules/comm/psi_i_comm_v_mod.f90 index 2bc8a0e9..6db43c15 100644 --- a/base/modules/comm/psi_i_comm_v_mod.f90 +++ b/base/modules/comm/psi_i_comm_v_mod.f90 @@ -37,43 +37,39 @@ module psi_i_comm_v_mod use psb_i_base_multivect_mod, only : psb_i_base_multivect_type interface psi_swapdata - module subroutine psi_iswapdata_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswapdata_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswapdata_vect - module subroutine psi_iswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswapdata_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswapdata_multivect module subroutine psi_iswap_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_iswap_vidx_vect module subroutine psi_iswap_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_iswap_vidx_multivect @@ -81,43 +77,39 @@ module psi_i_comm_v_mod interface psi_swaptran - module subroutine psi_iswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswaptran_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswaptran_vect - module subroutine psi_iswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_iswaptran_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_iswaptran_multivect module subroutine psi_itran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_vect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_itran_vidx_vect module subroutine psi_itran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_i_base_multivect_type) :: y integer(psb_ipk_) :: beta - integer(psb_ipk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_itran_vidx_multivect diff --git a/base/modules/comm/psi_l_comm_v_mod.f90 b/base/modules/comm/psi_l_comm_v_mod.f90 index 92768d86..3d30ba41 100644 --- a/base/modules/comm/psi_l_comm_v_mod.f90 +++ b/base/modules/comm/psi_l_comm_v_mod.f90 @@ -38,43 +38,39 @@ module psi_l_comm_v_mod use psb_l_base_multivect_mod, only : psb_l_base_multivect_type interface psi_swapdata - module subroutine psi_lswapdata_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswapdata_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_lswapdata_vect - module subroutine psi_lswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswapdata_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_lswapdata_multivect module subroutine psi_lswap_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_lswap_vidx_vect module subroutine psi_lswap_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_lswap_vidx_multivect @@ -82,43 +78,39 @@ module psi_l_comm_v_mod interface psi_swaptran - module subroutine psi_lswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswaptran_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_lswaptran_vect - module subroutine psi_lswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_lswaptran_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_lswaptran_multivect module subroutine psi_ltran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_vect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ltran_vidx_vect module subroutine psi_ltran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_l_base_multivect_type) :: y integer(psb_lpk_) :: beta - integer(psb_lpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ltran_vidx_multivect diff --git a/base/modules/comm/psi_s_comm_v_mod.f90 b/base/modules/comm/psi_s_comm_v_mod.f90 index d20c5ca3..7becf153 100644 --- a/base/modules/comm/psi_s_comm_v_mod.f90 +++ b/base/modules/comm/psi_s_comm_v_mod.f90 @@ -36,68 +36,62 @@ module psi_s_comm_v_mod use psb_s_base_multivect_mod, only : psb_s_base_multivect_type interface psi_swapdata - module subroutine psi_sswapdata_vect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_vect_type) :: y - real(psb_spk_), intent(in) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_spk_),target, optional :: work(:) + module subroutine psi_sswapdata_vect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_spk_), intent(in) :: beta + class(psb_s_base_vect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_sswapdata_vect - module subroutine psi_sswapdata_multivect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_multivect_type) :: y - real(psb_spk_), intent(in) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_spk_),target, optional :: work(:) + module subroutine psi_sswapdata_multivect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + real(psb_spk_), intent(in) :: beta + class(psb_s_base_multivect_type), intent(inout) :: y + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_sswapdata_multivect end interface psi_swapdata interface psi_swaptran - module subroutine psi_sswaptran_vect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_vect_type) :: y - real(psb_spk_), intent(in) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_spk_),target, optional :: work(:) + module subroutine psi_sswaptran_vect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + integer(psb_ipk_), intent(out) :: info + class(psb_s_base_vect_type), intent(inout) :: y + real(psb_spk_), intent(in) :: beta + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), optional :: data end subroutine psi_sswaptran_vect - module subroutine psi_sswaptran_multivect(flag,beta,y,desc_a,info,data,work) - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_multivect_type) :: y - real(psb_spk_), intent(in) :: beta - type(psb_desc_type), target :: desc_a - integer(psb_ipk_), optional :: data - real(psb_spk_),target, optional :: work(:) + module subroutine psi_sswaptran_multivect(flag,beta,y,desc_a,info,data) + integer(psb_ipk_), intent(in) :: flag + class(psb_s_base_multivect_type), intent(inout) :: y + real(psb_spk_), intent(in) :: beta + type(psb_desc_type), target :: desc_a + integer(psb_ipk_), intent(out) :: info + integer(psb_ipk_), optional :: data end subroutine psi_sswaptran_multivect module subroutine psi_stran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_vect_type) :: y - real(psb_spk_), intent(in) :: beta - real(psb_spk_), target, optional :: work(:) - class(psb_i_base_vect_type), intent(inout) :: idx - integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + & totxch,totsnd,totrcv,info) + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + real(psb_spk_), intent(in) :: beta + class(psb_s_base_vect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: idx + integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + integer(psb_ipk_), intent(out) :: info end subroutine psi_stran_vidx_vect module subroutine psi_stran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) - type(psb_ctxt_type), intent(in) :: ctxt - integer(psb_ipk_), intent(in) :: flag - integer(psb_ipk_), intent(out) :: info - class(psb_s_base_multivect_type) :: y - real(psb_spk_), intent(in) :: beta - real(psb_spk_), target, optional :: work(:) - class(psb_i_base_vect_type), intent(inout) :: idx - integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + & totxch,totsnd,totrcv,info) + type(psb_ctxt_type), intent(in) :: ctxt + integer(psb_ipk_), intent(in) :: flag + real(psb_spk_), intent(in) :: beta + class(psb_s_base_multivect_type), intent(inout) :: y + class(psb_i_base_vect_type), intent(inout) :: idx + integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv + integer(psb_ipk_), intent(out) :: info end subroutine psi_stran_vidx_multivect end interface psi_swaptran diff --git a/base/modules/comm/psi_z_comm_v_mod.f90 b/base/modules/comm/psi_z_comm_v_mod.f90 index 8c749f60..2421c59d 100644 --- a/base/modules/comm/psi_z_comm_v_mod.f90 +++ b/base/modules/comm/psi_z_comm_v_mod.f90 @@ -36,43 +36,39 @@ module psi_z_comm_v_mod use psb_z_base_multivect_mod, only : psb_z_base_multivect_type interface psi_swapdata - module subroutine psi_zswapdata_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_zswapdata_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_vect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_zswapdata_vect - module subroutine psi_zswapdata_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_zswapdata_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_multivect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_zswapdata_multivect module subroutine psi_zswap_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_vect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_zswap_vidx_vect module subroutine psi_zswap_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_multivect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_zswap_vidx_multivect @@ -80,43 +76,39 @@ module psi_z_comm_v_mod interface psi_swaptran - module subroutine psi_zswaptran_vect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_zswaptran_vect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_vect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_zswaptran_vect - module subroutine psi_zswaptran_multivect(flag,beta,y,desc_a,work,info,data) + module subroutine psi_zswaptran_multivect(flag,beta,y,desc_a,info,data) integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_multivect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_),target :: work(:) type(psb_desc_type), target :: desc_a integer(psb_ipk_), optional :: data end subroutine psi_zswaptran_multivect module subroutine psi_ztran_vidx_vect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_vect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ztran_vidx_vect module subroutine psi_ztran_vidx_multivect(ctxt,flag,beta,y,idx,& - & totxch,totsnd,totrcv,work,info) + & totxch,totsnd,totrcv,info) type(psb_ctxt_type), intent(in) :: ctxt integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(out) :: info class(psb_z_base_multivect_type) :: y complex(psb_dpk_) :: beta - complex(psb_dpk_), target :: work(:) class(psb_i_base_vect_type), intent(inout) :: idx integer(psb_ipk_), intent(in) :: totxch,totsnd, totrcv end subroutine psi_ztran_vidx_multivect diff --git a/base/modules/psblas/psb_c_psblas_mod.F90 b/base/modules/psblas/psb_c_psblas_mod.F90 index 130159bc..e77a9325 100644 --- a/base/modules/psblas/psb_c_psblas_mod.F90 +++ b/base/modules/psblas/psb_c_psblas_mod.F90 @@ -421,18 +421,17 @@ module psb_c_psblas_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_cspmv subroutine psb_cspmv_vect(alpha, a, x, beta, y,& - & desc_a, info, trans, work,doswap) + & desc_a, info, trans,doswap) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_vect_type, psb_cspmat_type - type(psb_cspmat_type), intent(in) :: a - type(psb_c_vect_type), intent(inout) :: x - type(psb_c_vect_type), intent(inout) :: y - complex(psb_spk_), intent(in) :: alpha, beta - type(psb_desc_type), intent(in) :: desc_a - character, optional, intent(in) :: trans - complex(psb_spk_), optional, intent(inout),target :: work(:) - logical, optional, intent(in) :: doswap - integer(psb_ipk_), intent(out) :: info + type(psb_cspmat_type), intent(in) :: a + type(psb_c_vect_type), intent(inout) :: x + type(psb_c_vect_type), intent(inout) :: y + complex(psb_spk_), intent(in) :: alpha, beta + type(psb_desc_type), intent(in) :: desc_a + character, optional, intent(in) :: trans + logical, optional, intent(in) :: doswap + integer(psb_ipk_), intent(out) :: info end subroutine psb_cspmv_vect end interface @@ -472,7 +471,7 @@ module psb_c_psblas_mod end subroutine psb_cspsv subroutine psb_cspsv_vect(alpha, t, x, beta, y,& & desc_a, info, trans, scale, choice,& - & diag, work) + & diag) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_c_vect_type, psb_cspmat_type type(psb_cspmat_type), intent(inout) :: t @@ -483,7 +482,6 @@ module psb_c_psblas_mod character, optional, intent(in) :: trans, scale integer(psb_ipk_), optional, intent(in) :: choice type(psb_c_vect_type), intent(inout), optional :: diag - complex(psb_spk_), optional, intent(inout), target :: work(:) integer(psb_ipk_), intent(out) :: info end subroutine psb_cspsv_vect end interface diff --git a/base/modules/psblas/psb_d_psblas_mod.F90 b/base/modules/psblas/psb_d_psblas_mod.F90 index afc3acaf..095c4603 100644 --- a/base/modules/psblas/psb_d_psblas_mod.F90 +++ b/base/modules/psblas/psb_d_psblas_mod.F90 @@ -432,7 +432,7 @@ module psb_d_psblas_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_dspmv subroutine psb_dspmv_vect(alpha, a, x, beta, y,& - & desc_a, info, trans, work,doswap) + & desc_a, info, trans,doswap) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_vect_type, psb_dspmat_type type(psb_dspmat_type), intent(in) :: a @@ -441,7 +441,6 @@ module psb_d_psblas_mod real(psb_dpk_), intent(in) :: alpha, beta type(psb_desc_type), intent(in) :: desc_a character, optional, intent(in) :: trans - real(psb_dpk_), optional, intent(inout),target :: work(:) logical, optional, intent(in) :: doswap integer(psb_ipk_), intent(out) :: info end subroutine psb_dspmv_vect @@ -483,7 +482,7 @@ module psb_d_psblas_mod end subroutine psb_dspsv subroutine psb_dspsv_vect(alpha, t, x, beta, y,& & desc_a, info, trans, scale, choice,& - & diag, work) + & diag) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_d_vect_type, psb_dspmat_type type(psb_dspmat_type), intent(inout) :: t @@ -494,7 +493,6 @@ module psb_d_psblas_mod character, optional, intent(in) :: trans, scale integer(psb_ipk_), optional, intent(in) :: choice type(psb_d_vect_type), intent(inout), optional :: diag - real(psb_dpk_), optional, intent(inout), target :: work(:) integer(psb_ipk_), intent(out) :: info end subroutine psb_dspsv_vect end interface diff --git a/base/modules/psblas/psb_s_psblas_mod.F90 b/base/modules/psblas/psb_s_psblas_mod.F90 index 6048d023..330775c9 100644 --- a/base/modules/psblas/psb_s_psblas_mod.F90 +++ b/base/modules/psblas/psb_s_psblas_mod.F90 @@ -432,7 +432,7 @@ module psb_s_psblas_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_sspmv subroutine psb_sspmv_vect(alpha, a, x, beta, y,& - & desc_a, info, trans, work,doswap) + & desc_a, info, trans,doswap) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_vect_type, psb_sspmat_type type(psb_sspmat_type), intent(in) :: a @@ -441,7 +441,6 @@ module psb_s_psblas_mod real(psb_spk_), intent(in) :: alpha, beta type(psb_desc_type), intent(in) :: desc_a character, optional, intent(in) :: trans - real(psb_spk_), optional, intent(inout),target :: work(:) logical, optional, intent(in) :: doswap integer(psb_ipk_), intent(out) :: info end subroutine psb_sspmv_vect @@ -483,7 +482,7 @@ module psb_s_psblas_mod end subroutine psb_sspsv subroutine psb_sspsv_vect(alpha, t, x, beta, y,& & desc_a, info, trans, scale, choice,& - & diag, work) + & diag) import :: psb_desc_type, psb_spk_, psb_ipk_, & & psb_s_vect_type, psb_sspmat_type type(psb_sspmat_type), intent(inout) :: t @@ -494,7 +493,6 @@ module psb_s_psblas_mod character, optional, intent(in) :: trans, scale integer(psb_ipk_), optional, intent(in) :: choice type(psb_s_vect_type), intent(inout), optional :: diag - real(psb_spk_), optional, intent(inout), target :: work(:) integer(psb_ipk_), intent(out) :: info end subroutine psb_sspsv_vect end interface diff --git a/base/modules/psblas/psb_z_psblas_mod.F90 b/base/modules/psblas/psb_z_psblas_mod.F90 index fd0cc300..e9d03f37 100644 --- a/base/modules/psblas/psb_z_psblas_mod.F90 +++ b/base/modules/psblas/psb_z_psblas_mod.F90 @@ -421,7 +421,7 @@ module psb_z_psblas_mod integer(psb_ipk_), intent(out) :: info end subroutine psb_zspmv subroutine psb_zspmv_vect(alpha, a, x, beta, y,& - & desc_a, info, trans, work,doswap) + & desc_a, info, trans,doswap) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_vect_type, psb_zspmat_type type(psb_zspmat_type), intent(in) :: a @@ -430,7 +430,6 @@ module psb_z_psblas_mod complex(psb_dpk_), intent(in) :: alpha, beta type(psb_desc_type), intent(in) :: desc_a character, optional, intent(in) :: trans - complex(psb_dpk_), optional, intent(inout),target :: work(:) logical, optional, intent(in) :: doswap integer(psb_ipk_), intent(out) :: info end subroutine psb_zspmv_vect @@ -472,7 +471,7 @@ module psb_z_psblas_mod end subroutine psb_zspsv subroutine psb_zspsv_vect(alpha, t, x, beta, y,& & desc_a, info, trans, scale, choice,& - & diag, work) + & diag) import :: psb_desc_type, psb_dpk_, psb_ipk_, & & psb_z_vect_type, psb_zspmat_type type(psb_zspmat_type), intent(inout) :: t @@ -483,7 +482,6 @@ module psb_z_psblas_mod character, optional, intent(in) :: trans, scale integer(psb_ipk_), optional, intent(in) :: choice type(psb_z_vect_type), intent(inout), optional :: diag - complex(psb_dpk_), optional, intent(inout), target :: work(:) integer(psb_ipk_), intent(out) :: info end subroutine psb_zspsv_vect end interface diff --git a/base/psblas/psb_cspmm.f90 b/base/psblas/psb_cspmm.f90 index 777ade06..540ddde3 100644 --- a/base/psblas/psb_cspmm.f90 +++ b/base/psblas/psb_cspmm.f90 @@ -51,11 +51,10 @@ ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code ! trans - character(optional). Whether A or A'. Default: 'N' -! work(:) - complex,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, work, doswap) +subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, doswap) use psb_base_mod, psb_protect_name => psb_cspmv_vect use psi_mod implicit none @@ -66,7 +65,6 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_cspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans logical, intent(in), optional :: doswap @@ -74,10 +72,10 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me,& & err_act, iix, jjx, iia, jja, nrow, ncol, lldx, lldy, & - & liwork, iiy, jjy, ib, ip, idx + & iiy, jjy, ib, ip, idx integer(psb_lpk_) :: ix, ijx, iy, ijy, m, n, ia, ja integer(psb_ipk_), parameter :: nb=4 - complex(psb_spk_), pointer :: iwork(:), xp(:), yp(:) + complex(psb_spk_), pointer :: xp(:), yp(:) complex(psb_spk_), allocatable :: xvsave(:) character :: trans_ character(len=20) :: name, ch_err @@ -87,8 +85,8 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_), save :: mv_phase1=-1, mv_phase2=-1, mv_phase3=-1, mv_phase4=-1 integer(psb_ipk_), save :: mv_phase11=-1, mv_phase12=-1 - name='psb_cspmv' - info=psb_success_ + name = 'psb_cspmv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -157,38 +155,12 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='Allocate' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' Allocated work ', info @@ -202,14 +174,12 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& !if (me==0) write(0,*) 'going for overlap ',a%ad%get_fmt(),' ',a%and%get_fmt() if (do_timings) call psb_barrier(ctxt) if (do_timings) call psb_tic(mv_phase1) - if (doswap_) call psi_swapdata(psb_swap_send_,& - & czero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_send_,czero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase1) if (do_timings) call psb_tic(mv_phase2) call a%ad%spmm(alpha,x%v,beta,y%v,info) if (do_timings) call psb_tic(mv_phase3) - if (doswap_) call psi_swapdata(psb_swap_recv_,& - & czero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_recv_,czero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase3) if (do_timings) call psb_tic(mv_phase4) call a%and%spmm(alpha,x%v,cone,y%v,info) @@ -224,8 +194,7 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& if (do_timings) call psb_tic(mv_phase11) if (doswap_) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & czero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),czero,x%v,desc_a,info,data=psb_comm_halo_) end if if (do_timings) call psb_toc(mv_phase11) if (do_timings) call psb_tic(mv_phase12) @@ -268,10 +237,8 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if if (doswap_) then - call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),& - & cone,y%v,desc_a,iwork,info) - if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & cone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),cone,y%v,desc_a,info) + if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),cone,y%v,desc_a,info,data=psb_comm_ovr_) if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' swaptran ', info @@ -285,18 +252,6 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if - if (aliw) deallocate(iwork,stat=info) - if (debug_level >= psb_debug_comp_) & - & write(debug_unit,*) me,' ',trim(name),' deallocat ',aliw, info - if(info /= psb_success_) then - info = psb_err_from_subroutine_ - ch_err='Deallocate iwork' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - nullify(iwork) - call psb_erractionrestore(err_act) if (debug_level >= psb_debug_comp_) then call psb_barrier(ctxt) @@ -340,7 +295,7 @@ end subroutine psb_cspmv_vect ! work(:) - complex,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,& & trans, k, jx, jy, work, doswap) use psb_base_mod, psb_protect_name => psb_cspmm use psi_mod @@ -371,8 +326,8 @@ subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,& logical :: aliw, doswap_ integer(psb_ipk_) :: debug_level, debug_unit - name='psb_cspmm' - info=psb_success_ + name = 'psb_cspmm' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -689,7 +644,7 @@ end subroutine psb_cspmm ! work(:) - complex,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_cspmv(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_cspmv(alpha,a,x,beta,y,desc_a,info,& & trans, work, doswap) use psb_base_mod, psb_protect_name => psb_cspmv use psi_mod diff --git a/base/psblas/psb_cspsm.f90 b/base/psblas/psb_cspsm.f90 index 9787b2d8..cd5dd841 100644 --- a/base/psblas/psb_cspsm.f90 +++ b/base/psblas/psb_cspsm.f90 @@ -64,10 +64,9 @@ ! the diagonal matrix D. ! choice - integer(optional). The kind of update to perform on overlap elements. ! d(:) - complex, optional Matrix for diagonal scaling. -! work(:) - complex, optional Working area. ! -subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, scale, choice, diag, work) +subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, scale, choice, diag) use psb_base_mod, psb_protect_name => psb_cspsv_vect use psi_mod implicit none @@ -79,7 +78,6 @@ subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info type(psb_c_vect_type), intent(inout), optional :: diag - complex(psb_spk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans, scale integer(psb_ipk_), intent(in), optional :: choice @@ -88,23 +86,23 @@ subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_) :: np, me, & & err_act, iix, jjx, ia, ja, iia, jja, lldx,lldy, choice_,& & ix, iy, ik, jx, jy, i, lld,& - & m, nrow, ncol, liwork, llwork, iiy, jjy, idx, ndm + & m, nrow, ncol, iiy, jjy, idx, ndm character :: lscale integer(psb_ipk_), parameter :: nb=4 - complex(psb_spk_),pointer :: iwork(:), xp(:), yp(:) + complex(psb_spk_),pointer :: xp(:), yp(:) character :: itrans character(len=20) :: name, ch_err logical :: aliw - name='psb_cspsv_vect' - info=psb_success_ + name = 'psb_cspsv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then @@ -159,40 +157,12 @@ subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - - iwork(1)=0.d0 - ! Perform local triangular system solve if (present(diag)) then call a%spsm(alpha,x,beta,y,info,scale=scale,d=diag,trans=trans) @@ -201,16 +171,14 @@ subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if if(info /= psb_success_) then info = psb_err_from_subroutine_ - ch_err='dcssm' + ch_err = 'dcssm' call psb_errpush(info,name,a_err=ch_err) goto 9999 end if ! update overlap elements if (choice_ > 0) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & cone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) - + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),cone,y%v,desc_a,info,data=psb_comm_ovr_) if (info == psb_success_) call psi_ovrl_upd(y%v,desc_a,choice_,info) if (info /= psb_success_) then @@ -219,8 +187,6 @@ subroutine psb_cspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if end if - if (aliw) deallocate(iwork) - call psb_erractionrestore(err_act) return @@ -271,7 +237,7 @@ end subroutine psb_cspsv_vect ! jy - integer(optional). The column offset for ( Y ). Default: 1 ! work(:) - complex, optional Working area. ! -subroutine psb_cspsm(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_cspsm(alpha,a,x,beta,y,desc_a,info,& & trans, scale, choice, diag, k, jx, jy, work) use psb_base_mod, psb_protect_name => psb_cspsm use psi_mod @@ -517,7 +483,7 @@ end subroutine psb_cspsm ! d(:) - complex, optional Matrix for diagonal scaling. ! work(:) - complex, optional Working area. ! -subroutine psb_cspsv(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_cspsv(alpha,a,x,beta,y,desc_a,info,& & trans, scale, choice, diag, work) use psb_base_mod, psb_protect_name => psb_cspsv use psi_mod diff --git a/base/psblas/psb_dspmm.f90 b/base/psblas/psb_dspmm.f90 index 6f2a8739..3ec5d0e0 100644 --- a/base/psblas/psb_dspmm.f90 +++ b/base/psblas/psb_dspmm.f90 @@ -51,11 +51,10 @@ ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code ! trans - character(optional). Whether A or A'. Default: 'N' -! work(:) - real,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, work, doswap) +subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, doswap) use psb_base_mod, psb_protect_name => psb_dspmv_vect use psi_mod implicit none @@ -66,7 +65,6 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_dspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans logical, intent(in), optional :: doswap @@ -74,10 +72,10 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me,& & err_act, iix, jjx, iia, jja, nrow, ncol, lldx, lldy, & - & liwork, iiy, jjy, ib, ip, idx + & iiy, jjy, ib, ip, idx integer(psb_lpk_) :: ix, ijx, iy, ijy, m, n, ia, ja integer(psb_ipk_), parameter :: nb=4 - real(psb_dpk_), pointer :: iwork(:), xp(:), yp(:) + real(psb_dpk_), pointer :: xp(:), yp(:) real(psb_dpk_), allocatable :: xvsave(:) character :: trans_ character(len=20) :: name, ch_err @@ -87,8 +85,8 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_), save :: mv_phase1=-1, mv_phase2=-1, mv_phase3=-1, mv_phase4=-1 integer(psb_ipk_), save :: mv_phase11=-1, mv_phase12=-1 - name='psb_dspmv' - info=psb_success_ + name = 'psb_dspmv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -96,7 +94,7 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then info = psb_err_context_error_ @@ -157,38 +155,12 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='Allocate' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' Allocated work ', info @@ -202,14 +174,12 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& !if (me==0) write(0,*) 'going for overlap ',a%ad%get_fmt(),' ',a%and%get_fmt() if (do_timings) call psb_barrier(ctxt) if (do_timings) call psb_tic(mv_phase1) - if (doswap_) call psi_swapdata(flag=psb_swap_send_, beta=dzero, y=x%v, desc_a=desc_a, & - & data=psb_comm_halo_, info=info, work=iwork) + if (doswap_) call psi_swapdata(psb_swap_send_, dzero, x%v, desc_a, info, data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase1) if (do_timings) call psb_tic(mv_phase2) call a%ad%spmm(alpha,x%v,beta,y%v,info) if (do_timings) call psb_tic(mv_phase3) - if (doswap_) call psi_swapdata(flag=psb_swap_recv_, beta=dzero, y=x%v, desc_a=desc_a, & - & data=psb_comm_halo_, info=info, work=iwork) + if (doswap_) call psi_swapdata(psb_swap_recv_, dzero, x%v, desc_a, info, data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase3) if (do_timings) call psb_tic(mv_phase4) call a%and%spmm(alpha,x%v,done,y%v,info) @@ -224,8 +194,7 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& if (do_timings) call psb_tic(mv_phase11) if (doswap_) then - call psi_swapdata(flag=ior(psb_swap_send_,psb_swap_recv_), beta=dzero, y=x%v, desc_a=desc_a, & - & data=psb_comm_halo_, info=info, work=iwork) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_), dzero, x%v, desc_a, info, data=psb_comm_halo_) end if if (do_timings) call psb_toc(mv_phase11) if (do_timings) call psb_tic(mv_phase12) @@ -267,10 +236,11 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& goto 9999 end if - if (doswap_) then - call psi_swaptran(flag=ior(psb_swap_send_,psb_swap_recv_), beta=done, y=y%v, desc_a=desc_a, info=info, work=iwork) - if (info == psb_success_) call psi_swapdata(flag=ior(psb_swap_send_,psb_swap_recv_), beta=done, y=y%v, desc_a=desc_a, & - & data=psb_comm_ovr_, info=info, work=iwork) + if (doswap_) then + call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_), done, y%v, desc_a, info) + if (info == psb_success_) then + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_), done, y%v, desc_a, info, data=psb_comm_ovr_) + end if if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' swaptran ', info @@ -284,18 +254,6 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if - if (aliw) deallocate(iwork,stat=info) - if (debug_level >= psb_debug_comp_) & - & write(debug_unit,*) me,' ',trim(name),' deallocat ',aliw, info - if(info /= psb_success_) then - info = psb_err_from_subroutine_ - ch_err='Deallocate iwork' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - nullify(iwork) - call psb_erractionrestore(err_act) if (debug_level >= psb_debug_comp_) then call psb_barrier(ctxt) @@ -339,7 +297,7 @@ end subroutine psb_dspmv_vect ! work(:) - real,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,& & trans, k, jx, jy, work, doswap) use psb_base_mod, psb_protect_name => psb_dspmm use psi_mod @@ -370,8 +328,8 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,& logical :: aliw, doswap_ integer(psb_ipk_) :: debug_level, debug_unit - name='psb_dspmm' - info=psb_success_ + name = 'psb_dspmm' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -506,9 +464,9 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,& if (doswap_.and.(np>1)) then ib1=min(nb,lik) xp => x(iix:lldx,jjx:jjx+ib1-1) - if (doswap_)& - & call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & ib1,dzero,xp,desc_a,iwork,info) + if (doswap_) & + & call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& + & ib1,dzero,xp,desc_a,iwork,info) blk: do i=1, lik, nb @@ -594,18 +552,18 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,& call psb_errpush(info,name,a_err=ch_err) goto 9999 end if + if (info == psb_success_) call psi_ovrl_restore(x,xvsave,desc_a,info) - if (doswap_) then - call psi_swapdata(flag=ior(psb_swap_send_,psb_swap_recv_), beta=dzero, & - & y=x(:,1:lik), desc_a=desc_a, data=psb_comm_halo_, info=info, work=iwork) - end if - call psi_swaptran(flag=ior(psb_swap_send_,psb_swap_recv_), beta=done, & - & y=y(:,1:ik), desc_a=desc_a, info=info, work=iwork) - if (info == psb_success_) then - call psi_swapdata(flag=ior(psb_swap_send_,psb_swap_recv_), beta=done, & - & y=y(:,1:ik), desc_a=desc_a, data=psb_comm_ovr_, info=info, work=iwork) - end if + + + if (doswap_)then + ik = lik ! This should not be an issue, we are expecting the values + ! to be small, within PSB_IPK + call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),& + & ik,done,y(:,1:ik),desc_a,iwork,info) + if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& + & ik,done,y(:,1:ik),desc_a,iwork,info,data=psb_comm_ovr_) if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' swaptran ', info @@ -691,7 +649,7 @@ end subroutine psb_dspmm ! work(:) - real,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,& & trans, work, doswap) use psb_base_mod, psb_protect_name => psb_dspmv use psi_mod @@ -721,8 +679,8 @@ subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,& logical :: aliw, doswap_ integer(psb_ipk_) :: debug_level, debug_unit - name='psb_dspmv' - info=psb_success_ + name = 'psb_dspmv' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 diff --git a/base/psblas/psb_dspsm.f90 b/base/psblas/psb_dspsm.f90 index e4010b01..317a3d7b 100644 --- a/base/psblas/psb_dspsm.f90 +++ b/base/psblas/psb_dspsm.f90 @@ -64,10 +64,9 @@ ! the diagonal matrix D. ! choice - integer(optional). The kind of update to perform on overlap elements. ! d(:) - real, optional Matrix for diagonal scaling. -! work(:) - real, optional Working area. ! -subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, scale, choice, diag, work) +subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, scale, choice, diag) use psb_base_mod, psb_protect_name => psb_dspsv_vect use psi_mod implicit none @@ -79,7 +78,6 @@ subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info type(psb_d_vect_type), intent(inout), optional :: diag - real(psb_dpk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans, scale integer(psb_ipk_), intent(in), optional :: choice @@ -88,23 +86,23 @@ subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_) :: np, me, & & err_act, iix, jjx, ia, ja, iia, jja, lldx,lldy, choice_,& & ix, iy, ik, jx, jy, i, lld,& - & m, nrow, ncol, liwork, llwork, iiy, jjy, idx, ndm + & m, nrow, ncol, iiy, jjy, idx, ndm character :: lscale integer(psb_ipk_), parameter :: nb=4 - real(psb_dpk_),pointer :: iwork(:), xp(:), yp(:) + real(psb_dpk_),pointer :: xp(:), yp(:) character :: itrans character(len=20) :: name, ch_err logical :: aliw - name='psb_dspsv_vect' - info=psb_success_ + name = 'psb_dspsv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then @@ -159,40 +157,12 @@ subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - - iwork(1)=0.d0 - ! Perform local triangular system solve if (present(diag)) then call a%spsm(alpha,x,beta,y,info,scale=scale,d=diag,trans=trans) @@ -201,15 +171,14 @@ subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if if(info /= psb_success_) then info = psb_err_from_subroutine_ - ch_err='dcssm' + ch_err = 'dcssm' call psb_errpush(info,name,a_err=ch_err) goto 9999 end if ! update overlap elements if (choice_ > 0) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & done,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),done,y%v,desc_a,info,data=psb_comm_ovr_) if (info == psb_success_) call psi_ovrl_upd(y%v,desc_a,choice_,info) @@ -219,8 +188,6 @@ subroutine psb_dspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if end if - if (aliw) deallocate(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/psblas/psb_sspmm.f90 b/base/psblas/psb_sspmm.f90 index 7f680934..e660c3e6 100644 --- a/base/psblas/psb_sspmm.f90 +++ b/base/psblas/psb_sspmm.f90 @@ -51,11 +51,10 @@ ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code ! trans - character(optional). Whether A or A'. Default: 'N' -! work(:) - real,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, work, doswap) +subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, doswap) use psb_base_mod, psb_protect_name => psb_sspmv_vect use psi_mod implicit none @@ -66,7 +65,6 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_sspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans logical, intent(in), optional :: doswap @@ -77,7 +75,7 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& & liwork, iiy, jjy, ib, ip, idx integer(psb_lpk_) :: ix, ijx, iy, ijy, m, n, ia, ja integer(psb_ipk_), parameter :: nb=4 - real(psb_spk_), pointer :: iwork(:), xp(:), yp(:) + real(psb_spk_), pointer :: xp(:), yp(:) real(psb_spk_), allocatable :: xvsave(:) character :: trans_ character(len=20) :: name, ch_err @@ -87,8 +85,8 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_), save :: mv_phase1=-1, mv_phase2=-1, mv_phase3=-1, mv_phase4=-1 integer(psb_ipk_), save :: mv_phase11=-1, mv_phase12=-1 - name='psb_sspmv' - info=psb_success_ + name = 'psb_sspmv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -96,7 +94,7 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then info = psb_err_context_error_ @@ -157,38 +155,12 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='Allocate' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' Allocated work ', info @@ -202,14 +174,12 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& !if (me==0) write(0,*) 'going for overlap ',a%ad%get_fmt(),' ',a%and%get_fmt() if (do_timings) call psb_barrier(ctxt) if (do_timings) call psb_tic(mv_phase1) - if (doswap_) call psi_swapdata(psb_swap_send_,& - & szero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_send_,szero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase1) if (do_timings) call psb_tic(mv_phase2) call a%ad%spmm(alpha,x%v,beta,y%v,info) if (do_timings) call psb_tic(mv_phase3) - if (doswap_) call psi_swapdata(psb_swap_recv_,& - & szero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_recv_,szero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase3) if (do_timings) call psb_tic(mv_phase4) call a%and%spmm(alpha,x%v,sone,y%v,info) @@ -224,8 +194,7 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& if (do_timings) call psb_tic(mv_phase11) if (doswap_) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & szero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),szero,x%v,desc_a,info,data=psb_comm_halo_) end if if (do_timings) call psb_toc(mv_phase11) if (do_timings) call psb_tic(mv_phase12) @@ -268,10 +237,8 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if if (doswap_) then - call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),& - & sone,y%v,desc_a,iwork,info) - if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & sone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),sone,y%v,desc_a,info) + if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),sone,y%v,desc_a,info,data=psb_comm_ovr_) if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' swaptran ', info @@ -285,18 +252,6 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if - if (aliw) deallocate(iwork,stat=info) - if (debug_level >= psb_debug_comp_) & - & write(debug_unit,*) me,' ',trim(name),' deallocat ',aliw, info - if(info /= psb_success_) then - info = psb_err_from_subroutine_ - ch_err='Deallocate iwork' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - nullify(iwork) - call psb_erractionrestore(err_act) if (debug_level >= psb_debug_comp_) then call psb_barrier(ctxt) diff --git a/base/psblas/psb_sspsm.f90 b/base/psblas/psb_sspsm.f90 index c354569b..0299cdfa 100644 --- a/base/psblas/psb_sspsm.f90 +++ b/base/psblas/psb_sspsm.f90 @@ -64,10 +64,9 @@ ! the diagonal matrix D. ! choice - integer(optional). The kind of update to perform on overlap elements. ! d(:) - real, optional Matrix for diagonal scaling. -! work(:) - real, optional Working area. ! -subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, scale, choice, diag, work) +subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, scale, choice, diag) use psb_base_mod, psb_protect_name => psb_sspsv_vect use psi_mod implicit none @@ -79,7 +78,6 @@ subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info type(psb_s_vect_type), intent(inout), optional :: diag - real(psb_spk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans, scale integer(psb_ipk_), intent(in), optional :: choice @@ -88,23 +86,23 @@ subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_) :: np, me, & & err_act, iix, jjx, ia, ja, iia, jja, lldx,lldy, choice_,& & ix, iy, ik, jx, jy, i, lld,& - & m, nrow, ncol, liwork, llwork, iiy, jjy, idx, ndm + & m, nrow, ncol, iiy, jjy, idx, ndm character :: lscale integer(psb_ipk_), parameter :: nb=4 - real(psb_spk_),pointer :: iwork(:), xp(:), yp(:) + real(psb_spk_),pointer :: xp(:), yp(:) character :: itrans character(len=20) :: name, ch_err logical :: aliw - name='psb_sspsv_vect' - info=psb_success_ + name = 'psb_sspsv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then @@ -165,34 +163,6 @@ subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& goto 9999 end if - iwork => null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - - iwork(1)=0.d0 - ! Perform local triangular system solve if (present(diag)) then call a%spsm(alpha,x,beta,y,info,scale=scale,d=diag,trans=trans) @@ -208,8 +178,7 @@ subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& ! update overlap elements if (choice_ > 0) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & sone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),sone,y%v,desc_a,info,data=psb_comm_ovr_) if (info == psb_success_) call psi_ovrl_upd(y%v,desc_a,choice_,info) @@ -219,8 +188,6 @@ subroutine psb_sspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if end if - if (aliw) deallocate(iwork) - call psb_erractionrestore(err_act) return @@ -271,7 +238,7 @@ end subroutine psb_sspsv_vect ! jy - integer(optional). The column offset for ( Y ). Default: 1 ! work(:) - real, optional Working area. ! -subroutine psb_sspsm(alpha,a,x,beta,y,desc_a,info,& +subroutine psb_sspsm(alpha,a,x,beta,y,desc_a,info,& & trans, scale, choice, diag, k, jx, jy, work) use psb_base_mod, psb_protect_name => psb_sspsm use psi_mod diff --git a/base/psblas/psb_zspmm.f90 b/base/psblas/psb_zspmm.f90 index b7fc5cc6..8055a7d0 100644 --- a/base/psblas/psb_zspmm.f90 +++ b/base/psblas/psb_zspmm.f90 @@ -51,11 +51,10 @@ ! desc_a - type(psb_desc_type). The communication descriptor. ! info - integer. Return code ! trans - character(optional). Whether A or A'. Default: 'N' -! work(:) - complex,(optional). Working area. ! doswap - logical(optional). Whether to performe halo updates. ! -subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, work, doswap) +subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, doswap) use psb_base_mod, psb_protect_name => psb_zspmv_vect use psi_mod implicit none @@ -66,7 +65,6 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_zspmat_type), intent(in) :: a type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans logical, intent(in), optional :: doswap @@ -77,7 +75,7 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& & liwork, iiy, jjy, ib, ip, idx integer(psb_lpk_) :: ix, ijx, iy, ijy, m, n, ia, ja integer(psb_ipk_), parameter :: nb=4 - complex(psb_dpk_), pointer :: iwork(:), xp(:), yp(:) + complex(psb_dpk_), pointer :: xp(:), yp(:) complex(psb_dpk_), allocatable :: xvsave(:) character :: trans_ character(len=20) :: name, ch_err @@ -87,8 +85,8 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_), save :: mv_phase1=-1, mv_phase2=-1, mv_phase3=-1, mv_phase4=-1 integer(psb_ipk_), save :: mv_phase11=-1, mv_phase12=-1 - name='psb_zspmv' - info=psb_success_ + name = 'psb_zspmv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then info = psb_err_internal_error_ ; goto 9999 @@ -96,7 +94,7 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then info = psb_err_context_error_ @@ -157,38 +155,12 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='Allocate' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' Allocated work ', info @@ -202,14 +174,12 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& !if (me==0) write(0,*) 'going for overlap ',a%ad%get_fmt(),' ',a%and%get_fmt() if (do_timings) call psb_barrier(ctxt) if (do_timings) call psb_tic(mv_phase1) - if (doswap_) call psi_swapdata(psb_swap_send_,& - & zzero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_send_,zzero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase1) if (do_timings) call psb_tic(mv_phase2) call a%ad%spmm(alpha,x%v,beta,y%v,info) if (do_timings) call psb_tic(mv_phase3) - if (doswap_) call psi_swapdata(psb_swap_recv_,& - & zzero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + if (doswap_) call psi_swapdata(psb_swap_recv_,zzero,x%v,desc_a,info,data=psb_comm_halo_) if (do_timings) call psb_toc(mv_phase3) if (do_timings) call psb_tic(mv_phase4) call a%and%spmm(alpha,x%v,zone,y%v,info) @@ -224,8 +194,7 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& if (do_timings) call psb_tic(mv_phase11) if (doswap_) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & zzero,x%v,desc_a,iwork,info,data=psb_comm_halo_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),zzero,x%v,desc_a,info,data=psb_comm_halo_) end if if (do_timings) call psb_toc(mv_phase11) if (do_timings) call psb_tic(mv_phase12) @@ -262,16 +231,14 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& if (info == psb_success_) call psi_ovrl_restore(x%v,xvsave,desc_a,info) if (info /= psb_success_) then info = psb_err_from_subroutine_ - ch_err='psb_csmm' + ch_err = 'psb_csmm' call psb_errpush(info,name,a_err=ch_err) goto 9999 end if if (doswap_) then - call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),& - & zone,y%v,desc_a,iwork,info) - if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & zone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swaptran(ior(psb_swap_send_,psb_swap_recv_),zone,y%v,desc_a,info) + if (info == psb_success_) call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),zone,y%v,desc_a,info,data=psb_comm_ovr_) if (debug_level >= psb_debug_comp_) & & write(debug_unit,*) me,' ',trim(name),' swaptran ', info @@ -285,18 +252,6 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& end if - if (aliw) deallocate(iwork,stat=info) - if (debug_level >= psb_debug_comp_) & - & write(debug_unit,*) me,' ',trim(name),' deallocat ',aliw, info - if(info /= psb_success_) then - info = psb_err_from_subroutine_ - ch_err='Deallocate iwork' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - - nullify(iwork) - call psb_erractionrestore(err_act) if (debug_level >= psb_debug_comp_) then call psb_barrier(ctxt) diff --git a/base/psblas/psb_zspsm.f90 b/base/psblas/psb_zspsm.f90 index 3cb06b02..d48ca3a4 100644 --- a/base/psblas/psb_zspsm.f90 +++ b/base/psblas/psb_zspsm.f90 @@ -64,10 +64,9 @@ ! the diagonal matrix D. ! choice - integer(optional). The kind of update to perform on overlap elements. ! d(:) - complex, optional Matrix for diagonal scaling. -! work(:) - complex, optional Working area. ! -subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& - & trans, scale, choice, diag, work) +subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& + & trans, scale, choice, diag) use psb_base_mod, psb_protect_name => psb_zspsv_vect use psi_mod implicit none @@ -79,7 +78,6 @@ subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& type(psb_desc_type), intent(in) :: desc_a integer(psb_ipk_), intent(out) :: info type(psb_z_vect_type), intent(inout), optional :: diag - complex(psb_dpk_), optional, target, intent(inout) :: work(:) character, intent(in), optional :: trans, scale integer(psb_ipk_), intent(in), optional :: choice @@ -88,23 +86,24 @@ subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& integer(psb_ipk_) :: np, me, & & err_act, iix, jjx, ia, ja, iia, jja, lldx,lldy, choice_,& & ix, iy, ik, jx, jy, i, lld,& - & m, nrow, ncol, liwork, llwork, iiy, jjy, idx, ndm + & m, nrow, ncol, iiy, jjy, idx, ndm character :: lscale integer(psb_ipk_), parameter :: nb=4 - complex(psb_dpk_),pointer :: iwork(:), xp(:), yp(:) + complex(psb_dpk_),pointer :: xp(:), yp(:) character :: itrans character(len=20) :: name, ch_err logical :: aliw - name='psb_zspsv_vect' - info=psb_success_ + name = 'psb_zspsv_vect' + info = psb_success_ call psb_erractionsave(err_act) if (psb_errstatus_fatal()) then - info = psb_err_internal_error_ ; goto 9999 + info = psb_err_internal_error_ + goto 9999 end if - ctxt=desc_a%get_context() + ctxt = desc_a%get_context() call psb_info(ctxt, me, np) if (np == -1) then @@ -159,40 +158,12 @@ subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& if ((info == 0).and.(lldy null() - ! check for presence/size of a work area - liwork= 2*ncol - - if (present(work)) then - if (size(work) >= liwork) then - aliw =.false. - else - aliw=.true. - endif - else - aliw=.true. - end if - - if (aliw) then - allocate(iwork(liwork),stat=info) - if(info /= psb_success_) then - info=psb_err_from_subroutine_ - ch_err='psb_realloc' - call psb_errpush(info,name,a_err=ch_err) - goto 9999 - end if - else - iwork => work - endif - - iwork(1)=0.d0 - ! Perform local triangular system solve if (present(diag)) then call a%spsm(alpha,x,beta,y,info,scale=scale,d=diag,trans=trans) @@ -208,8 +179,7 @@ subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& ! update overlap elements if (choice_ > 0) then - call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),& - & zone,y%v,desc_a,iwork,info,data=psb_comm_ovr_) + call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),zone,y%v,desc_a,info,data=psb_comm_ovr_) if (info == psb_success_) call psi_ovrl_upd(y%v,desc_a,choice_,info) @@ -219,8 +189,6 @@ subroutine psb_zspsv_vect(alpha,a,x,beta,y,desc_a,info,& end if end if - if (aliw) deallocate(iwork) - call psb_erractionrestore(err_act) return diff --git a/base/tools/psb_c_map.f90 b/base/tools/psb_c_map.f90 index 1cfb9272..40ca3fe8 100644 --- a/base/tools/psb_c_map.f90 +++ b/base/tools/psb_c_map.f90 @@ -71,7 +71,7 @@ subroutine psb_c_map_U2V_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_V%get_global_rows() nc2 = map%p_desc_V%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work) if (info == psb_success_) call psb_csmm(cone,map%mat_U2V,x,czero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -91,7 +91,7 @@ subroutine psb_c_map_U2V_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_V%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work) if (info == psb_success_) call psb_csmm(cone,map%mat_U2V,xt,czero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -112,14 +112,13 @@ subroutine psb_c_map_U2V_a(alpha,x,beta,y,map,info,work) end subroutine psb_c_map_U2V_a -subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_c_map_U2V_v implicit none class(psb_clinmap_type), intent(in) :: map complex(psb_spk_), intent(in) :: alpha,beta type(psb_c_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional :: work(:) type(psb_c_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_c_vect_type), target :: xt, yt @@ -152,7 +151,7 @@ subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_V,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info) if (info == psb_success_) call psb_csmm(cone,map%mat_U2V,x,czero,pty,info) if ((info == psb_success_) .and. map%p_desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -186,7 +185,7 @@ subroutine psb_c_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) end if call psb_geaxpby(cone,x,czero,ptx,map%desc_U,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_U,info) if (info == psb_success_) call psb_csmm(cone,map%mat_U2V,ptx,czero,pty,info) if ((info == psb_success_) .and. map%desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -254,7 +253,7 @@ subroutine psb_c_map_V2U_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_U%get_global_rows() nc2 = map%p_desc_U%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work) if (info == psb_success_) call psb_csmm(cone,map%mat_V2U,x,czero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -274,7 +273,7 @@ subroutine psb_c_map_V2U_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_U%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work) if (info == psb_success_) call psb_csmm(cone,map%mat_V2U,xt,czero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -294,14 +293,13 @@ subroutine psb_c_map_V2U_a(alpha,x,beta,y,map,info,work) end subroutine psb_c_map_V2U_a -subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_c_map_V2U_v implicit none class(psb_clinmap_type), intent(in) :: map complex(psb_spk_), intent(in) :: alpha,beta type(psb_c_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_spk_), optional :: work(:) type(psb_c_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_c_vect_type), target :: xt, yt @@ -334,7 +332,7 @@ subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_U,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info) if (info == psb_success_) call psb_csmm(cone,map%mat_V2U,x,czero,pty,info) if ((info == psb_success_) .and. map%p_desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -369,7 +367,7 @@ subroutine psb_c_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geaxpby(cone,x,czero,ptx,map%desc_V,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_V,info) if (info == psb_success_) call psb_csmm(cone,map%mat_V2U,ptx,czero,pty,info) if ((info == psb_success_) .and. map%desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() diff --git a/base/tools/psb_d_map.f90 b/base/tools/psb_d_map.f90 index d1a02fdf..a36c07b3 100644 --- a/base/tools/psb_d_map.f90 +++ b/base/tools/psb_d_map.f90 @@ -71,7 +71,7 @@ subroutine psb_d_map_U2V_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_V%get_global_rows() nc2 = map%p_desc_V%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work) if (info == psb_success_) call psb_csmm(done,map%mat_U2V,x,dzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -91,7 +91,7 @@ subroutine psb_d_map_U2V_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_V%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work) if (info == psb_success_) call psb_csmm(done,map%mat_U2V,xt,dzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -112,14 +112,13 @@ subroutine psb_d_map_U2V_a(alpha,x,beta,y,map,info,work) end subroutine psb_d_map_U2V_a -subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_d_map_U2V_v implicit none class(psb_dlinmap_type), intent(in) :: map real(psb_dpk_), intent(in) :: alpha,beta type(psb_d_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional :: work(:) type(psb_d_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_d_vect_type), target :: xt, yt @@ -152,7 +151,7 @@ subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_V,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info) if (info == psb_success_) call psb_csmm(done,map%mat_U2V,x,dzero,pty,info) if ((info == psb_success_) .and. map%p_desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -186,7 +185,7 @@ subroutine psb_d_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) end if call psb_geaxpby(done,x,dzero,ptx,map%desc_U,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_U,info) if (info == psb_success_) call psb_csmm(done,map%mat_U2V,ptx,dzero,pty,info) if ((info == psb_success_) .and. map%desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -254,7 +253,7 @@ subroutine psb_d_map_V2U_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_U%get_global_rows() nc2 = map%p_desc_U%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work) if (info == psb_success_) call psb_csmm(done,map%mat_V2U,x,dzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -274,7 +273,7 @@ subroutine psb_d_map_V2U_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_U%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work) if (info == psb_success_) call psb_csmm(done,map%mat_V2U,xt,dzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -294,14 +293,13 @@ subroutine psb_d_map_V2U_a(alpha,x,beta,y,map,info,work) end subroutine psb_d_map_V2U_a -subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_d_map_V2U_v implicit none class(psb_dlinmap_type), intent(in) :: map real(psb_dpk_), intent(in) :: alpha,beta type(psb_d_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_dpk_), optional :: work(:) type(psb_d_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_d_vect_type), target :: xt, yt @@ -334,7 +332,7 @@ subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_U,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info) if (info == psb_success_) call psb_csmm(done,map%mat_V2U,x,dzero,pty,info) if ((info == psb_success_) .and. map%p_desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -369,7 +367,7 @@ subroutine psb_d_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geaxpby(done,x,dzero,ptx,map%desc_V,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_V,info) if (info == psb_success_) call psb_csmm(done,map%mat_V2U,ptx,dzero,pty,info) if ((info == psb_success_) .and. map%desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() diff --git a/base/tools/psb_s_map.f90 b/base/tools/psb_s_map.f90 index e6c6d445..47faf8c7 100644 --- a/base/tools/psb_s_map.f90 +++ b/base/tools/psb_s_map.f90 @@ -71,7 +71,7 @@ subroutine psb_s_map_U2V_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_V%get_global_rows() nc2 = map%p_desc_V%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work) if (info == psb_success_) call psb_csmm(sone,map%mat_U2V,x,szero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -91,7 +91,7 @@ subroutine psb_s_map_U2V_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_V%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work) if (info == psb_success_) call psb_csmm(sone,map%mat_U2V,xt,szero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -112,14 +112,13 @@ subroutine psb_s_map_U2V_a(alpha,x,beta,y,map,info,work) end subroutine psb_s_map_U2V_a -subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_s_map_U2V_v implicit none class(psb_slinmap_type), intent(in) :: map real(psb_spk_), intent(in) :: alpha,beta type(psb_s_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional :: work(:) type(psb_s_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_s_vect_type), target :: xt, yt @@ -152,7 +151,7 @@ subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_V,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info) if (info == psb_success_) call psb_csmm(sone,map%mat_U2V,x,szero,pty,info) if ((info == psb_success_) .and. map%p_desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -186,7 +185,7 @@ subroutine psb_s_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) end if call psb_geaxpby(sone,x,szero,ptx,map%desc_U,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_U,info) if (info == psb_success_) call psb_csmm(sone,map%mat_U2V,ptx,szero,pty,info) if ((info == psb_success_) .and. map%desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -254,7 +253,7 @@ subroutine psb_s_map_V2U_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_U%get_global_rows() nc2 = map%p_desc_U%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work) if (info == psb_success_) call psb_csmm(sone,map%mat_V2U,x,szero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -274,7 +273,7 @@ subroutine psb_s_map_V2U_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_U%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work) if (info == psb_success_) call psb_csmm(sone,map%mat_V2U,xt,szero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -294,14 +293,13 @@ subroutine psb_s_map_V2U_a(alpha,x,beta,y,map,info,work) end subroutine psb_s_map_V2U_a -subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_s_map_V2U_v implicit none class(psb_slinmap_type), intent(in) :: map real(psb_spk_), intent(in) :: alpha,beta type(psb_s_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - real(psb_spk_), optional :: work(:) type(psb_s_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_s_vect_type), target :: xt, yt @@ -334,7 +332,7 @@ subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_U,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info) if (info == psb_success_) call psb_csmm(sone,map%mat_V2U,x,szero,pty,info) if ((info == psb_success_) .and. map%p_desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -369,7 +367,7 @@ subroutine psb_s_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geaxpby(sone,x,szero,ptx,map%desc_V,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_V,info) if (info == psb_success_) call psb_csmm(sone,map%mat_V2U,ptx,szero,pty,info) if ((info == psb_success_) .and. map%desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() diff --git a/base/tools/psb_z_map.f90 b/base/tools/psb_z_map.f90 index 0aba3e3e..55500f58 100644 --- a/base/tools/psb_z_map.f90 +++ b/base/tools/psb_z_map.f90 @@ -71,7 +71,7 @@ subroutine psb_z_map_U2V_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_V%get_global_rows() nc2 = map%p_desc_V%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work) if (info == psb_success_) call psb_csmm(zone,map%mat_U2V,x,zzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -91,7 +91,7 @@ subroutine psb_z_map_U2V_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_V%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_U,info,work) if (info == psb_success_) call psb_csmm(zone,map%mat_U2V,xt,zzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_V)) then call psb_sum(ctxt,yt(1:nr2)) @@ -112,14 +112,13 @@ subroutine psb_z_map_U2V_a(alpha,x,beta,y,map,info,work) end subroutine psb_z_map_U2V_a -subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_z_map_U2V_v implicit none class(psb_zlinmap_type), intent(in) :: map complex(psb_dpk_), intent(in) :: alpha,beta type(psb_z_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional :: work(:) type(psb_z_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_z_vect_type), target :: xt, yt @@ -152,7 +151,7 @@ subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_V,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_U,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_U,info) if (info == psb_success_) call psb_csmm(zone,map%mat_U2V,x,zzero,pty,info) if ((info == psb_success_) .and. map%p_desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -186,7 +185,7 @@ subroutine psb_z_map_U2V_v(alpha,x,beta,y,map,info,work,vtx,vty) end if call psb_geaxpby(zone,x,zzero,ptx,map%desc_U,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_U,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_U,info) if (info == psb_success_) call psb_csmm(zone,map%mat_U2V,ptx,zzero,pty,info) if ((info == psb_success_) .and. map%desc_V%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -254,7 +253,7 @@ subroutine psb_z_map_V2U_a(alpha,x,beta,y,map,info,work) nr2 = map%p_desc_U%get_global_rows() nc2 = map%p_desc_U%get_local_cols() allocate(yt(nc2),stat=info) - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work) if (info == psb_success_) call psb_csmm(zone,map%mat_V2U,x,zzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%p_desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -274,7 +273,7 @@ subroutine psb_z_map_V2U_a(alpha,x,beta,y,map,info,work) nc2 = map%desc_U%get_local_cols() allocate(xt(nc1),yt(nc2),stat=info) xt(1:nr1) = x(1:nr1) - if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(xt,map%desc_V,info,work) if (info == psb_success_) call psb_csmm(zone,map%mat_V2U,xt,zzero,yt,info) if ((info == psb_success_) .and. psb_is_repl_desc(map%desc_U)) then call psb_sum(ctxt,yt(1:nr2)) @@ -294,14 +293,13 @@ subroutine psb_z_map_V2U_a(alpha,x,beta,y,map,info,work) end subroutine psb_z_map_V2U_a -subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) +subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,vtx,vty) use psb_base_mod, psb_protect_name => psb_z_map_V2U_v implicit none class(psb_zlinmap_type), intent(in) :: map complex(psb_dpk_), intent(in) :: alpha,beta type(psb_z_vect_type), intent(inout) :: x,y integer(psb_ipk_), intent(out) :: info - complex(psb_dpk_), optional :: work(:) type(psb_z_vect_type), optional, target, intent(inout) :: vtx,vty ! Local type(psb_z_vect_type), target :: xt, yt @@ -334,7 +332,7 @@ subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geasb(yt,map%p_desc_U,info,scratch=.true.,mold=x%v) pty => yt end if - if (info == psb_success_) call psb_halo(x,map%p_desc_V,info,work=work) + if (info == psb_success_) call psb_halo(x,map%p_desc_V,info) if (info == psb_success_) call psb_csmm(zone,map%mat_V2U,x,zzero,pty,info) if ((info == psb_success_) .and. map%p_desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() @@ -369,7 +367,7 @@ subroutine psb_z_map_V2U_v(alpha,x,beta,y,map,info,work,vtx,vty) call psb_geaxpby(zone,x,zzero,ptx,map%desc_V,info) - if (info == psb_success_) call psb_halo(ptx,map%desc_V,info,work=work) + if (info == psb_success_) call psb_halo(ptx,map%desc_V,info) if (info == psb_success_) call psb_csmm(zone,map%mat_V2U,ptx,zzero,pty,info) if ((info == psb_success_) .and. map%desc_U%is_repl().and.(np>1)) then yta = pty%get_vect() diff --git a/linsolve/impl/psb_cbicg.f90 b/linsolve/impl/psb_cbicg.f90 index c357054b..2bfe0dbb 100644 --- a/linsolve/impl/psb_cbicg.f90 +++ b/linsolve/impl/psb_cbicg.f90 @@ -112,11 +112,10 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), optional, intent(out) :: iter real(psb_spk_), optional, intent(out) :: err ! !$ local data - complex(psb_spk_), allocatable, target :: aux(:) type(psb_c_vect_type), allocatable, target :: wwrk(:) type(psb_c_vect_type), pointer :: ww, q, r, p,& & zt, pt, z, rt, qt - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, istop_, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -188,14 +187,11 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& end if - naux=4*n_col - - allocate(aux(naux),stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=9_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) if(info /= psb_success_) then - info=psb_err_from_subroutine_non_ - ch_err='psb_asb' + info = psb_err_from_subroutine_non_ + ch_err = 'psb_asb' err=info call psb_errpush(info,name,a_err=ch_err) goto 9999 @@ -239,7 +235,7 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (debug_level >= psb_debug_ext_)& & write(debug_unit,*) me,' ',trim(name),' Done spmm',info if (info == psb_success_) call psb_geaxpby(cone,r,czero,rt,desc_a,info) @@ -265,8 +261,8 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& if (debug_level >= psb_debug_ext_) & & write(debug_unit,*) me,' ',trim(name),'iteration: ',itx - call prec%apply(r,z,desc_a,info,work=aux) - if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c',work=aux) + call prec%apply(r,z,desc_a,info) + if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c') rho_old = rho rho = psb_gedot(rt,z,desc_a,info) @@ -286,10 +282,8 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,zt,beta,pt,desc_a,info) end if - call psb_spmm(cone,a,p,czero,q,desc_a,info,& - & work=aux) - call psb_spmm(cone,a,pt,czero,qt,desc_a,info,& - & work=aux,trans='c') + call psb_spmm(cone,a,p,czero,q,desc_a,info) + call psb_spmm(cone,a,pt,czero,qt,desc_a,info,trans='c') sigma = psb_gedot(pt,q,desc_a,info) if (sigma == czero) then @@ -319,7 +313,6 @@ subroutine psb_cbicg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_ccg.F90 b/linsolve/impl/psb_ccg.F90 index 0ba1b5fc..2a384304 100644 --- a/linsolve/impl/psb_ccg.F90 +++ b/linsolve/impl/psb_ccg.F90 @@ -113,12 +113,12 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err,cond ! = Local data - complex(psb_spk_), allocatable, target :: aux(:),td(:),tu(:),eig(:),ewrk(:) + complex(psb_spk_), allocatable, target :: td(:),tu(:),eig(:),ewrk(:) integer(psb_mpk_), allocatable :: ibl(:), ispl(:), iwrk(:) type(psb_c_vect_type), allocatable, target :: wwrk(:) type(psb_c_vect_type), pointer :: q, p, r, z, w complex(psb_spk_) :: alpha, beta, rho, rho_old, sigma,alpha_old,beta_old - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,err_act, ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -171,8 +171,6 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -215,7 +213,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -235,7 +233,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 itx = itx + 1 - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) rho_old = rho rho = psb_gedot(r,z,desc_a,info) @@ -252,7 +250,7 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone,z,beta,p,desc_a,info) end if - call psb_spmm(cone,a,p,czero,q,desc_a,info,work=aux) + call psb_spmm(cone,a,p,czero,q,desc_a,info) sigma = psb_gedot(p,q,desc_a,info) if (sigma == czero) then if (debug_level >= psb_debug_ext_)& @@ -285,7 +283,6 @@ subroutine psb_ccg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_ccgs.f90 b/linsolve/impl/psb_ccgs.f90 index f7808c0d..ee4a3e5a 100644 --- a/linsolve/impl/psb_ccgs.f90 +++ b/linsolve/impl/psb_ccgs.f90 @@ -110,11 +110,10 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - complex(psb_spk_), allocatable, target :: aux(:) type(psb_c_vect_type), allocatable, target :: wwrk(:) type(psb_c_vect_type), pointer :: ww, q, r, p, v,& & s, z, f, rt, qt, uv - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col,istop_, itx, err_act integer(psb_lpk_) :: mglob type(psb_ctxt_type) :: ctxt @@ -165,8 +164,6 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - Allocate(aux(naux),stat=info) if (info == psb_success_) Call psb_geall(wwrk,desc_a,info,n=11_psb_ipk_) if (info == psb_success_) Call psb_geasb(wwrk,desc_a,info,mold=x%v) if (info /= psb_success_) Then @@ -215,7 +212,7 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info == psb_success_) call psb_geaxpby(cone,r,czero,rt,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -260,10 +257,9 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(cone,uv,beta,p,desc_a,info) end if - if (info == psb_success_) call prec%apply(p,f,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(p,f,desc_a,info) - if (info == psb_success_) call psb_spmm(cone,a,f,czero,v,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(cone,a,f,czero,v,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='First loop part ') @@ -285,12 +281,11 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(cone,uv,czero,s,desc_a,info) if (info == psb_success_) call psb_geaxpby(cone,q,cone,s,desc_a,info) - if (info == psb_success_) call prec%apply(s,z,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(s,z,desc_a,info) if (info == psb_success_) call psb_geaxpby(alpha,z,cone,x,desc_a,info) - if (info == psb_success_) call psb_spmm(cone,a,z,czero,qt,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(cone,a,z,czero,qt,desc_a,info) if (info == psb_success_) call psb_geaxpby(-alpha,qt,cone,r,desc_a,info) @@ -312,7 +307,6 @@ Subroutine psb_ccgs_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_ccgstab.f90 b/linsolve/impl/psb_ccgstab.f90 index 4ccbaf7a..78d10eb8 100644 --- a/linsolve/impl/psb_ccgstab.f90 +++ b/linsolve/impl/psb_ccgstab.f90 @@ -110,10 +110,10 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = Local data - complex(psb_spk_), allocatable, target :: aux(:),wwrk(:,:) + complex(psb_spk_), allocatable, target :: wwrk(:,:) type(psb_c_vect_type) :: q, r, p, v, s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it,itrace_,& + integer(psb_ipk_) :: itmax_, it,itrace_,& & n_row, n_col integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -179,8 +179,6 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_errpush(info,name,a_err='psb_chkvect on B') goto 9999 end if - naux=6*n_col - if (info == psb_success_) allocate(aux(naux),stat=info) if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -230,7 +228,7 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist it = 0 call psb_geaxpby(cone,b,czero,r,desc_a,info) - call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + call psb_spmm(-cone,a,x,cone,r,desc_a,info) call psb_geaxpby(cone,r,czero,q,desc_a,info) ! Perhaps we already satisfy the convergence criterion... @@ -279,10 +277,9 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_geaxpby(cone,r,beta,p,desc_a,info) End If - call prec%apply(p,f,desc_a,info,work=aux) + call prec%apply(p,f,desc_a,info) - call psb_spmm(cone,a,f,czero,v,desc_a,info,& - & work=aux) + call psb_spmm(cone,a,f,czero,v,desc_a,info) sigma = psb_gedot(q,v,desc_a,info) @@ -316,8 +313,8 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist end if - call prec%apply(s,z,desc_a,info,work=aux) - Call psb_spmm(cone,a,z,czero,t,desc_a,info,work=aux) + call prec%apply(s,z,desc_a,info) + Call psb_spmm(cone,a,z,czero,t,desc_a,info) if(psb_errstatus_fatal()) then call psb_errpush(psb_err_from_subroutine_,name,a_err='precaply/spmm') @@ -367,7 +364,6 @@ Subroutine psb_ccgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr - deallocate(aux,stat=info) call x%sync() call psb_gefree(q,desc_a,info) diff --git a/linsolve/impl/psb_ccgstabl.f90 b/linsolve/impl/psb_ccgstabl.f90 index f1463b83..d0c3dc53 100644 --- a/linsolve/impl/psb_ccgstabl.f90 +++ b/linsolve/impl/psb_ccgstabl.f90 @@ -121,13 +121,13 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - complex(psb_spk_), allocatable, target :: aux(:), gamma(:),& + complex(psb_spk_), allocatable, target :: gamma(:),& & gamma1(:), gamma2(:), taum(:,:), sigma(:) type(psb_c_vect_type), allocatable, target :: wwrk(:),uh(:), rh(:) type(psb_c_vect_type), Pointer :: ww, q, r, rt0, p, v, & & s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, nl, err_act integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False. @@ -213,10 +213,6 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux),gamma(0:nl),gamma1(nl),& - &gamma2(nl),taum(nl,nl),sigma(nl), stat=info) - if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -263,7 +259,7 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info == psb_success_) call prec%apply(r,desc_a,info) @@ -318,7 +314,7 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& ! = call psb_geaxpby(cone,rh(:,0:j),-beta,uh(:,0:j),desc_a,info) call psb_geaxpby(cone,rh(k),-beta,uh(k),desc_a,info) end do - call psb_spmm(cone,a,uh(j),czero,uh(j+1),desc_a,info,work=aux) + call psb_spmm(cone,a,uh(j),czero,uh(j+1),desc_a,info) call prec%apply(uh(j+1),desc_a,info) @@ -340,7 +336,7 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(-alpha,uh(k+1),cone,rh(k),desc_a,info) end do call psb_geaxpby(alpha,uh(0),cone,x,desc_a,info) - call psb_spmm(cone,a,rh(j),czero,rh(j+1),desc_a,info,work=aux) + call psb_spmm(cone,a,rh(j),czero,rh(j+1),desc_a,info) call prec%apply(rh(j+1),desc_a,info) @@ -403,7 +399,6 @@ Subroutine psb_ccgstabl_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(uh,desc_a,info) if (info == psb_success_) call psb_gefree(rh,desc_a,info) if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_cfcg.F90 b/linsolve/impl/psb_cfcg.F90 index f28db7de..4c1b1ae1 100644 --- a/linsolve/impl/psb_cfcg.F90 +++ b/linsolve/impl/psb_cfcg.F90 @@ -125,12 +125,11 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& complex(psb_spk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me - complex(psb_spk_), allocatable, target :: aux(:) complex(psb_spk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat @@ -177,9 +176,6 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) - if (present(itmax)) then itmax_ = itmax @@ -234,7 +230,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v=Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(cone,a,v,czero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -289,7 +285,7 @@ subroutine psb_cfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v = Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(cone,a,v,czero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& diff --git a/linsolve/impl/psb_cgcr.f90 b/linsolve/impl/psb_cgcr.f90 index 5120b102..360c7db9 100644 --- a/linsolve/impl/psb_cgcr.f90 +++ b/linsolve/impl/psb_cgcr.f90 @@ -130,14 +130,13 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& type(psb_c_vect_type) :: r real(psb_dpk_) :: r_norm, b_norm, a_norm, derr - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me integer(psb_ipk_) :: i, j, it, itx, istop_, itmax_, itrace_, nl, m, nrst complex(psb_spk_) :: hjj - complex(psb_spk_), allocatable, target :: aux(:) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='GCR' @@ -223,10 +222,6 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 endif - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c_scale(nl+1),c(nl+1),z(nl+1), alpha(nl+1), stat=info) - h = czero if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -261,7 +256,7 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(cone, b, czero, r, desc_a, info) - call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -278,9 +273,9 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 j = it !Apply preconditioner - call prec%apply(r,z(j),desc_a,info,work=aux) + call prec%apply(r,z(j),desc_a,info) - call psb_spmm(cone,a,z(j),czero,c(1),desc_a,info,work=aux) + call psb_spmm(cone,a,z(j),czero,c(1),desc_a,info) do i =1, j - 1 h(i,j) = psb_gedot(c_scale(i), c(i), desc_a, info) @@ -347,7 +342,6 @@ subroutine psb_cgcr_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(c(i),desc_a,info) end do - if (info == psb_success_) deallocate(aux,h,c_scale,z,c,alpha,stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_crgmres.f90 b/linsolve/impl/psb_crgmres.f90 index e0c0b38d..f03e1881 100644 --- a/linsolve/impl/psb_crgmres.f90 +++ b/linsolve/impl/psb_crgmres.f90 @@ -124,13 +124,12 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - complex(psb_spk_), allocatable :: aux(:) complex(psb_spk_), allocatable :: c(:), s(:), h(:,:), rs(:), rst(:) type(psb_c_vect_type), allocatable :: v(:) type(psb_c_vect_type) :: w, w1, xt real(psb_spk_) :: tmp complex(psb_spk_) :: scal, gm, rti, rti1 - integer(psb_ipk_) ::litmax, naux, it, k, itrace_,& + integer(psb_ipk_) ::litmax, it, k, itrace_,& & n_row, n_col, nl integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False., use_srot=.true. @@ -230,10 +229,6 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& end if - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c(nl+1),s(nl+1),rs(nl+1), rst(nl+1),stat=info) - if (info == psb_success_) call psb_geall(v,desc_a,info,n=nl+1) if (info == psb_success_) call psb_geall(w,desc_a,info) if (info == psb_success_) call psb_geall(w1,desc_a,info) @@ -266,7 +261,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-cone,a,x,cone,v(1),desc_a,info,work=aux) + call psb_spmm(-cone,a,x,cone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -301,7 +296,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-cone,a,x,cone,v(1),desc_a,info,work=aux) + call psb_spmm(-cone,a,x,cone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -358,7 +353,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& itx = itx + 1 call prec%apply(v(i),w1,desc_a,info) - call psb_spmm(cone,a,w1,czero,w,desc_a,info,work=aux) + call psb_spmm(cone,a,w1,czero,w,desc_a,info) ! do k = 1, i @@ -397,7 +392,7 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(xt,desc_a,info) call psb_geaxpby(cone,x,cone,xt,desc_a,info) call psb_geaxpby(cone,b,czero,w1,desc_a,info) - call psb_spmm(-cone,a,xt,cone,w1,desc_a,info,work=aux) + call psb_spmm(-cone,a,xt,cone,w1,desc_a,info) rni = psb_geamax(w1,desc_a,info) xni = psb_geamax(xt,desc_a,info) errnum = rni @@ -490,7 +485,6 @@ subroutine psb_crgmres_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(w,desc_a,info) if (info == psb_success_) call psb_gefree(w1,desc_a,info) if (info == psb_success_) call psb_gefree(xt,desc_a,info) - if (info == psb_success_) deallocate(aux,h,c,s,rs,rst, stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_crichardson.f90 b/linsolve/impl/psb_crichardson.f90 index 3eb4c263..d92e0ce3 100644 --- a/linsolve/impl/psb_crichardson.f90 +++ b/linsolve/impl/psb_crichardson.f90 @@ -91,11 +91,10 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& logical :: do_alloc_wrk type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: me,np,err_act - complex(psb_spk_), allocatable, target :: aux(:) type(psb_c_vect_type), allocatable, target :: wwrk(:) type(psb_c_vect_type), pointer :: q, p, r, z, w real(psb_dpk_) :: derr - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -155,12 +154,10 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then - info=psb_err_from_subroutine_non_ + info = psb_err_from_subroutine_non_ call psb_errpush(info,name) goto 9999 end if @@ -171,9 +168,9 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& w => wwrk(5) call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (info /= psb_success_) then - info=psb_err_from_subroutine_non_ + info = psb_err_from_subroutine_non_ call psb_errpush(info,name) goto 9999 end if @@ -186,17 +183,16 @@ Subroutine psb_crichardson_vect(a,prec,b,x,eps,desc_a,info,& End If loop: do itx=1,itmax_ - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) call psb_geaxpby(cone,z,cone,x,desc_a,info) call psb_geaxpby(cone,b,czero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,r,desc_a,info) if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop end do loop call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) if(info /= psb_success_) then diff --git a/linsolve/impl/psb_dbicg.f90 b/linsolve/impl/psb_dbicg.f90 index ebcc8eb9..e717a783 100644 --- a/linsolve/impl/psb_dbicg.f90 +++ b/linsolve/impl/psb_dbicg.f90 @@ -112,11 +112,10 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), optional, intent(out) :: iter real(psb_dpk_), optional, intent(out) :: err ! !$ local data - real(psb_dpk_), allocatable, target :: aux(:) type(psb_d_vect_type), allocatable, target :: wwrk(:) type(psb_d_vect_type), pointer :: ww, q, r, p,& & zt, pt, z, rt, qt - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, istop_, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -188,9 +187,7 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& end if - naux=4*n_col - allocate(aux(naux),stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=9_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) if(info /= psb_success_) then @@ -239,7 +236,7 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (debug_level >= psb_debug_ext_)& & write(debug_unit,*) me,' ',trim(name),' Done spmm',info if (info == psb_success_) call psb_geaxpby(done,r,dzero,rt,desc_a,info) @@ -265,8 +262,8 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& if (debug_level >= psb_debug_ext_) & & write(debug_unit,*) me,' ',trim(name),'iteration: ',itx - call prec%apply(r,z,desc_a,info,work=aux) - if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c',work=aux) + call prec%apply(r,z,desc_a,info) + if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c') rho_old = rho rho = psb_gedot(rt,z,desc_a,info) @@ -286,10 +283,8 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,zt,beta,pt,desc_a,info) end if - call psb_spmm(done,a,p,dzero,q,desc_a,info,& - & work=aux) - call psb_spmm(done,a,pt,dzero,qt,desc_a,info,& - & work=aux,trans='c') + call psb_spmm(done,a,p,dzero,q,desc_a,info) + call psb_spmm(done,a,pt,dzero,qt,desc_a,info,trans='c') sigma = psb_gedot(pt,q,desc_a,info) if (sigma == dzero) then @@ -319,7 +314,6 @@ subroutine psb_dbicg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_dcg.F90 b/linsolve/impl/psb_dcg.F90 index a5993731..63914940 100644 --- a/linsolve/impl/psb_dcg.F90 +++ b/linsolve/impl/psb_dcg.F90 @@ -113,12 +113,12 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err,cond ! = Local data - real(psb_dpk_), allocatable, target :: aux(:),td(:),tu(:),eig(:),ewrk(:) + real(psb_dpk_), allocatable, target :: td(:),tu(:),eig(:),ewrk(:) integer(psb_mpk_), allocatable :: ibl(:), ispl(:), iwrk(:) type(psb_d_vect_type), allocatable, target :: wwrk(:) type(psb_d_vect_type), pointer :: q, p, r, z, w real(psb_dpk_) :: alpha, beta, rho, rho_old, sigma,alpha_old,beta_old - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,err_act, ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -171,8 +171,6 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -223,7 +221,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -243,7 +241,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 itx = itx + 1 - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) rho_old = rho rho = psb_gedot(r,z,desc_a,info) @@ -260,7 +258,7 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done,z,beta,p,desc_a,info) end if - call psb_spmm(done,a,p,dzero,q,desc_a,info,work=aux) + call psb_spmm(done,a,p,dzero,q,desc_a,info) sigma = psb_gedot(p,q,desc_a,info) if (sigma == dzero) then if (debug_level >= psb_debug_ext_)& @@ -318,7 +316,6 @@ subroutine psb_dcg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_dcgs.f90 b/linsolve/impl/psb_dcgs.f90 index 5c2401d1..970aa26d 100644 --- a/linsolve/impl/psb_dcgs.f90 +++ b/linsolve/impl/psb_dcgs.f90 @@ -110,11 +110,10 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - real(psb_dpk_), allocatable, target :: aux(:) type(psb_d_vect_type), allocatable, target :: wwrk(:) type(psb_d_vect_type), pointer :: ww, q, r, p, v,& & s, z, f, rt, qt, uv - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col,istop_, itx, err_act integer(psb_lpk_) :: mglob type(psb_ctxt_type) :: ctxt @@ -165,8 +164,6 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - Allocate(aux(naux),stat=info) if (info == psb_success_) Call psb_geall(wwrk,desc_a,info,n=11_psb_ipk_) if (info == psb_success_) Call psb_geasb(wwrk,desc_a,info,mold=x%v) if (info /= psb_success_) Then @@ -215,7 +212,7 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (info == psb_success_) call psb_geaxpby(done,r,dzero,rt,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -260,10 +257,9 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(done,uv,beta,p,desc_a,info) end if - if (info == psb_success_) call prec%apply(p,f,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(p,f,desc_a,info) - if (info == psb_success_) call psb_spmm(done,a,f,dzero,v,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(done,a,f,dzero,v,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='First loop part ') @@ -285,12 +281,11 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(done,uv,dzero,s,desc_a,info) if (info == psb_success_) call psb_geaxpby(done,q,done,s,desc_a,info) - if (info == psb_success_) call prec%apply(s,z,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(s,z,desc_a,info) if (info == psb_success_) call psb_geaxpby(alpha,z,done,x,desc_a,info) - if (info == psb_success_) call psb_spmm(done,a,z,dzero,qt,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(done,a,z,dzero,qt,desc_a,info) if (info == psb_success_) call psb_geaxpby(-alpha,qt,done,r,desc_a,info) @@ -312,7 +307,6 @@ Subroutine psb_dcgs_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_dcgstab.f90 b/linsolve/impl/psb_dcgstab.f90 index 749015d7..746ff008 100644 --- a/linsolve/impl/psb_dcgstab.f90 +++ b/linsolve/impl/psb_dcgstab.f90 @@ -110,11 +110,10 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = Local data - real(psb_dpk_), allocatable, target :: aux(:),wwrk(:,:) + real(psb_dpk_), allocatable, target :: wwrk(:,:) type(psb_d_vect_type) :: q, r, p, v, s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it,itrace_,& - & n_row, n_col + integer(psb_ipk_) :: itmax_, it, itrace_, n_row, n_col integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit Logical, Parameter :: exchange=.True., noexchange=.False., debug1 = .False. @@ -179,8 +178,7 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_errpush(info,name,a_err='psb_chkvect on B') goto 9999 end if - naux=6*n_col - if (info == psb_success_) allocate(aux(naux),stat=info) + if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -230,7 +228,7 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist it = 0 call psb_geaxpby(done,b,dzero,r,desc_a,info) - call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + call psb_spmm(-done,a,x,done,r,desc_a,info) call psb_geaxpby(done,r,dzero,q,desc_a,info) ! Perhaps we already satisfy the convergence criterion... @@ -279,10 +277,9 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_geaxpby(done,r,beta,p,desc_a,info) End If - call prec%apply(p,f,desc_a,info,work=aux) + call prec%apply(p,f,desc_a,info) - call psb_spmm(done,a,f,dzero,v,desc_a,info,& - & work=aux) + call psb_spmm(done,a,f,dzero,v,desc_a,info) sigma = psb_gedot(q,v,desc_a,info) @@ -316,8 +313,8 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist end if - call prec%apply(s,z,desc_a,info,work=aux) - Call psb_spmm(done,a,z,dzero,t,desc_a,info,work=aux) + call prec%apply(s,z,desc_a,info) + Call psb_spmm(done,a,z,dzero,t,desc_a,info) if(psb_errstatus_fatal()) then call psb_errpush(psb_err_from_subroutine_,name,a_err='precaply/spmm') @@ -367,7 +364,6 @@ Subroutine psb_dcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr - deallocate(aux,stat=info) call x%sync() call psb_gefree(q,desc_a,info) diff --git a/linsolve/impl/psb_dcgstabl.f90 b/linsolve/impl/psb_dcgstabl.f90 index a2ae6164..ea146773 100644 --- a/linsolve/impl/psb_dcgstabl.f90 +++ b/linsolve/impl/psb_dcgstabl.f90 @@ -121,13 +121,13 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - real(psb_dpk_), allocatable, target :: aux(:), gamma(:),& + real(psb_dpk_), allocatable, target :: gamma(:),& & gamma1(:), gamma2(:), taum(:,:), sigma(:) type(psb_d_vect_type), allocatable, target :: wwrk(:),uh(:), rh(:) type(psb_d_vect_type), Pointer :: ww, q, r, rt0, p, v, & & s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, nl, err_act integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False. @@ -213,10 +213,6 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux),gamma(0:nl),gamma1(nl),& - &gamma2(nl),taum(nl,nl),sigma(nl), stat=info) - if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -263,7 +259,7 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (info == psb_success_) call prec%apply(r,desc_a,info) @@ -318,7 +314,7 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& ! = call psb_geaxpby(done,rh(:,0:j),-beta,uh(:,0:j),desc_a,info) call psb_geaxpby(done,rh(k),-beta,uh(k),desc_a,info) end do - call psb_spmm(done,a,uh(j),dzero,uh(j+1),desc_a,info,work=aux) + call psb_spmm(done,a,uh(j),dzero,uh(j+1),desc_a,info) call prec%apply(uh(j+1),desc_a,info) @@ -340,7 +336,7 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(-alpha,uh(k+1),done,rh(k),desc_a,info) end do call psb_geaxpby(alpha,uh(0),done,x,desc_a,info) - call psb_spmm(done,a,rh(j),dzero,rh(j+1),desc_a,info,work=aux) + call psb_spmm(done,a,rh(j),dzero,rh(j+1),desc_a,info) call prec%apply(rh(j+1),desc_a,info) @@ -403,7 +399,6 @@ Subroutine psb_dcgstabl_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(uh,desc_a,info) if (info == psb_success_) call psb_gefree(rh,desc_a,info) if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_dfcg.F90 b/linsolve/impl/psb_dfcg.F90 index cb741795..5cdb6a9d 100644 --- a/linsolve/impl/psb_dfcg.F90 +++ b/linsolve/impl/psb_dfcg.F90 @@ -125,12 +125,11 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& real(psb_dpk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me - real(psb_dpk_), allocatable, target :: aux(:) real(psb_dpk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat @@ -177,9 +176,6 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) - if (present(itmax)) then itmax_ = itmax @@ -234,7 +230,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v=Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(done,a,v,dzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -289,7 +285,7 @@ subroutine psb_dfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v = Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(done,a,v,dzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& diff --git a/linsolve/impl/psb_dgcr.f90 b/linsolve/impl/psb_dgcr.f90 index cf2e2b0e..9bcd456e 100644 --- a/linsolve/impl/psb_dgcr.f90 +++ b/linsolve/impl/psb_dgcr.f90 @@ -130,14 +130,13 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& type(psb_d_vect_type) :: r real(psb_dpk_) :: r_norm, b_norm, a_norm, derr - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me integer(psb_ipk_) :: i, j, it, itx, istop_, itmax_, itrace_, nl, m, nrst real(psb_dpk_) :: hjj - real(psb_dpk_), allocatable, target :: aux(:) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='GCR' @@ -223,10 +222,6 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 endif - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c_scale(nl+1),c(nl+1),z(nl+1), alpha(nl+1), stat=info) - h = dzero if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -261,7 +256,7 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(done, b, dzero, r, desc_a, info) - call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + call psb_spmm(-done,a,x,done,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -278,9 +273,9 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 j = it !Apply preconditioner - call prec%apply(r,z(j),desc_a,info,work=aux) + call prec%apply(r,z(j),desc_a,info) - call psb_spmm(done,a,z(j),dzero,c(1),desc_a,info,work=aux) + call psb_spmm(done,a,z(j),dzero,c(1),desc_a,info) do i =1, j - 1 h(i,j) = psb_gedot(c_scale(i), c(i), desc_a, info) @@ -347,7 +342,7 @@ subroutine psb_dgcr_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(c(i),desc_a,info) end do - if (info == psb_success_) deallocate(aux,h,c_scale,z,c,alpha,stat=info) + if (info == psb_success_) deallocate(h,c_scale,z,c,alpha,stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_drgmres.f90 b/linsolve/impl/psb_drgmres.f90 index e0d78382..5ca9aeb9 100644 --- a/linsolve/impl/psb_drgmres.f90 +++ b/linsolve/impl/psb_drgmres.f90 @@ -124,13 +124,12 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - real(psb_dpk_), allocatable :: aux(:) real(psb_dpk_), allocatable :: c(:), s(:), h(:,:), rs(:), rst(:) type(psb_d_vect_type), allocatable :: v(:) type(psb_d_vect_type) :: w, w1, xt real(psb_dpk_) :: tmp real(psb_dpk_) :: scal, gm, rti, rti1 - integer(psb_ipk_) ::litmax, naux, it, k, itrace_,& + integer(psb_ipk_) ::litmax, it, k, itrace_,& & n_row, n_col, nl integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False., use_srot=.true. @@ -229,11 +228,6 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c(nl+1),s(nl+1),rs(nl+1), rst(nl+1),stat=info) - if (info == psb_success_) call psb_geall(v,desc_a,info,n=nl+1) if (info == psb_success_) call psb_geall(w,desc_a,info) if (info == psb_success_) call psb_geall(w1,desc_a,info) @@ -266,7 +260,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-done,a,x,done,v(1),desc_a,info,work=aux) + call psb_spmm(-done,a,x,done,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -301,7 +295,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-done,a,x,done,v(1),desc_a,info,work=aux) + call psb_spmm(-done,a,x,done,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -358,7 +352,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& itx = itx + 1 call prec%apply(v(i),w1,desc_a,info) - call psb_spmm(done,a,w1,dzero,w,desc_a,info,work=aux) + call psb_spmm(done,a,w1,dzero,w,desc_a,info) ! do k = 1, i @@ -397,7 +391,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(xt,desc_a,info) call psb_geaxpby(done,x,done,xt,desc_a,info) call psb_geaxpby(done,b,dzero,w1,desc_a,info) - call psb_spmm(-done,a,xt,done,w1,desc_a,info,work=aux) + call psb_spmm(-done,a,xt,done,w1,desc_a,info) rni = psb_geamax(w1,desc_a,info) xni = psb_geamax(xt,desc_a,info) errnum = rni @@ -490,7 +484,7 @@ subroutine psb_drgmres_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(w,desc_a,info) if (info == psb_success_) call psb_gefree(w1,desc_a,info) if (info == psb_success_) call psb_gefree(xt,desc_a,info) - if (info == psb_success_) deallocate(aux,h,c,s,rs,rst, stat=info) + if (info == psb_success_) deallocate(h,c,s,rs,rst, stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_drichardson.f90 b/linsolve/impl/psb_drichardson.f90 index b0a53a4b..df08f8a8 100644 --- a/linsolve/impl/psb_drichardson.f90 +++ b/linsolve/impl/psb_drichardson.f90 @@ -91,12 +91,11 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& logical :: do_alloc_wrk type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: me,np,err_act - real(psb_dpk_), allocatable, target :: aux(:) type(psb_d_vect_type), allocatable, target :: wwrk(:) type(psb_d_vect_type), pointer :: q, p, r, z, w real(psb_dpk_) :: derr - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& - & n_col, n_row,ieg,nspl, istebz + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& + & n_col, n_row,ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_itconv_type) :: stopdat @@ -155,8 +154,6 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -171,7 +168,7 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& w => wwrk(5) call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -186,17 +183,16 @@ Subroutine psb_drichardson_vect(a,prec,b,x,eps,desc_a,info,& End If loop: do itx=1,itmax_ - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) call psb_geaxpby(done,z,done,x,desc_a,info) call psb_geaxpby(done,b,dzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,r,desc_a,info) if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop end do loop call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) if(info /= psb_success_) then diff --git a/linsolve/impl/psb_sbicg.f90 b/linsolve/impl/psb_sbicg.f90 index 1b5f1fb8..d981e42d 100644 --- a/linsolve/impl/psb_sbicg.f90 +++ b/linsolve/impl/psb_sbicg.f90 @@ -112,11 +112,10 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), optional, intent(out) :: iter real(psb_spk_), optional, intent(out) :: err ! !$ local data - real(psb_spk_), allocatable, target :: aux(:) type(psb_s_vect_type), allocatable, target :: wwrk(:) type(psb_s_vect_type), pointer :: ww, q, r, p,& & zt, pt, z, rt, qt - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, istop_, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -187,10 +186,6 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - - naux=4*n_col - - allocate(aux(naux),stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=9_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) if(info /= psb_success_) then @@ -239,7 +234,7 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (debug_level >= psb_debug_ext_)& & write(debug_unit,*) me,' ',trim(name),' Done spmm',info if (info == psb_success_) call psb_geaxpby(sone,r,szero,rt,desc_a,info) @@ -265,8 +260,8 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& if (debug_level >= psb_debug_ext_) & & write(debug_unit,*) me,' ',trim(name),'iteration: ',itx - call prec%apply(r,z,desc_a,info,work=aux) - if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c',work=aux) + call prec%apply(r,z,desc_a,info) + if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c') rho_old = rho rho = psb_gedot(rt,z,desc_a,info) @@ -286,10 +281,8 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,zt,beta,pt,desc_a,info) end if - call psb_spmm(sone,a,p,szero,q,desc_a,info,& - & work=aux) - call psb_spmm(sone,a,pt,szero,qt,desc_a,info,& - & work=aux,trans='c') + call psb_spmm(sone,a,p,szero,q,desc_a,info) + call psb_spmm(sone,a,pt,szero,qt,desc_a,info,trans='c') sigma = psb_gedot(pt,q,desc_a,info) if (sigma == szero) then @@ -319,7 +312,6 @@ subroutine psb_sbicg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_scg.F90 b/linsolve/impl/psb_scg.F90 index c116edc4..187fe7f4 100644 --- a/linsolve/impl/psb_scg.F90 +++ b/linsolve/impl/psb_scg.F90 @@ -113,12 +113,12 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err,cond ! = Local data - real(psb_spk_), allocatable, target :: aux(:),td(:),tu(:),eig(:),ewrk(:) + real(psb_spk_), allocatable, target :: td(:),tu(:),eig(:),ewrk(:) integer(psb_mpk_), allocatable :: ibl(:), ispl(:), iwrk(:) type(psb_s_vect_type), allocatable, target :: wwrk(:) type(psb_s_vect_type), pointer :: q, p, r, z, w real(psb_spk_) :: alpha, beta, rho, rho_old, sigma,alpha_old,beta_old - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,err_act, ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -171,8 +171,6 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -223,7 +221,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -243,7 +241,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 itx = itx + 1 - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) rho_old = rho rho = psb_gedot(r,z,desc_a,info) @@ -260,7 +258,7 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone,z,beta,p,desc_a,info) end if - call psb_spmm(sone,a,p,szero,q,desc_a,info,work=aux) + call psb_spmm(sone,a,p,szero,q,desc_a,info) sigma = psb_gedot(p,q,desc_a,info) if (sigma == szero) then if (debug_level >= psb_debug_ext_)& @@ -318,7 +316,6 @@ subroutine psb_scg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_scgs.f90 b/linsolve/impl/psb_scgs.f90 index 4034283e..e57abda1 100644 --- a/linsolve/impl/psb_scgs.f90 +++ b/linsolve/impl/psb_scgs.f90 @@ -110,11 +110,10 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - real(psb_spk_), allocatable, target :: aux(:) type(psb_s_vect_type), allocatable, target :: wwrk(:) type(psb_s_vect_type), pointer :: ww, q, r, p, v,& & s, z, f, rt, qt, uv - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col,istop_, itx, err_act integer(psb_lpk_) :: mglob type(psb_ctxt_type) :: ctxt @@ -165,8 +164,6 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - Allocate(aux(naux),stat=info) if (info == psb_success_) Call psb_geall(wwrk,desc_a,info,n=11_psb_ipk_) if (info == psb_success_) Call psb_geasb(wwrk,desc_a,info,mold=x%v) if (info /= psb_success_) Then @@ -215,7 +212,7 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info == psb_success_) call psb_geaxpby(sone,r,szero,rt,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -260,10 +257,9 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(sone,uv,beta,p,desc_a,info) end if - if (info == psb_success_) call prec%apply(p,f,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(p,f,desc_a,info) - if (info == psb_success_) call psb_spmm(sone,a,f,szero,v,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(sone,a,f,szero,v,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='First loop part ') @@ -285,12 +281,11 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(sone,uv,szero,s,desc_a,info) if (info == psb_success_) call psb_geaxpby(sone,q,sone,s,desc_a,info) - if (info == psb_success_) call prec%apply(s,z,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(s,z,desc_a,info) if (info == psb_success_) call psb_geaxpby(alpha,z,sone,x,desc_a,info) - if (info == psb_success_) call psb_spmm(sone,a,z,szero,qt,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(sone,a,z,szero,qt,desc_a,info) if (info == psb_success_) call psb_geaxpby(-alpha,qt,sone,r,desc_a,info) @@ -312,7 +307,6 @@ Subroutine psb_scgs_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_scgstab.f90 b/linsolve/impl/psb_scgstab.f90 index a0b57fa8..d822cf8a 100644 --- a/linsolve/impl/psb_scgstab.f90 +++ b/linsolve/impl/psb_scgstab.f90 @@ -110,10 +110,10 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = Local data - real(psb_spk_), allocatable, target :: aux(:),wwrk(:,:) + real(psb_spk_), allocatable, target :: wwrk(:,:) type(psb_s_vect_type) :: q, r, p, v, s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it,itrace_,& + integer(psb_ipk_) :: itmax_, it,itrace_,& & n_row, n_col integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -179,14 +179,6 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_errpush(info,name,a_err='psb_chkvect on B') goto 9999 end if - naux=6*n_col - if (info == psb_success_) allocate(aux(naux),stat=info) - if (info /= psb_success_) then - info=psb_err_alloc_dealloc_ - call psb_errpush(info,name) - goto 9999 - End If - call psb_geasb(q,desc_a,info,mold=x%v,scratch=.true.) call psb_geasb(r,desc_a,info,mold=x%v,scratch=.true.) @@ -230,7 +222,7 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist it = 0 call psb_geaxpby(sone,b,szero,r,desc_a,info) - call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + call psb_spmm(-sone,a,x,sone,r,desc_a,info) call psb_geaxpby(sone,r,szero,q,desc_a,info) ! Perhaps we already satisfy the convergence criterion... @@ -279,10 +271,9 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_geaxpby(sone,r,beta,p,desc_a,info) End If - call prec%apply(p,f,desc_a,info,work=aux) + call prec%apply(p,f,desc_a,info) - call psb_spmm(sone,a,f,szero,v,desc_a,info,& - & work=aux) + call psb_spmm(sone,a,f,szero,v,desc_a,info) sigma = psb_gedot(q,v,desc_a,info) @@ -316,8 +307,8 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist end if - call prec%apply(s,z,desc_a,info,work=aux) - Call psb_spmm(sone,a,z,szero,t,desc_a,info,work=aux) + call prec%apply(s,z,desc_a,info) + Call psb_spmm(sone,a,z,szero,t,desc_a,info) if(psb_errstatus_fatal()) then call psb_errpush(psb_err_from_subroutine_,name,a_err='precaply/spmm') @@ -367,8 +358,6 @@ Subroutine psb_scgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr - deallocate(aux,stat=info) - call x%sync() call psb_gefree(q,desc_a,info) call psb_gefree(r,desc_a,info) diff --git a/linsolve/impl/psb_scgstabl.f90 b/linsolve/impl/psb_scgstabl.f90 index e55d2746..e5ca2103 100644 --- a/linsolve/impl/psb_scgstabl.f90 +++ b/linsolve/impl/psb_scgstabl.f90 @@ -121,13 +121,13 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - real(psb_spk_), allocatable, target :: aux(:), gamma(:),& + real(psb_spk_), allocatable, target :: gamma(:),& & gamma1(:), gamma2(:), taum(:,:), sigma(:) type(psb_s_vect_type), allocatable, target :: wwrk(:),uh(:), rh(:) type(psb_s_vect_type), Pointer :: ww, q, r, rt0, p, v, & & s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, nl, err_act integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False. @@ -213,10 +213,6 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux),gamma(0:nl),gamma1(nl),& - &gamma2(nl),taum(nl,nl),sigma(nl), stat=info) - if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -263,7 +259,7 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info == psb_success_) call prec%apply(r,desc_a,info) @@ -318,7 +314,7 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& ! = call psb_geaxpby(sone,rh(:,0:j),-beta,uh(:,0:j),desc_a,info) call psb_geaxpby(sone,rh(k),-beta,uh(k),desc_a,info) end do - call psb_spmm(sone,a,uh(j),szero,uh(j+1),desc_a,info,work=aux) + call psb_spmm(sone,a,uh(j),szero,uh(j+1),desc_a,info) call prec%apply(uh(j+1),desc_a,info) @@ -340,7 +336,7 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(-alpha,uh(k+1),sone,rh(k),desc_a,info) end do call psb_geaxpby(alpha,uh(0),sone,x,desc_a,info) - call psb_spmm(sone,a,rh(j),szero,rh(j+1),desc_a,info,work=aux) + call psb_spmm(sone,a,rh(j),szero,rh(j+1),desc_a,info) call prec%apply(rh(j+1),desc_a,info) @@ -403,7 +399,6 @@ Subroutine psb_scgstabl_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(uh,desc_a,info) if (info == psb_success_) call psb_gefree(rh,desc_a,info) if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_sfcg.F90 b/linsolve/impl/psb_sfcg.F90 index 449942cd..ca5fee9c 100644 --- a/linsolve/impl/psb_sfcg.F90 +++ b/linsolve/impl/psb_sfcg.F90 @@ -125,12 +125,11 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& real(psb_spk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me - real(psb_spk_), allocatable, target :: aux(:) real(psb_spk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat @@ -177,9 +176,6 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) - if (present(itmax)) then itmax_ = itmax @@ -234,7 +230,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v=Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(sone,a,v,szero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -289,7 +285,7 @@ subroutine psb_sfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v = Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(sone,a,v,szero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& diff --git a/linsolve/impl/psb_sgcr.f90 b/linsolve/impl/psb_sgcr.f90 index b2d09d3e..d0668d7d 100644 --- a/linsolve/impl/psb_sgcr.f90 +++ b/linsolve/impl/psb_sgcr.f90 @@ -130,14 +130,13 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& type(psb_s_vect_type) :: r real(psb_dpk_) :: r_norm, b_norm, a_norm, derr - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me integer(psb_ipk_) :: i, j, it, itx, istop_, itmax_, itrace_, nl, m, nrst real(psb_spk_) :: hjj - real(psb_spk_), allocatable, target :: aux(:) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='GCR' @@ -223,17 +222,9 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 endif - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c_scale(nl+1),c(nl+1),z(nl+1), alpha(nl+1), stat=info) h = szero - if (info /= psb_success_) then - info=psb_err_from_subroutine_non_ - call psb_errpush(info,name) - goto 9999 - end if - + call psb_geasb(r, desc_a,info, scratch=.true.,mold=x%v) do i =1,nl+1 @@ -261,7 +252,7 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(sone, b, szero, r, desc_a, info) - call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -278,9 +269,9 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 j = it !Apply preconditioner - call prec%apply(r,z(j),desc_a,info,work=aux) + call prec%apply(r,z(j),desc_a,info) - call psb_spmm(sone,a,z(j),szero,c(1),desc_a,info,work=aux) + call psb_spmm(sone,a,z(j),szero,c(1),desc_a,info) do i =1, j - 1 h(i,j) = psb_gedot(c_scale(i), c(i), desc_a, info) @@ -347,7 +338,7 @@ subroutine psb_sgcr_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(c(i),desc_a,info) end do - if (info == psb_success_) deallocate(aux,h,c_scale,z,c,alpha,stat=info) + if (info == psb_success_) deallocate(h,c_scale,z,c,alpha,stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_srgmres.f90 b/linsolve/impl/psb_srgmres.f90 index 32129e35..4a57da7b 100644 --- a/linsolve/impl/psb_srgmres.f90 +++ b/linsolve/impl/psb_srgmres.f90 @@ -124,13 +124,12 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_spk_), Optional, Intent(out) :: err ! = local data - real(psb_spk_), allocatable :: aux(:) real(psb_spk_), allocatable :: c(:), s(:), h(:,:), rs(:), rst(:) type(psb_s_vect_type), allocatable :: v(:) type(psb_s_vect_type) :: w, w1, xt real(psb_spk_) :: tmp real(psb_spk_) :: scal, gm, rti, rti1 - integer(psb_ipk_) ::litmax, naux, it, k, itrace_,& + integer(psb_ipk_) ::litmax, it, k, itrace_,& & n_row, n_col, nl integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False., use_srot=.true. @@ -229,11 +228,6 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c(nl+1),s(nl+1),rs(nl+1), rst(nl+1),stat=info) - if (info == psb_success_) call psb_geall(v,desc_a,info,n=nl+1) if (info == psb_success_) call psb_geall(w,desc_a,info) if (info == psb_success_) call psb_geall(w1,desc_a,info) @@ -266,7 +260,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-sone,a,x,sone,v(1),desc_a,info,work=aux) + call psb_spmm(-sone,a,x,sone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -301,7 +295,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-sone,a,x,sone,v(1),desc_a,info,work=aux) + call psb_spmm(-sone,a,x,sone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -358,7 +352,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& itx = itx + 1 call prec%apply(v(i),w1,desc_a,info) - call psb_spmm(sone,a,w1,szero,w,desc_a,info,work=aux) + call psb_spmm(sone,a,w1,szero,w,desc_a,info) ! do k = 1, i @@ -397,7 +391,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(xt,desc_a,info) call psb_geaxpby(sone,x,sone,xt,desc_a,info) call psb_geaxpby(sone,b,szero,w1,desc_a,info) - call psb_spmm(-sone,a,xt,sone,w1,desc_a,info,work=aux) + call psb_spmm(-sone,a,xt,sone,w1,desc_a,info) rni = psb_geamax(w1,desc_a,info) xni = psb_geamax(xt,desc_a,info) errnum = rni @@ -490,7 +484,7 @@ subroutine psb_srgmres_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(w,desc_a,info) if (info == psb_success_) call psb_gefree(w1,desc_a,info) if (info == psb_success_) call psb_gefree(xt,desc_a,info) - if (info == psb_success_) deallocate(aux,h,c,s,rs,rst, stat=info) + if (info == psb_success_) deallocate(h,c,s,rs,rst, stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_srichardson.f90 b/linsolve/impl/psb_srichardson.f90 index 660778fc..3801c8ad 100644 --- a/linsolve/impl/psb_srichardson.f90 +++ b/linsolve/impl/psb_srichardson.f90 @@ -91,11 +91,10 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& logical :: do_alloc_wrk type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: me,np,err_act - real(psb_spk_), allocatable, target :: aux(:) type(psb_s_vect_type), allocatable, target :: wwrk(:) type(psb_s_vect_type), pointer :: q, p, r, z, w real(psb_dpk_) :: derr - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -155,8 +154,6 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -171,7 +168,7 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& w => wwrk(5) call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -186,17 +183,16 @@ Subroutine psb_srichardson_vect(a,prec,b,x,eps,desc_a,info,& End If loop: do itx=1,itmax_ - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) call psb_geaxpby(sone,z,sone,x,desc_a,info) call psb_geaxpby(sone,b,szero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,r,desc_a,info) if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop end do loop call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) if(info /= psb_success_) then diff --git a/linsolve/impl/psb_zbicg.f90 b/linsolve/impl/psb_zbicg.f90 index 6a3e0215..be2bb969 100644 --- a/linsolve/impl/psb_zbicg.f90 +++ b/linsolve/impl/psb_zbicg.f90 @@ -112,11 +112,10 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), optional, intent(out) :: iter real(psb_dpk_), optional, intent(out) :: err ! !$ local data - complex(psb_dpk_), allocatable, target :: aux(:) type(psb_z_vect_type), allocatable, target :: wwrk(:) type(psb_z_vect_type), pointer :: ww, q, r, p,& & zt, pt, z, rt, qt - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, istop_, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -188,9 +187,6 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& end if - naux=4*n_col - - allocate(aux(naux),stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=9_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v) if(info /= psb_success_) then @@ -239,7 +235,7 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (debug_level >= psb_debug_ext_)& & write(debug_unit,*) me,' ',trim(name),' Done spmm',info if (info == psb_success_) call psb_geaxpby(zone,r,zzero,rt,desc_a,info) @@ -265,8 +261,8 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& if (debug_level >= psb_debug_ext_) & & write(debug_unit,*) me,' ',trim(name),'iteration: ',itx - call prec%apply(r,z,desc_a,info,work=aux) - if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c',work=aux) + call prec%apply(r,z,desc_a,info) + if (info == psb_success_) call prec%apply(rt,zt,desc_a,info,trans='c') rho_old = rho rho = psb_gedot(rt,z,desc_a,info) @@ -286,10 +282,8 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,zt,beta,pt,desc_a,info) end if - call psb_spmm(zone,a,p,zzero,q,desc_a,info,& - & work=aux) - call psb_spmm(zone,a,pt,zzero,qt,desc_a,info,& - & work=aux,trans='c') + call psb_spmm(zone,a,p,zzero,q,desc_a,info) + call psb_spmm(zone,a,pt,zzero,qt,desc_a,info,trans='c') sigma = psb_gedot(pt,q,desc_a,info) if (sigma == zzero) then @@ -319,7 +313,6 @@ subroutine psb_zbicg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_zcg.F90 b/linsolve/impl/psb_zcg.F90 index 6ca5909c..01ce57f8 100644 --- a/linsolve/impl/psb_zcg.F90 +++ b/linsolve/impl/psb_zcg.F90 @@ -113,12 +113,12 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err,cond ! = Local data - complex(psb_dpk_), allocatable, target :: aux(:),td(:),tu(:),eig(:),ewrk(:) + complex(psb_dpk_), allocatable, target :: td(:),tu(:),eig(:),ewrk(:) integer(psb_mpk_), allocatable :: ibl(:), ispl(:), iwrk(:) type(psb_z_vect_type), allocatable, target :: wwrk(:) type(psb_z_vect_type), pointer :: q, p, r, z, w complex(psb_dpk_) :: alpha, beta, rho, rho_old, sigma,alpha_old,beta_old - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,err_act, ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -171,8 +171,6 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -215,7 +213,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -235,7 +233,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 itx = itx + 1 - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) rho_old = rho rho = psb_gedot(r,z,desc_a,info) @@ -252,7 +250,7 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone,z,beta,p,desc_a,info) end if - call psb_spmm(zone,a,p,zzero,q,desc_a,info,work=aux) + call psb_spmm(zone,a,p,zzero,q,desc_a,info) sigma = psb_gedot(p,q,desc_a,info) if (sigma == zzero) then if (debug_level >= psb_debug_ext_)& @@ -285,7 +283,6 @@ subroutine psb_zcg_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_zcgs.f90 b/linsolve/impl/psb_zcgs.f90 index c5140545..7819e720 100644 --- a/linsolve/impl/psb_zcgs.f90 +++ b/linsolve/impl/psb_zcgs.f90 @@ -110,11 +110,10 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - complex(psb_dpk_), allocatable, target :: aux(:) type(psb_z_vect_type), allocatable, target :: wwrk(:) type(psb_z_vect_type), pointer :: ww, q, r, p, v,& & s, z, f, rt, qt, uv - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col,istop_, itx, err_act integer(psb_lpk_) :: mglob type(psb_ctxt_type) :: ctxt @@ -165,8 +164,6 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - Allocate(aux(naux),stat=info) if (info == psb_success_) Call psb_geall(wwrk,desc_a,info,n=11_psb_ipk_) if (info == psb_success_) Call psb_geasb(wwrk,desc_a,info,mold=x%v) if (info /= psb_success_) Then @@ -215,7 +212,7 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& if (itx >= itmax_) exit restart it = 0 call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info == psb_success_) call psb_geaxpby(zone,r,zzero,rt,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ @@ -260,10 +257,9 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(zone,uv,beta,p,desc_a,info) end if - if (info == psb_success_) call prec%apply(p,f,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(p,f,desc_a,info) - if (info == psb_success_) call psb_spmm(zone,a,f,zzero,v,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(zone,a,f,zzero,v,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='First loop part ') @@ -285,12 +281,11 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_geaxpby(zone,uv,zzero,s,desc_a,info) if (info == psb_success_) call psb_geaxpby(zone,q,zone,s,desc_a,info) - if (info == psb_success_) call prec%apply(s,z,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(s,z,desc_a,info) if (info == psb_success_) call psb_geaxpby(alpha,z,zone,x,desc_a,info) - if (info == psb_success_) call psb_spmm(zone,a,z,zzero,qt,desc_a,info,& - & work=aux) + if (info == psb_success_) call psb_spmm(zone,a,z,zzero,qt,desc_a,info) if (info == psb_success_) call psb_geaxpby(-alpha,qt,zone,r,desc_a,info) @@ -312,7 +307,6 @@ Subroutine psb_zcgs_vect(a,prec,b,x,eps,desc_a,info,& if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_zcgstab.f90 b/linsolve/impl/psb_zcgstab.f90 index e04cd7c4..0b4cb011 100644 --- a/linsolve/impl/psb_zcgstab.f90 +++ b/linsolve/impl/psb_zcgstab.f90 @@ -110,10 +110,10 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = Local data - complex(psb_dpk_), allocatable, target :: aux(:),wwrk(:,:) + complex(psb_dpk_), allocatable, target :: wwrk(:,:) type(psb_z_vect_type) :: q, r, p, v, s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it,itrace_,& + integer(psb_ipk_) :: itmax_, it,itrace_,& & n_row, n_col integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -179,13 +179,6 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_errpush(info,name,a_err='psb_chkvect on B') goto 9999 end if - naux=6*n_col - if (info == psb_success_) allocate(aux(naux),stat=info) - if (info /= psb_success_) then - info=psb_err_alloc_dealloc_ - call psb_errpush(info,name) - goto 9999 - End If call psb_geasb(q,desc_a,info,mold=x%v,scratch=.true.) @@ -230,7 +223,7 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist it = 0 call psb_geaxpby(zone,b,zzero,r,desc_a,info) - call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + call psb_spmm(-zone,a,x,zone,r,desc_a,info) call psb_geaxpby(zone,r,zzero,q,desc_a,info) ! Perhaps we already satisfy the convergence criterion... @@ -279,10 +272,9 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_geaxpby(zone,r,beta,p,desc_a,info) End If - call prec%apply(p,f,desc_a,info,work=aux) + call prec%apply(p,f,desc_a,info) - call psb_spmm(zone,a,f,zzero,v,desc_a,info,& - & work=aux) + call psb_spmm(zone,a,f,zzero,v,desc_a,info) sigma = psb_gedot(q,v,desc_a,info) @@ -316,8 +308,8 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist end if - call prec%apply(s,z,desc_a,info,work=aux) - Call psb_spmm(zone,a,z,zzero,t,desc_a,info,work=aux) + call prec%apply(s,z,desc_a,info) + Call psb_spmm(zone,a,z,zzero,t,desc_a,info) if(psb_errstatus_fatal()) then call psb_errpush(psb_err_from_subroutine_,name,a_err='precaply/spmm') @@ -367,8 +359,6 @@ Subroutine psb_zcgstab_vect(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,ist call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr - deallocate(aux,stat=info) - call x%sync() call psb_gefree(q,desc_a,info) call psb_gefree(r,desc_a,info) diff --git a/linsolve/impl/psb_zcgstabl.f90 b/linsolve/impl/psb_zcgstabl.f90 index 93abd056..62faafca 100644 --- a/linsolve/impl/psb_zcgstabl.f90 +++ b/linsolve/impl/psb_zcgstabl.f90 @@ -121,13 +121,13 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - complex(psb_dpk_), allocatable, target :: aux(:), gamma(:),& + complex(psb_dpk_), allocatable, target :: gamma(:),& & gamma1(:), gamma2(:), taum(:,:), sigma(:) type(psb_z_vect_type), allocatable, target :: wwrk(:),uh(:), rh(:) type(psb_z_vect_type), Pointer :: ww, q, r, rt0, p, v, & & s, t, z, f - integer(psb_ipk_) :: itmax_, naux, it, itrace_,& + integer(psb_ipk_) :: itmax_, it, itrace_,& & n_row, n_col, nl, err_act integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False. @@ -213,10 +213,6 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux),gamma(0:nl),gamma1(nl),& - &gamma2(nl),taum(nl,nl),sigma(nl), stat=info) - if (info /= psb_success_) then info=psb_err_alloc_dealloc_ call psb_errpush(info,name) @@ -263,7 +259,7 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& it = 0 call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info == psb_success_) call prec%apply(r,desc_a,info) @@ -318,7 +314,7 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& ! = call psb_geaxpby(zone,rh(:,0:j),-beta,uh(:,0:j),desc_a,info) call psb_geaxpby(zone,rh(k),-beta,uh(k),desc_a,info) end do - call psb_spmm(zone,a,uh(j),zzero,uh(j+1),desc_a,info,work=aux) + call psb_spmm(zone,a,uh(j),zzero,uh(j+1),desc_a,info) call prec%apply(uh(j+1),desc_a,info) @@ -340,7 +336,7 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(-alpha,uh(k+1),zone,rh(k),desc_a,info) end do call psb_geaxpby(alpha,uh(0),zone,x,desc_a,info) - call psb_spmm(zone,a,rh(j),zzero,rh(j+1),desc_a,info,work=aux) + call psb_spmm(zone,a,rh(j),zzero,rh(j+1),desc_a,info) call prec%apply(rh(j+1),desc_a,info) @@ -403,7 +399,6 @@ Subroutine psb_zcgstabl_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(uh,desc_a,info) if (info == psb_success_) call psb_gefree(rh,desc_a,info) if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if (info /= psb_success_) then call psb_errpush(info,name) goto 9999 diff --git a/linsolve/impl/psb_zfcg.F90 b/linsolve/impl/psb_zfcg.F90 index 1ab036fe..a11fec1d 100644 --- a/linsolve/impl/psb_zfcg.F90 +++ b/linsolve/impl/psb_zfcg.F90 @@ -125,12 +125,11 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& complex(psb_dpk_) :: alpha, beta, delta, gamma, theta real(psb_dpk_) :: derr integer(psb_ipk_) :: i, idx, nc2l, it, itx, istop_, itmax_, itrace_ - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me - complex(psb_dpk_), allocatable, target :: aux(:) complex(psb_dpk_) :: vres(3) character(len=20) :: name type(psb_itconv_type) :: stopdat @@ -177,10 +176,6 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) - - if (present(itmax)) then itmax_ = itmax else @@ -234,7 +229,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v=Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(zone,a,v,zzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -289,7 +284,7 @@ subroutine psb_zfcg_vect(a,prec,b,x,eps,desc_a,info,& ! Apply the preconditioner v = Pr ! Compute w = Av - call prec%apply(r,v,desc_a,info,work=aux) + call prec%apply(r,v,desc_a,info) if (info == psb_success_) call psb_spmm(zone,a,v,zzero,w,desc_a,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& diff --git a/linsolve/impl/psb_zgcr.f90 b/linsolve/impl/psb_zgcr.f90 index e48fc4c1..9743f63c 100644 --- a/linsolve/impl/psb_zgcr.f90 +++ b/linsolve/impl/psb_zgcr.f90 @@ -130,14 +130,13 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& type(psb_z_vect_type) :: r real(psb_dpk_) :: r_norm, b_norm, a_norm, derr - integer(psb_ipk_) :: n_col, naux, err_act + integer(psb_ipk_) :: n_col, err_act integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np, me integer(psb_ipk_) :: i, j, it, itx, istop_, itmax_, itrace_, nl, m, nrst complex(psb_dpk_) :: hjj - complex(psb_dpk_), allocatable, target :: aux(:) character(len=20) :: name type(psb_itconv_type) :: stopdat character(len=*), parameter :: methdname='GCR' @@ -223,16 +222,7 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 endif - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c_scale(nl+1),c(nl+1),z(nl+1), alpha(nl+1), stat=info) - h = zzero - if (info /= psb_success_) then - info=psb_err_from_subroutine_non_ - call psb_errpush(info,name) - goto 9999 - end if call psb_geasb(r, desc_a,info, scratch=.true.,mold=x%v) @@ -261,7 +251,7 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby(zone, b, zzero, r, desc_a, info) - call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -278,9 +268,9 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& it = it + 1 j = it !Apply preconditioner - call prec%apply(r,z(j),desc_a,info,work=aux) + call prec%apply(r,z(j),desc_a,info) - call psb_spmm(zone,a,z(j),zzero,c(1),desc_a,info,work=aux) + call psb_spmm(zone,a,z(j),zzero,c(1),desc_a,info) do i =1, j - 1 h(i,j) = psb_gedot(c_scale(i), c(i), desc_a, info) @@ -347,7 +337,7 @@ subroutine psb_zgcr_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(c(i),desc_a,info) end do - if (info == psb_success_) deallocate(aux,h,c_scale,z,c,alpha,stat=info) + if (info == psb_success_) deallocate(h,c_scale,z,c,alpha,stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_zrgmres.f90 b/linsolve/impl/psb_zrgmres.f90 index c6bcc018..56bc3a29 100644 --- a/linsolve/impl/psb_zrgmres.f90 +++ b/linsolve/impl/psb_zrgmres.f90 @@ -124,13 +124,12 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& integer(psb_ipk_), Optional, Intent(out) :: iter Real(psb_dpk_), Optional, Intent(out) :: err ! = local data - complex(psb_dpk_), allocatable :: aux(:) complex(psb_dpk_), allocatable :: c(:), s(:), h(:,:), rs(:), rst(:) type(psb_z_vect_type), allocatable :: v(:) type(psb_z_vect_type) :: w, w1, xt real(psb_dpk_) :: tmp complex(psb_dpk_) :: scal, gm, rti, rti1 - integer(psb_ipk_) ::litmax, naux, it, k, itrace_,& + integer(psb_ipk_) ::litmax, it, k, itrace_,& & n_row, n_col, nl integer(psb_lpk_) :: mglob Logical, Parameter :: exchange=.True., noexchange=.False., use_srot=.true. @@ -229,11 +228,6 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - - naux=4*n_col - allocate(aux(naux),h(nl+1,nl+1),& - &c(nl+1),s(nl+1),rs(nl+1), rst(nl+1),stat=info) - if (info == psb_success_) call psb_geall(v,desc_a,info,n=nl+1) if (info == psb_success_) call psb_geall(w,desc_a,info) if (info == psb_success_) call psb_geall(w1,desc_a,info) @@ -266,7 +260,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-zone,a,x,zone,v(1),desc_a,info,work=aux) + call psb_spmm(-zone,a,x,zone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -301,7 +295,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - call psb_spmm(-zone,a,x,zone,v(1),desc_a,info,work=aux) + call psb_spmm(-zone,a,x,zone,v(1),desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -358,7 +352,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& itx = itx + 1 call prec%apply(v(i),w1,desc_a,info) - call psb_spmm(zone,a,w1,zzero,w,desc_a,info,work=aux) + call psb_spmm(zone,a,w1,zzero,w,desc_a,info) ! do k = 1, i @@ -397,7 +391,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& call prec%apply(xt,desc_a,info) call psb_geaxpby(zone,x,zone,xt,desc_a,info) call psb_geaxpby(zone,b,zzero,w1,desc_a,info) - call psb_spmm(-zone,a,xt,zone,w1,desc_a,info,work=aux) + call psb_spmm(-zone,a,xt,zone,w1,desc_a,info) rni = psb_geamax(w1,desc_a,info) xni = psb_geamax(xt,desc_a,info) errnum = rni @@ -490,7 +484,7 @@ subroutine psb_zrgmres_vect(a,prec,b,x,eps,desc_a,info,& if (info == psb_success_) call psb_gefree(w,desc_a,info) if (info == psb_success_) call psb_gefree(w1,desc_a,info) if (info == psb_success_) call psb_gefree(xt,desc_a,info) - if (info == psb_success_) deallocate(aux,h,c,s,rs,rst, stat=info) + if (info == psb_success_) deallocate(h,c,s,rs,rst, stat=info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) diff --git a/linsolve/impl/psb_zrichardson.f90 b/linsolve/impl/psb_zrichardson.f90 index 4c2bc567..1cbba370 100644 --- a/linsolve/impl/psb_zrichardson.f90 +++ b/linsolve/impl/psb_zrichardson.f90 @@ -91,11 +91,10 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& logical :: do_alloc_wrk type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: me,np,err_act - complex(psb_dpk_), allocatable, target :: aux(:) type(psb_z_vect_type), allocatable, target :: wwrk(:) type(psb_z_vect_type), pointer :: q, p, r, z, w real(psb_dpk_) :: derr - integer(psb_ipk_) :: itmax_, istop_, naux, it, itx, itrace_,& + integer(psb_ipk_) :: itmax_, istop_, it, itx, itrace_,& & n_col, n_row,ieg,nspl, istebz integer(psb_lpk_) :: mglob integer(psb_ipk_) :: debug_level, debug_unit @@ -155,8 +154,6 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& goto 9999 end if - naux=4*n_col - allocate(aux(naux), stat=info) if (info == psb_success_) call psb_geall(wwrk,desc_a,info,n=5_psb_ipk_) if (info == psb_success_) call psb_geasb(wwrk,desc_a,info,mold=x%v,scratch=.true.) if (info /= psb_success_) then @@ -171,7 +168,7 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& w => wwrk(5) call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -186,17 +183,16 @@ Subroutine psb_zrichardson_vect(a,prec,b,x,eps,desc_a,info,& End If loop: do itx=1,itmax_ - call prec%apply(r,z,desc_a,info,work=aux) + call prec%apply(r,z,desc_a,info) call psb_geaxpby(zone,z,zone,x,desc_a,info) call psb_geaxpby(zone,b,zzero,r,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,r,desc_a,info) if (psb_check_conv(methdname,itx,x,r,desc_a,stopdat,info)) exit loop end do loop call psb_end_conv(methdname,itx,desc_a,stopdat,info,derr,iter) if (present(err)) err = derr if (info == psb_success_) call psb_gefree(wwrk,desc_a,info) - if (info == psb_success_) deallocate(aux,stat=info) if ((info==psb_success_).and.do_alloc_wrk) call prec%free_wrk(info) if(info /= psb_success_) then diff --git a/log.txt b/log.txt index ae2ce3aa..8ae9e16a 100644 --- a/log.txt +++ b/log.txt @@ -4,8 +4,200 @@ make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base make -C modules objs F90="" F90COPT=" " (if test ! -d include ; then mkdir include; fi; /usr/bin/install -c -p -m 644 Make.inc include/Make.inc.psblas) make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» -/usr/bin/install -c -p -p *.mod ../../modules +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_const_mod.F90 -o psb_const_mod.o (if test ! -d modules ; then mkdir modules; fi;) +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cbind_const_mod.F90 -o psb_cbind_const_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_error_mod.F90 -o psb_error_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_string_mod.f90 -o auxil/psb_string_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_m_serial_mod.f90 -o auxil/psi_m_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_e_serial_mod.f90 -o auxil/psi_e_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_s_serial_mod.f90 -o auxil/psi_s_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_d_serial_mod.f90 -o auxil/psi_d_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_c_serial_mod.f90 -o auxil/psi_c_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_z_serial_mod.f90 -o auxil/psi_z_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_acx_mod.f90 -o auxil/psi_acx_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_alcx_mod.f90 -o auxil/psi_alcx_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_lcx_mod.f90 -o auxil/psi_lcx_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_m_realloc_mod.F90 -o auxil/psb_m_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_e_realloc_mod.F90 -o auxil/psb_e_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_s_realloc_mod.F90 -o auxil/psb_s_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_d_realloc_mod.F90 -o auxil/psb_d_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_c_realloc_mod.F90 -o auxil/psb_c_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_z_realloc_mod.F90 -o auxil/psb_z_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_realloc_mod.F90 -o psb_realloc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psi_serial_mod.f90 -o auxil/psi_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c desc/psb_desc_const_mod.f90 -o desc/psb_desc_const_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_m_hsort_mod.f90 -o auxil/psb_m_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_m_isort_mod.f90 -o auxil/psb_m_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_m_msort_mod.f90 -o auxil/psb_m_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_m_qsort_mod.f90 -o auxil/psb_m_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_e_hsort_mod.f90 -o auxil/psb_e_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_e_isort_mod.f90 -o auxil/psb_e_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_e_msort_mod.f90 -o auxil/psb_e_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_e_qsort_mod.f90 -o auxil/psb_e_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_hsort_mod.f90 -o auxil/psb_s_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_isort_mod.f90 -o auxil/psb_s_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_msort_mod.f90 -o auxil/psb_s_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_qsort_mod.f90 -o auxil/psb_s_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_hsort_mod.f90 -o auxil/psb_d_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_isort_mod.f90 -o auxil/psb_d_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_msort_mod.f90 -o auxil/psb_d_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_qsort_mod.f90 -o auxil/psb_d_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_hsort_mod.f90 -o auxil/psb_c_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_isort_mod.f90 -o auxil/psb_c_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_msort_mod.f90 -o auxil/psb_c_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_qsort_mod.f90 -o auxil/psb_c_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_hsort_mod.f90 -o auxil/psb_z_hsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_isort_mod.f90 -o auxil/psb_z_isort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_msort_mod.f90 -o auxil/psb_z_msort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_qsort_mod.f90 -o auxil/psb_z_qsort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_i_hsort_x_mod.f90 -o auxil/psb_i_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_l_hsort_x_mod.f90 -o auxil/psb_l_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_hsort_x_mod.f90 -o auxil/psb_s_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_m_ip_reord_mod.F90 -o auxil/psb_m_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_e_ip_reord_mod.F90 -o auxil/psb_e_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_s_ip_reord_mod.F90 -o auxil/psb_s_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_d_ip_reord_mod.F90 -o auxil/psb_d_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_c_ip_reord_mod.F90 -o auxil/psb_c_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_z_ip_reord_mod.F90 -o auxil/psb_z_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_hash_mod.F90 -o desc/psb_hash_mod.o +mpicc -g -O3 -I. -c desc/psb_hashval.c -o desc/psb_hashval.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c comm/psb_neighbor_topology_mod.F90 -o comm/psb_neighbor_topology_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_hsort_x_mod.f90 -o auxil/psb_d_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_hsort_x_mod.f90 -o auxil/psb_c_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_i_base_vect_mod.F90 -o serial/psb_i_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_base_mat_mod.F90 -o serial/psb_base_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_hsort_x_mod.f90 -o auxil/psb_z_hsort_x_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c auxil/psb_ip_reord_mod.F90 -o auxil/psb_ip_reord_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_sort_mod.f90 -o auxil/psb_sort_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_i_vect_mod.F90 -o serial/psb_i_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_l_base_vect_mod.F90 -o serial/psb_l_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_l_vect_mod.F90 -o serial/psb_l_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_d_base_vect_mod.F90 -o serial/psb_d_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_s_base_vect_mod.F90 -o serial/psb_s_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_c_base_vect_mod.F90 -o serial/psb_c_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_z_base_vect_mod.F90 -o serial/psb_z_base_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_z_vect_mod.F90 -o serial/psb_z_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_z_base_mat_mod.F90 -o serial/psb_z_base_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_d_vect_mod.F90 -o serial/psb_d_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_d_base_mat_mod.F90 -o serial/psb_d_base_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_s_vect_mod.F90 -o serial/psb_s_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_s_base_mat_mod.F90 -o serial/psb_s_base_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_z_csr_mat_mod.f90 -o serial/psb_z_csr_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_z_csc_mat_mod.f90 -o serial/psb_z_csc_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_d_csr_mat_mod.f90 -o serial/psb_d_csr_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_d_csc_mat_mod.f90 -o serial/psb_d_csc_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_c_vect_mod.F90 -o serial/psb_c_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_c_base_mat_mod.F90 -o serial/psb_c_base_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_s_csr_mat_mod.f90 -o serial/psb_s_csr_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_s_csc_mat_mod.f90 -o serial/psb_s_csc_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_z_rb_idx_tree_mod.f90 -o auxil/psb_z_rb_idx_tree_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_d_rb_idx_tree_mod.f90 -o auxil/psb_d_rb_idx_tree_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_c_csr_mat_mod.f90 -o serial/psb_c_csr_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_c_csc_mat_mod.f90 -o serial/psb_c_csc_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_s_rb_idx_tree_mod.f90 -o auxil/psb_s_rb_idx_tree_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_z_mat_mod.F90 -o serial/psb_z_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_c_rb_idx_tree_mod.f90 -o auxil/psb_c_rb_idx_tree_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_d_mat_mod.F90 -o serial/psb_d_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c auxil/psb_rb_idx_tree_mod.f90 -o auxil/psb_rb_idx_tree_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_s_mat_mod.F90 -o serial/psb_s_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_vect_mod.f90 -o serial/psb_vect_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c serial/psb_c_mat_mod.F90 -o serial/psb_c_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_mat_mod.f90 -o serial/psb_mat_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_s_serial_mod.f90 -o serial/psb_s_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_d_serial_mod.f90 -o serial/psb_d_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_c_serial_mod.f90 -o serial/psb_c_serial_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_z_serial_mod.f90 -o serial/psb_z_serial_mod.o +mpifort -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -frecursive -g -O3 -c penv/psi_penv_mod.F90 -o penv/psi_penv_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_i2_p2p_mod.F90 -o penv/psi_i2_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_m_p2p_mod.F90 -o penv/psi_m_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_e_p2p_mod.F90 -o penv/psi_e_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_s_p2p_mod.F90 -o penv/psi_s_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_d_p2p_mod.F90 -o penv/psi_d_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_c_p2p_mod.F90 -o penv/psi_c_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_z_p2p_mod.F90 -o penv/psi_z_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_i2_collective_mod.F90 -o penv/psi_i2_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_e_collective_mod.F90 -o penv/psi_e_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_m_collective_mod.F90 -o penv/psi_m_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_s_collective_mod.F90 -o penv/psi_s_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_d_collective_mod.F90 -o penv/psi_d_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_c_collective_mod.F90 -o penv/psi_c_collective_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c penv/psi_z_collective_mod.F90 -o penv/psi_z_collective_mod.o +mpifort -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -frecursive -g -O3 -c penv/psi_p2p_mod.F90 -o penv/psi_p2p_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c serial/psb_serial_mod.f90 -o serial/psb_serial_mod.o +mpifort -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -frecursive -g -O3 -c penv/psi_collective_mod.F90 -o penv/psi_collective_mod.o +mpifort -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -frecursive -g -O3 -c psb_penv_mod.F90 -o psb_penv_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_indx_map_mod.F90 -o desc/psb_indx_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c psb_timers_mod.f90 -o psb_timers_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_error_impl.F90 -o psb_error_impl.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_hash_map_mod.F90 -o desc/psb_hash_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_list_map_mod.F90 -o desc/psb_list_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_repl_map_mod.F90 -o desc/psb_repl_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_gen_block_map_mod.F90 -o desc/psb_gen_block_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_glist_map_mod.F90 -o desc/psb_glist_map_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c desc/psb_desc_mod.F90 -o desc/psb_desc_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_e_comm_a_mod.f90 -o comm/psi_e_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_m_comm_a_mod.f90 -o comm/psi_m_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_s_comm_a_mod.f90 -o comm/psi_s_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_d_comm_a_mod.f90 -o comm/psi_d_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_c_comm_a_mod.f90 -o comm/psi_c_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_z_comm_a_mod.f90 -o comm/psi_z_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_i_comm_mod.f90 -o comm/psb_i_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_l_comm_mod.f90 -o comm/psb_l_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_s_comm_mod.f90 -o comm/psb_s_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_d_comm_mod.f90 -o comm/psb_d_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_c_comm_mod.f90 -o comm/psb_c_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_z_comm_mod.f90 -o comm/psb_z_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_m_comm_a_mod.f90 -o comm/psb_m_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_e_comm_a_mod.f90 -o comm/psb_e_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_s_comm_a_mod.f90 -o comm/psb_s_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_d_comm_a_mod.f90 -o comm/psb_d_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_c_comm_a_mod.f90 -o comm/psb_c_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_z_comm_a_mod.f90 -o comm/psb_z_comm_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psblas/psb_s_psblas_mod.F90 -o psblas/psb_s_psblas_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psblas/psb_c_psblas_mod.F90 -o psblas/psb_c_psblas_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psblas/psb_d_psblas_mod.F90 -o psblas/psb_d_psblas_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psblas/psb_z_psblas_mod.F90 -o psblas/psb_z_psblas_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c psb_check_mod.f90 -o psb_check_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_d_comm_v_mod.f90 -o comm/psi_d_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_s_comm_v_mod.f90 -o comm/psi_s_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_z_comm_v_mod.f90 -o comm/psi_z_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_c_comm_v_mod.f90 -o comm/psi_c_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_i_comm_v_mod.f90 -o comm/psi_i_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psi_l_comm_v_mod.f90 -o comm/psi_l_comm_v_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_i_mod.F90 -o psi_i_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_s_mod.F90 -o psi_s_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_z_mod.F90 -o psi_z_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_d_mod.F90 -o psi_d_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_c_mod.F90 -o psi_c_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_l_mod.F90 -o psi_l_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c psblas/psb_psblas_mod.f90 -o psblas/psb_psblas_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c psi_mod.f90 -o psi_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_comm_mod.f90 -o comm/psb_comm_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_cd_tools_mod.F90 -o tools/psb_cd_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_m_tools_a_mod.f90 -o tools/psb_m_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_e_tools_a_mod.f90 -o tools/psb_e_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_s_tools_mod.F90 -o tools/psb_s_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_d_tools_mod.F90 -o tools/psb_d_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_c_tools_mod.F90 -o tools/psb_c_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_z_tools_mod.F90 -o tools/psb_z_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_s_tools_a_mod.f90 -o tools/psb_s_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_d_tools_a_mod.f90 -o tools/psb_d_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_c_tools_a_mod.f90 -o tools/psb_c_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_z_tools_a_mod.f90 -o tools/psb_z_tools_a_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_i_tools_mod.F90 -o tools/psb_i_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c tools/psb_l_tools_mod.F90 -o tools/psb_l_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c tools/psb_tools_mod.f90 -o tools/psb_tools_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_base_linmap_mod.f90 -o comm/psb_base_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_s_linmap_mod.f90 -o comm/psb_s_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_d_linmap_mod.f90 -o comm/psb_d_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_c_linmap_mod.f90 -o comm/psb_c_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_z_linmap_mod.f90 -o comm/psb_z_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c comm/psb_linmap_mod.f90 -o comm/psb_linmap_mod.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c error.f90 -o error.o +mpifort -frecursive -g -O3 -I../ -I. -I. -c psb_base_mod.f90 -o psb_base_mod.o +mpicc -g -O3 -I. -c cutil.c -o cutil.o +/usr/bin/install -c -p -p *.mod ../../modules /usr/bin/install -c -p -p psb_config.h psb_types.h ../../include make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base» @@ -14,18 +206,1230 @@ make -C prec mods make -C ext mods make -C base objs make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» -mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_metispart_mod.F90 -o psb_metispart_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_blockpart_mod.f90 -o psb_blockpart_mod.o +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +mpifort -frecursive -g -O3 -I. -I../modules -c psb_prec_const_mod.f90 -o psb_prec_const_mod.o +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» +mpicc -g -O3 -I. -I../include -c psb_metis_int.c -o psb_metis_int.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_d_ell_mat_mod.f90 -o psb_d_ell_mat_mod.o make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base» make -C modules objs F90="" F90COPT=" " +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_i_ext_util_mod.f90 -o psi_i_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_partidx_mod.F90 -o psb_partidx_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_ainv_tools_mod.f90 -o psb_c_ainv_tools_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_s_ext_util_mod.f90 -o psi_s_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_hbio_mod.f90 -o psb_hbio_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_ainv_tools_mod.f90 -o psb_d_ainv_tools_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_c_ext_util_mod.f90 -o psi_c_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_ainv_tools_mod.f90 -o psb_s_ainv_tools_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_mmio_mod.F90 -o psb_mmio_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_d_ext_util_mod.f90 -o psi_d_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_mat_dist_mod.f90 -o psb_s_mat_dist_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_ainv_tools_mod.f90 -o psb_z_ainv_tools_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_z_ext_util_mod.f90 -o psi_z_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_mat_dist_mod.f90 -o psb_d_mat_dist_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_s_ell_mat_mod.f90 -o psb_s_ell_mat_mod.o +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» +/usr/bin/install -c -p -p *.mod ../../modules +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_mat_dist_mod.f90 -o psb_c_mat_dist_mod.o +/usr/bin/install -c -p -p psb_config.h psb_types.h ../../include +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» +make -C serial objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial» +make -C impl objs +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_base_mat_impl.f90 -o psb_base_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_base_mat_impl.F90 -o psb_s_base_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_c_ell_mat_mod.f90 -o psb_c_ell_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_base_mat_impl.F90 -o psb_d_base_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_mat_dist_mod.f90 -o psb_z_mat_dist_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_z_ell_mat_mod.f90 -o psb_z_ell_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_renum_mod.f90 -o psb_s_renum_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_renum_mod.f90 -o psb_d_renum_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_renum_mod.f90 -o psb_c_renum_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_renum_mod.f90 -o psb_z_renum_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_gps_mod.f90 -o psb_gps_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_s_dns_mat_mod.f90 -o psb_s_dns_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_d_dns_mat_mod.f90 -o psb_d_dns_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_c_dns_mat_mod.f90 -o psb_c_dns_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_metispart_mod.F90 -o psb_metispart_mod.o +make -C comm objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make -C internals objs +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +(make psi_dswapdata.o psi_dswaptran.o psi_sswapdata.o psi_sswaptran.o psi_iswapdata.o psi_iswaptran.o psi_lswapdata.o psi_lswaptran.o psi_cswapdata.o psi_cswaptran.o psi_zswapdata.o psi_zswaptran.o psi_dswapdata_a.o psi_dswaptran_a.o psi_sswapdata_a.o psi_sswaptran_a.o psi_mswapdata_a.o psi_mswaptran_a.o psi_eswapdata_a.o psi_eswaptran_a.o psi_cswapdata_a.o psi_cswaptran_a.o psi_zswapdata_a.o psi_zswaptran_a.o FC="mpifort" ) +make[4]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[4]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_dswapdata.F90 -o psi_dswapdata.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_iovrl_restr.f90 -o psi_iovrl_restr.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_iovrl_save.f90 -o psi_iovrl_save.o +make psb_dscatter.o psb_zscatter.o psb_iscatter.o psb_lscatter.o psb_cscatter.o psb_sscatter.o psb_dscatter_a.o psb_zscatter_a.o psb_mscatter_a.o psb_escatter_a.o psb_cscatter_a.o psb_sscatter_a.o psb_dspgather.o psb_sspgather.o psb_zspgather.o psb_cspgather.o FC="mpifort" +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dscatter.F90 -o psb_dscatter.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_base_prec_mod.f90 -o psb_s_base_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_base_prec_mod.f90 -o psb_d_base_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_mat_dist_mod.f90 -o psb_mat_dist_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_iovrl_upd.f90 -o psi_iovrl_upd.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_base_prec_mod.f90 -o psb_c_base_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_z_dns_mat_mod.f90 -o psb_z_dns_mat_mod.o +make -C sort objs +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_s_hsort_impl.f90 -o psb_s_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psi_ext_util_mod.f90 -o psi_ext_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zscatter.F90 -o psb_zscatter.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_s_isort_impl.f90 -o psb_s_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_s_msort_impl.f90 -o psb_s_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_base_prec_mod.f90 -o psb_z_base_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_ilu_fact_mod.f90 -o psb_d_ilu_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_lsame.f90 -o psb_lsame.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dgather.f90 -o psb_dgather.o +make -C auxil objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +(make psi_desc_index.o psi_fnd_owner.o psi_a2a_fnd_owner.o psi_graph_fnd_owner.o psi_adjcncy_fnd_owner.o psi_symm_dep_list.o FC="mpifort") +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_desc_index.F90 -o psi_desc_index.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_s_qsort_impl.f90 -o psb_s_qsort_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_d_hsort_impl.f90 -o psb_d_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_d_isort_impl.f90 -o psb_d_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_d_msort_impl.f90 -o psb_d_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_d_hll_mat_mod.f90 -o psb_d_hll_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_iscatter.F90 -o psb_iscatter.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_lscatter.F90 -o psb_lscatter.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cscatter.F90 -o psb_cscatter.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_dswaptran.F90 -o psi_dswaptran.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_renum_mod.f90 -o psb_renum_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_fnd_owner.F90 -o psi_fnd_owner.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dhalo.f90 -o psb_dhalo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_d_qsort_impl.f90 -o psb_d_qsort_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_s_hll_mat_mod.f90 -o psb_s_hll_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_c_hsort_impl.f90 -o psb_c_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_ainv_tools_mod.f90 -o psb_ainv_tools_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_crea_bnd_elem.f90 -o psi_crea_bnd_elem.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sscatter.F90 -o psb_sscatter.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_c_hll_mat_mod.f90 -o psb_c_hll_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dovrl.f90 -o psb_dovrl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dscatter_a.F90 -o psb_dscatter_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_c_isort_impl.f90 -o psb_c_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zscatter_a.F90 -o psb_zscatter_a.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_z_hll_mat_mod.f90 -o psb_z_hll_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_c_msort_impl.f90 -o psb_c_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sgather.f90 -o psb_sgather.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_c_qsort_impl.f90 -o psb_c_qsort_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_d_dia_mat_mod.f90 -o psb_d_dia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_sswapdata.F90 -o psi_sswapdata.o +make -C psblas objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ddot.f90 -o psb_ddot.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_d_hdia_mat_mod.f90 -o psb_d_hdia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_s_dia_mat_mod.f90 -o psb_s_dia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_s_hdia_mat_mod.f90 -o psb_s_hdia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_mscatter_a.F90 -o psb_mscatter_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_base_mat_impl.F90 -o psb_c_base_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_c_dia_mat_mod.f90 -o psb_c_dia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_base_mat_impl.F90 -o psb_z_base_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_c_hdia_mat_mod.f90 -o psb_c_hdia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_z_dia_mat_mod.f90 -o psb_z_dia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_shalo.f90 -o psb_shalo.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -c psb_z_hdia_mat_mod.f90 -o psb_z_hdia_mat_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_a2a_fnd_owner.F90 -o psi_a2a_fnd_owner.o +mpifort -frecursive -g -O3 -I. -I../include -I../modules -I. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ext_mod.F90 -o psb_ext_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sovrl.f90 -o psb_sovrl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_lovrl_restr.f90 -o psi_lovrl_restr.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_z_hsort_impl.f90 -o psb_z_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_ilu_fact_mod.f90 -o psb_s_ilu_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_z_isort_impl.f90 -o psb_z_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_ainv_fact_mod.f90 -o psb_s_ainv_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_ilu_fact_mod.f90 -o psb_c_ilu_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_lovrl_save.f90 -o psi_lovrl_save.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_z_msort_impl.f90 -o psb_z_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_z_qsort_impl.f90 -o psb_z_qsort_impl.o +make -C tools objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +(make psb_icdasb.o psb_ssphalo.o psb_dsphalo.o psb_csphalo.o psb_zsphalo.o psb_dcdbldext.o psb_zcdbldext.o psb_scdbldext.o psb_ccdbldext.o psb_s_remote_mat.o psb_d_remote_mat.o psb_c_remote_mat.o psb_z_remote_mat.o psb_s_remote_vect.o psb_d_remote_vect.o psb_c_remote_vect.o psb_z_remote_vect.o psb_e_remote_vect.o psb_m_remote_vect.o FC="mpifort") +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_icdasb.F90 -o psb_icdasb.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_sswaptran.F90 -o psi_sswaptran.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_igather.f90 -o psb_igather.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_escatter_a.F90 -o psb_escatter_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_m_hsort_impl.f90 -o psb_m_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cscatter_a.F90 -o psb_cscatter_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_m_isort_impl.f90 -o psb_m_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sscatter_a.F90 -o psb_sscatter_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_m_msort_impl.f90 -o psb_m_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_ainv_fact_mod.f90 -o psb_c_ainv_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dspgather.F90 -o psb_dspgather.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdall.f90 -o psb_cdall.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_m_qsort_impl.f90 -o psb_m_qsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ihalo.f90 -o psb_ihalo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_graph_fnd_owner.F90 -o psi_graph_fnd_owner.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_e_hsort_impl.f90 -o psb_e_hsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssphalo.F90 -o psb_ssphalo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_lovrl_upd.f90 -o psi_lovrl_upd.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_iswapdata.F90 -o psi_iswapdata.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_e_isort_impl.f90 -o psb_e_isort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_crea_index.f90 -o psi_crea_index.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_e_msort_impl.f90 -o psb_e_msort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_damax.f90 -o psb_damax.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_invk_fact_mod.f90 -o psb_c_invk_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_e_qsort_impl.f90 -o psb_e_qsort_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dasum.f90 -o psb_dasum.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_restr.f90 -o psi_sovrl_restr.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_csr_impl.F90 -o psb_s_csr_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_coo_impl.F90 -o psb_s_coo_impl.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_save.f90 -o psi_sovrl_save.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdals.f90 -o psb_cdals.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_upd.f90 -o psi_sovrl_upd.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_csc_impl.F90 -o psb_s_csc_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_m_serial_impl.F90 -o psi_m_serial_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_iswaptran.F90 -o psi_iswaptran.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_invt_fact_mod.f90 -o psb_c_invt_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_adjcncy_fnd_owner.F90 -o psi_adjcncy_fnd_owner.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_daxpby.f90 -o psb_daxpby.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dnrm2.f90 -o psb_dnrm2.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dnrmi.f90 -o psb_dnrmi.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dspmm.f90 -o psb_dspmm.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_mat_impl.F90 -o psb_s_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_crea_ovr_elem.f90 -o psi_crea_ovr_elem.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_bld_tmpovrl.f90 -o psi_bld_tmpovrl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sspgather.F90 -o psb_sspgather.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_ilu_fact_mod.f90 -o psb_z_ilu_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_lswapdata.F90 -o psi_lswapdata.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdalv.f90 -o psb_cdalv.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cd_inloc.f90 -o psb_cd_inloc.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_util_mod.f90 -o psb_util_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zspgather.F90 -o psb_zspgather.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsphalo.F90 -o psb_dsphalo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_symm_dep_list.F90 -o psi_symm_dep_list.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_ainv_fact_mod.f90 -o psb_z_ainv_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_invk_fact_mod.f90 -o psb_z_invk_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_lswaptran.F90 -o psi_lswaptran.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_invt_fact_mod.f90 -o psb_z_invt_fact_mod.o +/bin/cp -p *.mod ../modules +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cdins.F90 -o psb_cdins.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_restr.f90 -o psi_dovrl_restr.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_save.f90 -o psi_dovrl_save.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_upd.f90 -o psi_dovrl_upd.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_cswapdata.F90 -o psi_cswapdata.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_iovrl.f90 -o psb_iovrl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_rb_idx_tree_impl.F90 -o psb_s_rb_idx_tree_impl.o +make -C ext objs make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» /bin/cp -p *.mod ../modules -mpifort -frecursive -g -O3 -I. -I../modules -c psb_renum_mod.f90 -o psb_renum_mod.o -make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_dia_from_coo.f90 -o psb_s_cp_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_dia_to_coo.f90 -o psb_s_cp_dia_to_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_biconjg_mod.F90 -o psb_c_biconjg_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_restr.f90 -o psi_covrl_restr.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_lgather.f90 -o psb_lgather.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_lhalo.f90 -o psb_lhalo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_lovrl.f90 -o psb_lovrl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cspgather.F90 -o psb_cspgather.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_bld_tmphalo.f90 -o psi_bld_tmphalo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_ell_from_coo.f90 -o psb_s_cp_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_ell_from_fmt.f90 -o psb_s_cp_ell_from_fmt.o +/usr/bin/install -c -p -p *.mod ../modules +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_sort_dl.f90 -o psi_sort_dl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csphalo.F90 -o psb_csphalo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_cswaptran.F90 -o psi_cswaptran.o +make -C util objs +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» +/usr/bin/install -c -p -p *.mod ../modules +mpicc -g -O3 -I. -I../include -c psb_amd_order.c -o psb_amd_order.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_hbio_impl.f90 -o psb_s_hbio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dspsm.f90 -o psb_dspsm.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_hbio_impl.f90 -o psb_d_hbio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_biconjg_mod.F90 -o psb_d_biconjg_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_save.f90 -o psi_covrl_save.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_biconjg_mod.F90 -o psb_s_biconjg_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_ell_to_coo.f90 -o psb_s_cp_ell_to_coo.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cgather.f90 -o psb_cgather.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_zswapdata.F90 -o psi_zswapdata.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sspnrm1.f90 -o psb_sspnrm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_ell_to_fmt.f90 -o psb_s_cp_ell_to_fmt.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_hbio_impl.f90 -o psb_c_hbio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_e_serial_impl.F90 -o psi_e_serial_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_indx_map_fnd_owner.F90 -o psi_indx_map_fnd_owner.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_desc_impl.f90 -o psi_desc_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_biconjg_mod.F90 -o psb_z_biconjg_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dspnrm1.f90 -o psb_dspnrm1.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdprt.f90 -o psb_cdprt.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_upd.f90 -o psi_covrl_upd.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hdia_from_coo.f90 -o psb_s_cp_hdia_from_coo.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_restr.f90 -o psi_zovrl_restr.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_save.f90 -o psi_zovrl_save.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_zswaptran.F90 -o psi_zswaptran.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hdia_to_coo.f90 -o psb_s_cp_hdia_to_coo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_csr_impl.F90 -o psb_d_csr_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdren.f90 -o psb_cdren.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_coo_impl.F90 -o psb_d_coo_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_upd.f90 -o psi_zovrl_upd.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_s_serial_impl.F90 -o psi_s_serial_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cspnrm1.f90 -o psb_cspnrm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hll_from_coo.f90 -o psb_s_cp_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hll_from_fmt.f90 -o psb_s_cp_hll_from_fmt.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_hash_impl.f90 -o psi_hash_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psi_srtlist.f90 -o psi_srtlist.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsphalo.F90 -o psb_zsphalo.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_prec_type.f90 -o psb_s_prec_type.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_csc_impl.F90 -o psb_d_csc_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_dswapdata_a.F90 -o psi_dswapdata_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zspnrm1.f90 -o psb_zspnrm1.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cdrep.f90 -o psb_cdrep.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_get_overlap.f90 -o psb_get_overlap.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_d_serial_impl.F90 -o psi_d_serial_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hll_to_coo.f90 -o psb_s_cp_hll_to_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_bld_glb_dep_list.F90 -o psi_bld_glb_dep_list.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_xtr_loc_dl.F90 -o psi_xtr_loc_dl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_hbio_impl.f90 -o psb_z_hbio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_mmio_impl.f90 -o psb_s_mmio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zamax.f90 -o psb_zamax.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zasum.f90 -o psb_zasum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_c_serial_impl.F90 -o psi_c_serial_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_prec_type.f90 -o psb_d_prec_type.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_prec_type.f90 -o psb_c_prec_type.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_cp_hll_to_fmt.f90 -o psb_s_cp_hll_to_fmt.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_movrl_restr_a.f90 -o psi_movrl_restr_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_dswaptran_a.F90 -o psi_dswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_movrl_save_a.f90 -o psi_movrl_save_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zaxpby.f90 -o psb_zaxpby.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_aclsum.f90 -o psb_s_dia_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_allocate_mnnz.f90 -o psb_s_dia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_arwsum.f90 -o psb_s_dia_arwsum.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_mmio_impl.f90 -o psb_d_mmio_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_sswapdata_a.F90 -o psi_sswapdata_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dcdbldext.F90 -o psb_dcdbldext.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_colsum.f90 -o psb_s_dia_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_csgetptn.f90 -o psb_s_dia_csgetptn.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_mat_impl.F90 -o psb_d_mat_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_csgetrow.f90 -o psb_s_dia_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_csmm.f90 -o psb_s_dia_csmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cd_lstext.f90 -o psb_cd_lstext.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_mmio_impl.f90 -o psb_c_mmio_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cd_remap.F90 -o psb_cd_remap.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_sswaptran_a.F90 -o psi_sswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_z_serial_impl.F90 -o psi_z_serial_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zcdbldext.F90 -o psb_zcdbldext.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_csmv.f90 -o psb_s_dia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_get_diag.f90 -o psb_s_dia_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_maxval.f90 -o psb_s_dia_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_mold.f90 -o psb_s_dia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_print.f90 -o psb_s_dia_print.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_prec_type.f90 -o psb_z_prec_type.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_mmio_impl.f90 -o psb_z_mmio_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_rb_idx_tree_impl.F90 -o psb_d_rb_idx_tree_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_csr_impl.F90 -o psb_c_csr_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_coo_impl.F90 -o psb_c_coo_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_reallocate_nz.f90 -o psb_s_dia_reallocate_nz.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_movrl_upd_a.f90 -o psi_movrl_upd_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_scdbldext.F90 -o psb_scdbldext.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_eovrl_restr_a.f90 -o psi_eovrl_restr_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_mswapdata_a.F90 -o psi_mswapdata_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_eovrl_save_a.f90 -o psi_eovrl_save_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zdot.f90 -o psb_zdot.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_znrm2.f90 -o psb_znrm2.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_reinit.f90 -o psb_s_dia_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_rowsum.f90 -o psb_s_dia_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_scal.f90 -o psb_s_dia_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dia_scals.f90 -o psb_s_dia_scals.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_chalo.f90 -o psb_chalo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_csc_impl.F90 -o psb_c_csc_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ccdbldext.F90 -o psb_ccdbldext.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_mswaptran_a.F90 -o psi_mswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_mat_impl.F90 -o psb_c_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cdcpy.F90 -o psb_cdcpy.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cd_reinit.f90 -o psb_cd_reinit.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cd_switch_ovl_indxmap.f90 -o psb_cd_switch_ovl_indxmap.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_aclsum.f90 -o psb_s_ell_aclsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cd_renum_block.F90 -o psb_cd_renum_block.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_ainv_fact_mod.f90 -o psb_d_ainv_fact_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_allocate_mnnz.f90 -o psb_s_ell_allocate_mnnz.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_remote_mat.F90 -o psb_s_remote_mat.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_arwsum.f90 -o psb_s_ell_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_colsum.f90 -o psb_s_ell_colsum.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_eswapdata_a.F90 -o psi_eswapdata_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csgetblk.f90 -o psb_s_ell_csgetblk.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_znrmi.f90 -o psb_znrmi.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_invk_fact_mod.f90 -o psb_d_invk_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zspmm.f90 -o psb_zspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_covrl.f90 -o psb_covrl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_remote_mat.F90 -o psb_d_remote_mat.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_invt_fact_mod.f90 -o psb_d_invt_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_invk_fact_mod.f90 -o psb_s_invk_fact_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zgather.f90 -o psb_zgather.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_i_mmio_impl.F90 -o psb_i_mmio_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csgetptn.f90 -o psb_s_ell_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csgetrow.f90 -o psb_s_ell_csgetrow.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dspalloc.f90 -o psb_dspalloc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_remote_mat.F90 -o psb_c_remote_mat.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_eswaptran_a.F90 -o psi_eswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dspasb.f90 -o psb_dspasb.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csmm.f90 -o psb_s_ell_csmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_remap.F90 -o psb_d_remap.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zhalo.f90 -o psb_zhalo.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_rb_idx_tree_impl.F90 -o psb_c_rb_idx_tree_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zspsm.f90 -o psb_zspsm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_remote_mat.F90 -o psb_z_remote_mat.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zovrl.f90 -o psb_zovrl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_csr_impl.F90 -o psb_z_csr_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_saxpby.f90 -o psb_saxpby.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dspfree.f90 -o psb_dspfree.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dspins.F90 -o psb_dspins.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_coo_impl.F90 -o psb_z_coo_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_invt_fact_mod.f90 -o psb_s_invt_fact_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csmv.f90 -o psb_s_ell_csmv.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_cswapdata_a.F90 -o psi_cswapdata_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_csc_impl.F90 -o psb_z_csc_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_remote_vect.F90 -o psb_s_remote_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_biconjg_mod.F90 -o psb_biconjg_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_mat_impl.F90 -o psb_z_mat_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_srwextd.f90 -o psb_srwextd.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_mat_dist_impl.f90 -o psb_s_mat_dist_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dgather_a.f90 -o psb_dgather_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_remote_vect.F90 -o psb_d_remote_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csnm1.f90 -o psb_s_ell_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csnmi.f90 -o psb_s_ell_csnmi.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dhalo_a.f90 -o psb_dhalo_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_cswaptran_a.F90 -o psi_cswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_prec_type.f90 -o psb_prec_type.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_remote_vect.F90 -o psb_c_remote_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sdot.f90 -o psb_sdot.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dsprn.f90 -o psb_dsprn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_csput.f90 -o psb_s_ell_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_cssm.f90 -o psb_s_ell_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_cssv.f90 -o psb_s_ell_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_get_diag.f90 -o psb_s_ell_get_diag.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_remote_vect.F90 -o psb_z_remote_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_maxval.f90 -o psb_s_ell_maxval.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_drwextd.f90 -o psb_drwextd.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dovrl_a.f90 -o psb_dovrl_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sgather_a.f90 -o psb_sgather_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_mold.f90 -o psb_s_ell_mold.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_eovrl_upd_a.f90 -o psi_eovrl_upd_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_prec_mod.f90 -o psb_s_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_zswapdata_a.F90 -o psi_zswapdata_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_e_remote_vect.F90 -o psb_e_remote_vect.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_restr_a.f90 -o psi_sovrl_restr_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_crwextd.f90 -o psb_crwextd.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_prec_mod.f90 -o psb_d_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_prec_mod.f90 -o psb_c_prec_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_print.f90 -o psb_s_ell_print.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_m_remote_vect.F90 -o psb_m_remote_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_prec_mod.f90 -o psb_z_prec_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_save_a.f90 -o psi_sovrl_save_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_rb_idx_tree_impl.F90 -o psb_z_rb_idx_tree_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sasum.f90 -o psb_sasum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_shalo_a.f90 -o psb_shalo_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sovrl_a.f90 -o psb_sovrl_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_mat_dist_impl.f90 -o psb_d_mat_dist_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_mat_dist_impl.f90 -o psb_c_mat_dist_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_reallocate_nz.f90 -o psb_s_ell_reallocate_nz.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_samax.f90 -o psb_samax.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_mgather_a.f90 -o psb_mgather_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_mhalo_a.f90 -o psb_mhalo_a.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_movrl_a.f90 -o psb_movrl_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_snrm2.f90 -o psb_snrm2.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_zswaptran_a.F90 -o psi_zswaptran_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sspalloc.f90 -o psb_sspalloc.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_mat_dist_impl.f90 -o psb_z_mat_dist_impl.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_upd_a.f90 -o psi_sovrl_upd_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_reinit.f90 -o psb_s_ell_reinit.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_snrmi.f90 -o psb_snrmi.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sspasb.f90 -o psb_sspasb.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_prec_mod.f90 -o psb_prec_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_rowsum.f90 -o psb_s_ell_rowsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sspmm.f90 -o psb_sspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_egather_a.f90 -o psb_egather_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ehalo_a.f90 -o psb_ehalo_a.o +make[4]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_eovrl_a.f90 -o psb_eovrl_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cgather_a.f90 -o psb_cgather_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_diagprec.f90 -o psb_d_diagprec.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_restr_a.f90 -o psi_dovrl_restr_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_save_a.f90 -o psi_dovrl_save_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_nullprec.f90 -o psb_d_nullprec.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_remap.F90 -o psb_s_remap.o mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_bjacprec.f90 -o psb_d_bjacprec.o -mpifort -frecursive -g -O3 -I. -I../modules -c psb_gps_mod.f90 -o psb_gps_mod.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_dovrl_upd_a.f90 -o psi_dovrl_upd_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sspsm.f90 -o psb_sspsm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_camax.f90 -o psb_camax.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zrwextd.f90 -o psb_zrwextd.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_scal.f90 -o psb_s_ell_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_scals.f90 -o psb_s_ell_scals.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_chalo_a.f90 -o psb_chalo_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_covrl_a.f90 -o psb_covrl_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sspfree.f90 -o psb_sspfree.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sspins.F90 -o psb_sspins.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_diagprec.f90 -o psb_s_diagprec.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zgather_a.f90 -o psb_zgather_a.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_renum_impl.F90 -o psb_s_renum_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zhalo_a.f90 -o psb_zhalo_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_casum.f90 -o psb_casum.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_restr_a.f90 -o psi_covrl_restr_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_ell_trim.f90 -o psb_s_ell_trim.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_caxpby.f90 -o psb_caxpby.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cdot.f90 -o psb_cdot.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cnrm2.f90 -o psb_cnrm2.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_nullprec.f90 -o psb_s_nullprec.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zovrl_a.f90 -o psb_zovrl_a.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_save_a.f90 -o psi_covrl_save_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hdia_allocate_mnnz.f90 -o psb_s_hdia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_covrl_upd_a.f90 -o psi_covrl_upd_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cnrmi.f90 -o psb_cnrmi.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cspmm.f90 -o psb_cspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cspsm.f90 -o psb_cspsm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_ssprn.f90 -o psb_ssprn.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_glob_to_loc.f90 -o psb_glob_to_loc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cmlt_vect.f90 -o psb_cmlt_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hdia_csmv.f90 -o psb_s_hdia_csmv.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sspspmm.F90 -o psb_sspspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dspspmm.F90 -o psb_dspspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cspspmm.F90 -o psb_cspspmm.o mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_bjacprec.f90 -o psb_s_bjacprec.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_restr_a.f90 -o psi_zovrl_restr_a.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_diagprec.f90 -o psb_c_diagprec.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_nullprec.f90 -o psb_c_nullprec.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hdia_mold.f90 -o psb_s_hdia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hdia_print.f90 -o psb_s_hdia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_aclsum.f90 -o psb_s_hll_aclsum.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_save_a.f90 -o psi_zovrl_save_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zspspmm.F90 -o psb_zspspmm.o mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_bjacprec.f90 -o psb_c_bjacprec.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_diagprec.f90 -o psb_z_diagprec.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_allocate_mnnz.f90 -o psb_s_hll_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_arwsum.f90 -o psb_s_hll_arwsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ssymbmm.f90 -o psb_ssymbmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dmlt_vect.f90 -o psb_dmlt_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zmlt_vect.f90 -o psb_zmlt_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_loc_to_glob.f90 -o psb_loc_to_glob.o +mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_zovrl_upd_a.f90 -o psi_zovrl_upd_a.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_renum_impl.F90 -o psb_d_renum_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_nullprec.f90 -o psb_z_nullprec.o mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_bjacprec.f90 -o psb_z_bjacprec.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_colsum.f90 -o psb_s_hll_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csgetblk.f90 -o psb_s_hll_csgetblk.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_iallc.f90 -o psb_iallc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_iasb.f90 -o psb_iasb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_smlt_vect.f90 -o psb_smlt_vect.o +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cdiv_vect.f90 -o psb_cdiv_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csgetptn.f90 -o psb_s_hll_csgetptn.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dsymbmm.f90 -o psb_dsymbmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csgetrow.f90 -o psb_s_hll_csgetrow.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ddiv_vect.f90 -o psb_ddiv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zdiv_vect.f90 -o psb_zdiv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_ifree.f90 -o psb_ifree.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csmm.f90 -o psb_s_hll_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csmv.f90 -o psb_s_hll_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csnm1.f90 -o psb_s_hll_csnm1.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_renum_impl.F90 -o psb_c_renum_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_renum_impl.F90 -o psb_z_renum_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sdiv_vect.f90 -o psb_sdiv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cinv_vect.f90 -o psb_cinv_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csnmi.f90 -o psb_s_hll_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_csput.f90 -o psb_s_hll_csput.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_iins.f90 -o psb_iins.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_csymbmm.f90 -o psb_csymbmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_cssm.f90 -o psb_s_hll_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_cssv.f90 -o psb_s_hll_cssv.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dinv_vect.f90 -o psb_dinv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zinv_vect.f90 -o psb_zinv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_lallc.f90 -o psb_lallc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sinv_vect.f90 -o psb_sinv_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dcmp_vect.f90 -o psb_dcmp_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_get_diag.f90 -o psb_s_hll_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_maxval.f90 -o psb_s_hll_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_mold.f90 -o psb_s_hll_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_print.f90 -o psb_s_hll_print.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zsymbmm.f90 -o psb_zsymbmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_scmp_vect.f90 -o psb_scmp_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_ccmp_vect.f90 -o psb_ccmp_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zcmp_vect.f90 -o psb_zcmp_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_reallocate_nz.f90 -o psb_s_hll_reallocate_nz.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cabs_vect.f90 -o psb_cabs_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_snumbmm.f90 -o psb_snumbmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dabs_vect.f90 -o psb_dabs_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sabs_vect.f90 -o psb_sabs_vect.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_lasb.f90 -o psb_lasb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zabs_vect.f90 -o psb_zabs_vect.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_reinit.f90 -o psb_s_hll_reinit.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cgetmatinfo.F90 -o psb_cgetmatinfo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dgetmatinfo.F90 -o psb_dgetmatinfo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sgetmatinfo.F90 -o psb_sgetmatinfo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dnumbmm.f90 -o psb_dnumbmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zgetmatinfo.F90 -o psb_zgetmatinfo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_lfree.f90 -o psb_lfree.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cnumbmm.f90 -o psb_cnumbmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_lins.f90 -o psb_lins.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_rowsum.f90 -o psb_s_hll_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_scal.f90 -o psb_s_hll_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_hll_scals.f90 -o psb_s_hll_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_dia_from_coo.f90 -o psb_s_mv_dia_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_build_mtpart.F90 -o psi_build_mtpart.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_ell_from_coo.f90 -o psb_s_mv_ell_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sallc.f90 -o psb_sallc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sasb.f90 -o psb_sasb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sfree.f90 -o psb_sfree.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_ell_from_fmt.f90 -o psb_s_mv_ell_from_fmt.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_znumbmm.f90 -o psb_znumbmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_ell_to_coo.f90 -o psb_s_mv_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_ell_to_fmt.f90 -o psb_s_mv_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hdia_from_coo.f90 -o psb_s_mv_hdia_from_coo.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c smmp.f90 -o smmp.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c lsmmp.f90 -o lsmmp.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sgeprt.f90 -o psb_sgeprt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hdia_to_coo.f90 -o psb_s_mv_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hll_from_coo.f90 -o psb_s_mv_hll_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dgeprt.f90 -o psb_dgeprt.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sins.f90 -o psb_sins.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hll_from_fmt.f90 -o psb_s_mv_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hll_to_coo.f90 -o psb_s_mv_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_mv_hll_to_fmt.f90 -o psb_s_mv_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_dia_from_coo.f90 -o psb_c_cp_dia_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_cgeprt.f90 -o psb_cgeprt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_dia_to_coo.f90 -o psb_c_cp_dia_to_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dallc.f90 -o psb_dallc.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_ell_from_coo.f90 -o psb_c_cp_ell_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zgeprt.f90 -o psb_zgeprt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_ell_from_fmt.f90 -o psb_c_cp_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_ell_to_coo.f90 -o psb_c_cp_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_ell_to_fmt.f90 -o psb_c_cp_ell_to_fmt.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_spdot_srtd.f90 -o psb_spdot_srtd.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dasb.f90 -o psb_dasb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_aspxpby.f90 -o psb_aspxpby.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dfree.f90 -o psb_dfree.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hdia_from_coo.f90 -o psb_c_cp_hdia_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dins.f90 -o psb_dins.o +/usr/bin/install -c -p -p *.mod ../modules +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_spge_dot.f90 -o psb_spge_dot.o +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_saplusat.f90 -o psb_saplusat.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_daplusat.f90 -o psb_daplusat.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_caplusat.f90 -o psb_caplusat.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zaplusat.f90 -o psb_zaplusat.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_samax_s.f90 -o psb_samax_s.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hdia_to_coo.f90 -o psb_c_cp_hdia_to_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_damax_s.f90 -o psb_damax_s.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hll_from_coo.f90 -o psb_c_cp_hll_from_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_camax_s.f90 -o psb_camax_s.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zamax_s.f90 -o psb_zamax_s.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_callc.f90 -o psb_callc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_casb.f90 -o psb_casb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sasum_s.f90 -o psb_sasum_s.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dasum_s.f90 -o psb_dasum_s.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cfree.f90 -o psb_cfree.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_casum_s.f90 -o psb_casum_s.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hll_from_fmt.f90 -o psb_c_cp_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hll_to_coo.f90 -o psb_c_cp_hll_to_coo.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zasum_s.f90 -o psb_zasum_s.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_cp_hll_to_fmt.f90 -o psb_c_cp_hll_to_fmt.o +make -C linsolve mods +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +mpifort -frecursive -g -O3 -I. -I../modules -c psb_base_linsolve_conv_mod.f90 -o psb_base_linsolve_conv_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_linsolve_mod.f90 -o psb_linsolve_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_aclsum.f90 -o psb_c_dia_aclsum.o +make -C prec objs +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +/usr/bin/install -c -p -p *.mod ../modules +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_prec_type_impl.f90 -o psb_s_prec_type_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cins.f90 -o psb_cins.o +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_prec_type_impl.f90 -o psb_d_prec_type_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_allocate_mnnz.f90 -o psb_c_dia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_prec_type_impl.f90 -o psb_c_prec_type_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zallc.f90 -o psb_zallc.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_arwsum.f90 -o psb_c_dia_arwsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zasb.f90 -o psb_zasb.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zfree.f90 -o psb_zfree.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_s_linsolve_conv_mod.f90 -o psb_s_linsolve_conv_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zins.f90 -o psb_zins.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_mallc_a.f90 -o psb_mallc_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_colsum.f90 -o psb_c_dia_colsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_masb_a.f90 -o psb_masb_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_mfree_a.f90 -o psb_mfree_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_csgetptn.f90 -o psb_c_dia_csgetptn.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_mins_a.f90 -o psb_mins_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_eallc_a.f90 -o psb_eallc_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_easb_a.f90 -o psb_easb_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_efree_a.f90 -o psb_efree_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_eins_a.f90 -o psb_eins_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sallc_a.f90 -o psb_sallc_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_csgetrow.f90 -o psb_c_dia_csgetrow.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_c_linsolve_conv_mod.f90 -o psb_c_linsolve_conv_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sasb_a.f90 -o psb_sasb_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sfree_a.f90 -o psb_sfree_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_csmm.f90 -o psb_c_dia_csmm.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_d_linsolve_conv_mod.f90 -o psb_d_linsolve_conv_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -c psb_z_linsolve_conv_mod.f90 -o psb_z_linsolve_conv_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_prec_type_impl.f90 -o psb_z_prec_type_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sins_a.f90 -o psb_sins_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dallc_a.f90 -o psb_dallc_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_diagprec_impl.f90 -o psb_d_diagprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dasb_a.f90 -o psb_dasb_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dfree_a.f90 -o psb_dfree_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dins_a.f90 -o psb_dins_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_csmv.f90 -o psb_c_dia_csmv.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial» +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_callc_a.f90 -o psb_callc_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_casb_a.f90 -o psb_casb_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_get_diag.f90 -o psb_c_dia_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_bjacprec_impl.f90 -o psb_d_bjacprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cfree_a.f90 -o psb_cfree_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_maxval.f90 -o psb_c_dia_maxval.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cins_a.f90 -o psb_cins_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zallc_a.f90 -o psb_zallc_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zasb_a.f90 -o psb_zasb_a.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zfree_a.f90 -o psb_zfree_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_mold.f90 -o psb_c_dia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_nullprec_impl.f90 -o psb_d_nullprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zins_a.f90 -o psb_zins_a.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_ilu0_fact.f90 -o psb_d_ilu0_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_print.f90 -o psb_c_dia_print.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zspalloc.f90 -o psb_zspalloc.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_reallocate_nz.f90 -o psb_c_dia_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_iluk_fact.f90 -o psb_d_iluk_fact.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zspasb.f90 -o psb_zspasb.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_reinit.f90 -o psb_c_dia_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_rowsum.f90 -o psb_c_dia_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_scal.f90 -o psb_c_dia_scal.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_remap.F90 -o psb_z_remap.o +/usr/bin/install -c -p -p *.mod ../modules +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_ilut_fact.f90 -o psb_d_ilut_fact.o +make -C cbind objs +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +cd base && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +Makefile:30: attenzione: sovrascrittura del set di istruzioni per l'obiettivo «.F90.o» +../../Make.inc:116: attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «.F90.o» +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_objhandle_mod.F90 -o psb_objhandle_mod.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_base.c -o psb_c_base.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_sbase.c -o psb_c_sbase.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_dbase.c -o psb_c_dbase.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_cbase.c -o psb_c_cbase.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_zbase.c -o psb_c_zbase.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zspfree.f90 -o psb_zspfree.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_scomm.c -o psb_c_scomm.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_dcomm.c -o psb_c_dcomm.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_ccomm.c -o psb_c_ccomm.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_zcomm.c -o psb_c_zcomm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zspins.F90 -o psb_zspins.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_cpenv_mod.F90 -o psb_cpenv_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zsprn.f90 -o psb_zsprn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dprecbld.f90 -o psb_dprecbld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dia_scals.f90 -o psb_c_dia_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dprecinit.f90 -o psb_dprecinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_aclsum.f90 -o psb_c_ell_aclsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cspalloc.f90 -o psb_cspalloc.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cspasb.f90 -o psb_cspasb.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_diagprec_impl.f90 -o psb_s_diagprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_remap.F90 -o psb_c_remap.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cspfree.f90 -o psb_cspfree.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cspins.F90 -o psb_cspins.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_csprn.f90 -o psb_csprn.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cd_set_bld.f90 -o psb_cd_set_bld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_bjacprec_impl.f90 -o psb_s_bjacprec_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_allocate_mnnz.f90 -o psb_c_ell_allocate_mnnz.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_s_map.f90 -o psb_s_map.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_d_map.f90 -o psb_d_map.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_arwsum.f90 -o psb_c_ell_arwsum.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_base_tools_cbind_mod.F90 -o psb_base_tools_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_c_map.f90 -o psb_c_map.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_nullprec_impl.f90 -o psb_s_nullprec_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_ilu0_fact.f90 -o psb_s_ilu0_fact.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_z_map.f90 -o psb_z_map.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_s_par_csr_spspmm.f90 -o psb_s_par_csr_spspmm.o +make -C linsolve objs +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +/usr/bin/install -c -p -p *.mod ../modules +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dkrylov.f90 -o psb_dkrylov.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_colsum.f90 -o psb_c_ell_colsum.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_d_par_csr_spspmm.f90 -o psb_d_par_csr_spspmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_iluk_fact.f90 -o psb_s_iluk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_skrylov.f90 -o psb_skrylov.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_ilut_fact.f90 -o psb_s_ilut_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csgetblk.f90 -o psb_c_ell_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csgetptn.f90 -o psb_c_ell_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csgetrow.f90 -o psb_c_ell_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_ckrylov.f90 -o psb_ckrylov.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_s_psblas_cbind_mod.f90 -o psb_s_psblas_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_d_psblas_cbind_mod.f90 -o psb_d_psblas_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_c_psblas_cbind_mod.f90 -o psb_c_psblas_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zkrylov.f90 -o psb_zkrylov.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_sprecbld.f90 -o psb_sprecbld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_sprecinit.f90 -o psb_sprecinit.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_z_psblas_cbind_mod.f90 -o psb_z_psblas_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csmm.f90 -o psb_c_ell_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_diagprec_impl.f90 -o psb_c_diagprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_c_par_csr_spspmm.f90 -o psb_c_par_csr_spspmm.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_z_par_csr_spspmm.f90 -o psb_z_par_csr_spspmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_drichardson.f90 -o psb_drichardson.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_glob_transpose.F90 -o psb_s_glob_transpose.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_srichardson.f90 -o psb_srichardson.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_tools_cbind_mod.F90 -o psb_s_tools_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csmv.f90 -o psb_c_ell_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_bjacprec_impl.f90 -o psb_c_bjacprec_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_crichardson.f90 -o psb_crichardson.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zrichardson.f90 -o psb_zrichardson.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_serial_cbind_mod.F90 -o psb_s_serial_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_tools_cbind_mod.F90 -o psb_d_tools_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_serial_cbind_mod.F90 -o psb_d_serial_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dcgstab.f90 -o psb_dcgstab.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dcg.F90 -o psb_dcg.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_glob_transpose.F90 -o psb_d_glob_transpose.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_tools_cbind_mod.F90 -o psb_c_tools_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_serial_cbind_mod.F90 -o psb_c_serial_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csnm1.f90 -o psb_c_ell_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dfcg.F90 -o psb_dfcg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_nullprec_impl.f90 -o psb_c_nullprec_impl.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_glob_transpose.F90 -o psb_c_glob_transpose.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dgcr.f90 -o psb_dgcr.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dcgs.f90 -o psb_dcgs.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csnmi.f90 -o psb_c_ell_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_ilu0_fact.f90 -o psb_c_ilu0_fact.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_tools_cbind_mod.F90 -o psb_z_tools_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_serial_cbind_mod.F90 -o psb_z_serial_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_iluk_fact.f90 -o psb_c_iluk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_ilut_fact.f90 -o psb_c_ilut_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_csput.f90 -o psb_c_ell_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dbicg.f90 -o psb_dbicg.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_s_comm_cbind_mod.f90 -o psb_s_comm_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_cssm.f90 -o psb_c_ell_cssm.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_d_comm_cbind_mod.f90 -o psb_d_comm_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_dcgstabl.f90 -o psb_dcgstabl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_cprecbld.f90 -o psb_cprecbld.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_c_comm_cbind_mod.f90 -o psb_c_comm_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_cprecinit.f90 -o psb_cprecinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_drgmres.f90 -o psb_drgmres.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_cssv.f90 -o psb_c_ell_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_scgstab.f90 -o psb_scgstab.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_glob_transpose.F90 -o psb_z_glob_transpose.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_cgetelem.f90 -o psb_cgetelem.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_diagprec_impl.f90 -o psb_z_diagprec_impl.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_z_comm_cbind_mod.f90 -o psb_z_comm_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_bjacprec_impl.f90 -o psb_z_bjacprec_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_nullprec_impl.f90 -o psb_z_nullprec_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_scg.F90 -o psb_scg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_get_diag.f90 -o psb_c_ell_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_sfcg.F90 -o psb_sfcg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_sgcr.f90 -o psb_sgcr.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_base_psblas_cbind_mod.f90 -o psb_base_psblas_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_dgetelem.f90 -o psb_dgetelem.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_ilu0_fact.f90 -o psb_z_ilu0_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_scgs.f90 -o psb_scgs.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_sbicg.f90 -o psb_sbicg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_maxval.f90 -o psb_c_ell_maxval.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sgetelem.f90 -o psb_sgetelem.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_scgstabl.f90 -o psb_scgstabl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_srgmres.f90 -o psb_srgmres.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_ccgstab.f90 -o psb_ccgstab.o +mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_zgetelem.f90 -o psb_zgetelem.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_iluk_fact.f90 -o psb_z_iluk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ccg.F90 -o psb_ccg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_ilut_fact.f90 -o psb_z_ilut_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zprecbld.f90 -o psb_zprecbld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_mold.f90 -o psb_c_ell_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_cfcg.F90 -o psb_cfcg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_cgcr.f90 -o psb_cgcr.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_ccgs.f90 -o psb_ccgs.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_cbicg.f90 -o psb_cbicg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_ccgstabl.f90 -o psb_ccgstabl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_print.f90 -o psb_c_ell_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_crgmres.f90 -o psb_crgmres.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_reallocate_nz.f90 -o psb_c_ell_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_reinit.f90 -o psb_c_ell_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zprecinit.f90 -o psb_zprecinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_rowsum.f90 -o psb_c_ell_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_scal.f90 -o psb_c_ell_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zcgstab.f90 -o psb_zcgstab.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zcg.F90 -o psb_zcg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_scals.f90 -o psb_c_ell_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zfcg.F90 -o psb_zfcg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zgcr.f90 -o psb_zgcr.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_sparsify.f90 -o psb_c_sparsify.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zcgs.f90 -o psb_zcgs.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_ell_trim.f90 -o psb_c_ell_trim.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hdia_allocate_mnnz.f90 -o psb_c_hdia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zbicg.f90 -o psb_zbicg.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_sparsify.f90 -o psb_d_sparsify.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base» +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_sparsify.f90 -o psb_s_sparsify.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zcgstabl.f90 -o psb_zcgstabl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zrgmres.f90 -o psb_zrgmres.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_sparsify.f90 -o psb_z_sparsify.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hdia_csmv.f90 -o psb_c_hdia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hdia_mold.f90 -o psb_c_hdia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_crwclip.f90 -o psb_crwclip.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hdia_print.f90 -o psb_c_hdia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_aclsum.f90 -o psb_c_hll_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_drwclip.f90 -o psb_drwclip.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_srwclip.f90 -o psb_srwclip.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_allocate_mnnz.f90 -o psb_c_hll_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_arwsum.f90 -o psb_c_hll_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_zrwclip.f90 -o psb_zrwclip.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_sp_drop.f90 -o psb_c_sp_drop.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_colsum.f90 -o psb_c_hll_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csgetblk.f90 -o psb_c_hll_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_sp_drop.f90 -o psb_d_sp_drop.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_sp_drop.f90 -o psb_s_sp_drop.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_sp_drop.f90 -o psb_z_sp_drop.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsparse_biconjg_llk_noth.F90 -o psb_dsparse_biconjg_llk_noth.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csgetptn.f90 -o psb_c_hll_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csgetrow.f90 -o psb_c_hll_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csmm.f90 -o psb_c_hll_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsparse_biconjg_llk.F90 -o psb_dsparse_biconjg_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsparse_biconjg_mlk.F90 -o psb_dsparse_biconjg_mlk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csmv.f90 -o psb_c_hll_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csnm1.f90 -o psb_c_hll_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsparse_biconjg_s_ft_llk.F90 -o psb_dsparse_biconjg_s_ft_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dsparse_biconjg_s_llk.F90 -o psb_dsparse_biconjg_s_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csparse_biconjg_llk_noth.F90 -o psb_csparse_biconjg_llk_noth.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csparse_biconjg_llk.F90 -o psb_csparse_biconjg_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csparse_biconjg_mlk.F90 -o psb_csparse_biconjg_mlk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csnmi.f90 -o psb_c_hll_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_csput.f90 -o psb_c_hll_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csparse_biconjg_s_ft_llk.F90 -o psb_csparse_biconjg_s_ft_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_cssm.f90 -o psb_c_hll_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_csparse_biconjg_s_llk.F90 -o psb_csparse_biconjg_s_llk.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_base_cbind_mod.f90 -o psb_base_cbind_mod.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_cssv.f90 -o psb_c_hll_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsparse_biconjg_llk_noth.F90 -o psb_zsparse_biconjg_llk_noth.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_get_diag.f90 -o psb_c_hll_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_maxval.f90 -o psb_c_hll_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_mold.f90 -o psb_c_hll_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsparse_biconjg_llk.F90 -o psb_zsparse_biconjg_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_print.f90 -o psb_c_hll_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsparse_biconjg_mlk.F90 -o psb_zsparse_biconjg_mlk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsparse_biconjg_s_ft_llk.F90 -o psb_zsparse_biconjg_s_ft_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_zsparse_biconjg_s_llk.F90 -o psb_zsparse_biconjg_s_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssparse_biconjg_llk_noth.F90 -o psb_ssparse_biconjg_llk_noth.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_reallocate_nz.f90 -o psb_c_hll_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_reinit.f90 -o psb_c_hll_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_rowsum.f90 -o psb_c_hll_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_scal.f90 -o psb_c_hll_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssparse_biconjg_llk.F90 -o psb_ssparse_biconjg_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssparse_biconjg_mlk.F90 -o psb_ssparse_biconjg_mlk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_hll_scals.f90 -o psb_c_hll_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_dia_from_coo.f90 -o psb_c_mv_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssparse_biconjg_s_ft_llk.F90 -o psb_ssparse_biconjg_s_ft_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_ell_from_coo.f90 -o psb_c_mv_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_ssparse_biconjg_s_llk.F90 -o psb_ssparse_biconjg_s_llk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_ell_from_fmt.f90 -o psb_c_mv_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_ell_to_coo.f90 -o psb_c_mv_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_ainv_bld.f90 -o psb_d_ainv_bld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_ell_to_fmt.f90 -o psb_c_mv_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hdia_from_coo.f90 -o psb_c_mv_hdia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hdia_to_coo.f90 -o psb_c_mv_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hll_from_coo.f90 -o psb_c_mv_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hll_from_fmt.f90 -o psb_c_mv_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_ainv_bld.f90 -o psb_c_ainv_bld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_ainv_bld.f90 -o psb_s_ainv_bld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hll_to_coo.f90 -o psb_c_mv_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_ainv_bld.f90 -o psb_z_ainv_bld.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_invt_fact.f90 -o psb_c_invt_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_mv_hll_to_fmt.f90 -o psb_c_mv_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_invt_fact.f90 -o psb_d_invt_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_dia_from_coo.f90 -o psb_d_cp_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_dia_to_coo.f90 -o psb_d_cp_dia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_ell_from_coo.f90 -o psb_d_cp_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_ell_from_fmt.f90 -o psb_d_cp_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_invt_fact.f90 -o psb_s_invt_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_ell_to_coo.f90 -o psb_d_cp_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_invt_fact.f90 -o psb_z_invt_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_ell_to_fmt.f90 -o psb_d_cp_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_c_invk_fact.f90 -o psb_c_invk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hdia_from_coo.f90 -o psb_d_cp_hdia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hdia_to_coo.f90 -o psb_d_cp_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_d_invk_fact.f90 -o psb_d_invk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hll_from_coo.f90 -o psb_d_cp_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hll_from_fmt.f90 -o psb_d_cp_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hll_to_coo.f90 -o psb_d_cp_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_cp_hll_to_fmt.f90 -o psb_d_cp_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_aclsum.f90 -o psb_d_dia_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_s_invk_fact.f90 -o psb_s_invk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_allocate_mnnz.f90 -o psb_d_dia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_arwsum.f90 -o psb_d_dia_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_colsum.f90 -o psb_d_dia_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_csgetptn.f90 -o psb_d_dia_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -c psb_z_invk_fact.f90 -o psb_z_invk_fact.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_csgetrow.f90 -o psb_d_dia_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_csmm.f90 -o psb_d_dia_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_csmv.f90 -o psb_d_dia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_get_diag.f90 -o psb_d_dia_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_maxval.f90 -o psb_d_dia_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_mold.f90 -o psb_d_dia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_print.f90 -o psb_d_dia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_reallocate_nz.f90 -o psb_d_dia_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_reinit.f90 -o psb_d_dia_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_rowsum.f90 -o psb_d_dia_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_scal.f90 -o psb_d_dia_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dia_scals.f90 -o psb_d_dia_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_aclsum.f90 -o psb_d_ell_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_allocate_mnnz.f90 -o psb_d_ell_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_arwsum.f90 -o psb_d_ell_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_colsum.f90 -o psb_d_ell_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csgetblk.f90 -o psb_d_ell_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csgetptn.f90 -o psb_d_ell_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csgetrow.f90 -o psb_d_ell_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csmm.f90 -o psb_d_ell_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csmv.f90 -o psb_d_ell_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csnm1.f90 -o psb_d_ell_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csnmi.f90 -o psb_d_ell_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_csput.f90 -o psb_d_ell_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_cssm.f90 -o psb_d_ell_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_cssv.f90 -o psb_d_ell_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_get_diag.f90 -o psb_d_ell_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_maxval.f90 -o psb_d_ell_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_mold.f90 -o psb_d_ell_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_print.f90 -o psb_d_ell_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_reallocate_nz.f90 -o psb_d_ell_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_reinit.f90 -o psb_d_ell_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_rowsum.f90 -o psb_d_ell_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_scal.f90 -o psb_d_ell_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_scals.f90 -o psb_d_ell_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_ell_trim.f90 -o psb_d_ell_trim.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hdia_allocate_mnnz.f90 -o psb_d_hdia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hdia_csmv.f90 -o psb_d_hdia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hdia_mold.f90 -o psb_d_hdia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hdia_print.f90 -o psb_d_hdia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_aclsum.f90 -o psb_d_hll_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_allocate_mnnz.f90 -o psb_d_hll_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_arwsum.f90 -o psb_d_hll_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_colsum.f90 -o psb_d_hll_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csgetblk.f90 -o psb_d_hll_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csgetptn.f90 -o psb_d_hll_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csgetrow.f90 -o psb_d_hll_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csmm.f90 -o psb_d_hll_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csmv.f90 -o psb_d_hll_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csnm1.f90 -o psb_d_hll_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csnmi.f90 -o psb_d_hll_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_csput.f90 -o psb_d_hll_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_cssm.f90 -o psb_d_hll_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_cssv.f90 -o psb_d_hll_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_get_diag.f90 -o psb_d_hll_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_maxval.f90 -o psb_d_hll_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_mold.f90 -o psb_d_hll_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_print.f90 -o psb_d_hll_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_reallocate_nz.f90 -o psb_d_hll_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_reinit.f90 -o psb_d_hll_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_rowsum.f90 -o psb_d_hll_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_scal.f90 -o psb_d_hll_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_hll_scals.f90 -o psb_d_hll_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_dia_from_coo.f90 -o psb_d_mv_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_ell_from_coo.f90 -o psb_d_mv_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_ell_from_fmt.f90 -o psb_d_mv_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_ell_to_coo.f90 -o psb_d_mv_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_ell_to_fmt.f90 -o psb_d_mv_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hdia_from_coo.f90 -o psb_d_mv_hdia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hdia_to_coo.f90 -o psb_d_mv_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hll_from_coo.f90 -o psb_d_mv_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hll_from_fmt.f90 -o psb_d_mv_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hll_to_coo.f90 -o psb_d_mv_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_mv_hll_to_fmt.f90 -o psb_d_mv_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_dia_from_coo.f90 -o psb_z_cp_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_dia_to_coo.f90 -o psb_z_cp_dia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_ell_from_coo.f90 -o psb_z_cp_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_ell_from_fmt.f90 -o psb_z_cp_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_ell_to_coo.f90 -o psb_z_cp_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_ell_to_fmt.f90 -o psb_z_cp_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hdia_from_coo.f90 -o psb_z_cp_hdia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hdia_to_coo.f90 -o psb_z_cp_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hll_from_coo.f90 -o psb_z_cp_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hll_from_fmt.f90 -o psb_z_cp_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hll_to_coo.f90 -o psb_z_cp_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_cp_hll_to_fmt.f90 -o psb_z_cp_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_aclsum.f90 -o psb_z_dia_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_allocate_mnnz.f90 -o psb_z_dia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_arwsum.f90 -o psb_z_dia_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_colsum.f90 -o psb_z_dia_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_csgetptn.f90 -o psb_z_dia_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_csgetrow.f90 -o psb_z_dia_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_csmm.f90 -o psb_z_dia_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_csmv.f90 -o psb_z_dia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_get_diag.f90 -o psb_z_dia_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_maxval.f90 -o psb_z_dia_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_mold.f90 -o psb_z_dia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_print.f90 -o psb_z_dia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_reallocate_nz.f90 -o psb_z_dia_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_reinit.f90 -o psb_z_dia_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_rowsum.f90 -o psb_z_dia_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_scal.f90 -o psb_z_dia_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dia_scals.f90 -o psb_z_dia_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_aclsum.f90 -o psb_z_ell_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_allocate_mnnz.f90 -o psb_z_ell_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_arwsum.f90 -o psb_z_ell_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_colsum.f90 -o psb_z_ell_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csgetblk.f90 -o psb_z_ell_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csgetptn.f90 -o psb_z_ell_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csgetrow.f90 -o psb_z_ell_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csmm.f90 -o psb_z_ell_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csmv.f90 -o psb_z_ell_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csnm1.f90 -o psb_z_ell_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csnmi.f90 -o psb_z_ell_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_csput.f90 -o psb_z_ell_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_cssm.f90 -o psb_z_ell_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_cssv.f90 -o psb_z_ell_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_get_diag.f90 -o psb_z_ell_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_maxval.f90 -o psb_z_ell_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_mold.f90 -o psb_z_ell_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_print.f90 -o psb_z_ell_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_reallocate_nz.f90 -o psb_z_ell_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_reinit.f90 -o psb_z_ell_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_rowsum.f90 -o psb_z_ell_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_scal.f90 -o psb_z_ell_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_scals.f90 -o psb_z_ell_scals.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_ell_trim.f90 -o psb_z_ell_trim.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hdia_allocate_mnnz.f90 -o psb_z_hdia_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hdia_csmv.f90 -o psb_z_hdia_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hdia_mold.f90 -o psb_z_hdia_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hdia_print.f90 -o psb_z_hdia_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_aclsum.f90 -o psb_z_hll_aclsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_allocate_mnnz.f90 -o psb_z_hll_allocate_mnnz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_arwsum.f90 -o psb_z_hll_arwsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_colsum.f90 -o psb_z_hll_colsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csgetblk.f90 -o psb_z_hll_csgetblk.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csgetptn.f90 -o psb_z_hll_csgetptn.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csgetrow.f90 -o psb_z_hll_csgetrow.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csmm.f90 -o psb_z_hll_csmm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csmv.f90 -o psb_z_hll_csmv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csnm1.f90 -o psb_z_hll_csnm1.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csnmi.f90 -o psb_z_hll_csnmi.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_csput.f90 -o psb_z_hll_csput.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_cssm.f90 -o psb_z_hll_cssm.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_cssv.f90 -o psb_z_hll_cssv.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_get_diag.f90 -o psb_z_hll_get_diag.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_maxval.f90 -o psb_z_hll_maxval.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_mold.f90 -o psb_z_hll_mold.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_print.f90 -o psb_z_hll_print.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_reallocate_nz.f90 -o psb_z_hll_reallocate_nz.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_reinit.f90 -o psb_z_hll_reinit.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_rowsum.f90 -o psb_z_hll_rowsum.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_scal.f90 -o psb_z_hll_scal.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_hll_scals.f90 -o psb_z_hll_scals.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_dia_from_coo.f90 -o psb_z_mv_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_ell_from_coo.f90 -o psb_z_mv_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_ell_from_fmt.f90 -o psb_z_mv_ell_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_ell_to_coo.f90 -o psb_z_mv_ell_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_ell_to_fmt.f90 -o psb_z_mv_ell_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hdia_from_coo.f90 -o psb_z_mv_hdia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hdia_to_coo.f90 -o psb_z_mv_hdia_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hll_from_coo.f90 -o psb_z_mv_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hll_from_fmt.f90 -o psb_z_mv_hll_from_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hll_to_coo.f90 -o psb_z_mv_hll_to_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_mv_hll_to_fmt.f90 -o psb_z_mv_hll_to_fmt.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_xtr_ell_from_coo.f90 -o psi_s_xtr_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_xtr_ell_from_coo.f90 -o psi_c_xtr_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_xtr_ell_from_coo.f90 -o psi_d_xtr_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_xtr_ell_from_coo.f90 -o psi_z_xtr_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_convert_ell_from_coo.f90 -o psi_s_convert_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_convert_ell_from_coo.f90 -o psi_c_convert_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_convert_ell_from_coo.f90 -o psi_d_convert_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_convert_ell_from_coo.f90 -o psi_z_convert_ell_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_convert_hll_from_coo.f90 -o psi_s_convert_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_convert_hll_from_coo.f90 -o psi_c_convert_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_convert_hll_from_coo.f90 -o psi_d_convert_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_convert_hll_from_coo.f90 -o psi_z_convert_hll_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_xtr_dia_from_coo.f90 -o psi_s_xtr_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_xtr_dia_from_coo.f90 -o psi_c_xtr_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_xtr_dia_from_coo.f90 -o psi_d_xtr_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_xtr_dia_from_coo.f90 -o psi_z_xtr_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_xtr_coo_from_dia.f90 -o psi_s_xtr_coo_from_dia.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_xtr_coo_from_dia.f90 -o psi_d_xtr_coo_from_dia.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_xtr_coo_from_dia.f90 -o psi_c_xtr_coo_from_dia.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_xtr_coo_from_dia.f90 -o psi_z_xtr_coo_from_dia.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_s_convert_dia_from_coo.f90 -o psi_s_convert_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_c_convert_dia_from_coo.f90 -o psi_c_convert_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_d_convert_dia_from_coo.f90 -o psi_d_convert_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psi_z_convert_dia_from_coo.f90 -o psi_z_convert_dia_from_coo.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_s_dns_mat_impl.f90 -o psb_s_dns_mat_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_d_dns_mat_impl.f90 -o psb_d_dns_mat_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_c_dns_mat_impl.f90 -o psb_c_dns_mat_impl.o +mpifort -frecursive -g -O3 -I.. -I../../modules -I../../include -I.. -c psb_z_dns_mat_impl.f90 -o psb_z_dns_mat_impl.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» +/bin/cp -p *.mod psb_base_cbind.h psb_c_base.h psb_c_sbase.h psb_c_dbase.h psb_c_cbase.h psb_c_zbase.h psb_c_scomm.h psb_c_dcomm.h psb_c_ccomm.h psb_c_zcomm.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +cd prec && make objs LIBNAME=libpsb_cbind.a +cd util && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_sprec_cbind_mod.f90 -o psb_sprec_cbind_mod.o +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_c_util_cbind_mod.f90 -o psb_c_util_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_dprec_cbind_mod.f90 -o psb_dprec_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_d_util_cbind_mod.f90 -o psb_d_util_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_cprec_cbind_mod.f90 -o psb_cprec_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_s_util_cbind_mod.f90 -o psb_s_util_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_zprec_cbind_mod.f90 -o psb_zprec_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_z_util_cbind_mod.f90 -o psb_z_util_cbind_mod.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_sprec.c -o psb_c_sprec.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_dprec.c -o psb_c_dprec.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_cprec.c -o psb_c_cprec.o +mpicc -g -O3 -I. -I.. -I../../include -c psb_c_zprec.c -o psb_c_zprec.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_prec_cbind_mod.f90 -o psb_prec_cbind_mod.o +/bin/cp -p *.mod psb_prec_cbind.h psb_c_sprec.h psb_c_dprec.h psb_c_cprec.h psb_c_zprec.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +cd linsolve && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_base_linsolve_cbind_mod.f90 -o psb_base_linsolve_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_slinsolve_cbind_mod.f90 -o psb_slinsolve_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_dlinsolve_cbind_mod.f90 -o psb_dlinsolve_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_clinsolve_cbind_mod.f90 -o psb_clinsolve_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_zlinsolve_cbind_mod.f90 -o psb_zlinsolve_cbind_mod.o +mpifort -frecursive -g -O3 -I. -I.. -I../../modules -c psb_util_cbind_mod.f90 -o psb_util_cbind_mod.o +/bin/cp -p *.mod psb_linsolve_cbind.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.mod psb_util_cbind.h psb_c_cutil.h psb_c_zutil.h psb_c_dutil.h psb_c_sutil.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +/bin/cp -p *.h ../include +/bin/cp -p *.mod ../modules/ +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +make -C cbind objs +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +cd base && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +Makefile:30: attenzione: sovrascrittura del set di istruzioni per l'obiettivo «.F90.o» +../../Make.inc:116: attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «.F90.o» +/bin/cp -p *.mod psb_base_cbind.h psb_c_base.h psb_c_sbase.h psb_c_dbase.h psb_c_cbase.h psb_c_zbase.h psb_c_scomm.h psb_c_dcomm.h psb_c_ccomm.h psb_c_zcomm.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +cd prec && make objs LIBNAME=libpsb_cbind.a +cd util && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +/bin/cp -p *.mod psb_prec_cbind.h psb_c_sprec.h psb_c_dprec.h psb_c_cprec.h psb_c_zprec.h .. +/bin/cp -p *.mod psb_util_cbind.h psb_c_cutil.h psb_c_zutil.h psb_c_dutil.h psb_c_sutil.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +cd linsolve && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.mod psb_linsolve_cbind.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.h ../include +/bin/cp -p *.mod ../modules/ +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +make -C base lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base» +make -C modules objs F90="" F90COPT=" " make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» /usr/bin/install -c -p -p *.mod ../../modules /usr/bin/install -c -p -p psb_config.h psb_types.h ../../include @@ -40,34 +1444,139 @@ make -C impl objs make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» make -C internals objs make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» -make -C sort objs (make psi_desc_index.o psi_fnd_owner.o psi_a2a_fnd_owner.o psi_graph_fnd_owner.o psi_adjcncy_fnd_owner.o psi_symm_dep_list.o FC="mpifort") +make -C sort objs make psb_dscatter.o psb_zscatter.o psb_iscatter.o psb_lscatter.o psb_cscatter.o psb_sscatter.o psb_dscatter_a.o psb_zscatter_a.o psb_mscatter_a.o psb_escatter_a.o psb_cscatter_a.o psb_sscatter_a.o psb_dspgather.o psb_sspgather.o psb_zspgather.o psb_cspgather.o FC="mpifort" make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dspmm.f90 -o psb_dspmm.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dhalo.f90 -o psb_dhalo.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dspsm.f90 -o psb_dspsm.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sgeprt.f90 -o psb_sgeprt.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_dovrl.f90 -o psb_dovrl.o +make[2]: Nessuna operazione da eseguire per «objs». +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» (make psb_icdasb.o psb_ssphalo.o psb_dsphalo.o psb_csphalo.o psb_zsphalo.o psb_dcdbldext.o psb_zcdbldext.o psb_scdbldext.o psb_ccdbldext.o psb_s_remote_mat.o psb_d_remote_mat.o psb_c_remote_mat.o psb_z_remote_mat.o psb_s_remote_vect.o psb_d_remote_vect.o psb_c_remote_vect.o psb_z_remote_vect.o psb_e_remote_vect.o psb_m_remote_vect.o FC="mpifort") -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_shalo.f90 -o psb_shalo.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zgeprt.f90 -o psb_zgeprt.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zspmm.f90 -o psb_zspmm.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_zspsm.f90 -o psb_zspsm.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_dspins.F90 -o psb_dspins.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sovrl.f90 -o psb_sovrl.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_saxpby.f90 -o psb_saxpby.o make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» (make psi_dswapdata.o psi_dswaptran.o psi_sswapdata.o psi_sswaptran.o psi_iswapdata.o psi_iswaptran.o psi_lswapdata.o psi_lswaptran.o psi_cswapdata.o psi_cswaptran.o psi_zswapdata.o psi_zswaptran.o psi_dswapdata_a.o psi_dswaptran_a.o psi_sswapdata_a.o psi_sswaptran_a.o psi_mswapdata_a.o psi_mswaptran_a.o psi_eswapdata_a.o psi_eswaptran_a.o psi_cswapdata_a.o psi_cswaptran_a.o psi_zswapdata_a.o psi_zswaptran_a.o FC="mpifort" ) make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_base_mat_impl.F90 -o psb_s_base_mat_impl.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sdot.f90 -o psb_sdot.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_iovrl.f90 -o psb_iovrl.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_lins.f90 -o psb_lins.o -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_base_mat_impl.F90 -o psb_d_base_mat_impl.o +make[3]: Nessuna operazione da eseguire per «objs». +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psb_e_qsort_impl.f90 -o psb_e_qsort_impl.o +make[3]: Nessuna operazione da eseguire per «objs». +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial» +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make[3]: «psb_dscatter.o» è aggiornato. +make[3]: «psi_desc_index.o» è aggiornato. +make[3]: «psb_zscatter.o» è aggiornato. +make[3]: «psi_fnd_owner.o» è aggiornato. +make[3]: «psb_iscatter.o» è aggiornato. +make[3]: «psi_a2a_fnd_owner.o» è aggiornato. +make[3]: «psb_lscatter.o» è aggiornato. +make[3]: «psi_graph_fnd_owner.o» è aggiornato. +make[3]: «psb_cscatter.o» è aggiornato. +make[3]: «psi_adjcncy_fnd_owner.o» è aggiornato. +make[3]: «psb_sscatter.o» è aggiornato. +make[3]: «psi_symm_dep_list.o» è aggiornato. +make[3]: «psb_dscatter_a.o» è aggiornato. +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +make[3]: «psb_zscatter_a.o» è aggiornato. +make[3]: «psb_mscatter_a.o» è aggiornato. +make[3]: «psb_escatter_a.o» è aggiornato. +make[3]: «psb_cscatter_a.o» è aggiornato. +make[3]: «psb_sscatter_a.o» è aggiornato. +make[3]: «psb_dspgather.o» è aggiornato. +make[3]: «psb_sspgather.o» è aggiornato. +make[3]: «psb_zspgather.o» è aggiornato. +make[3]: «psb_cspgather.o» è aggiornato. +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +make[4]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[4]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +make[3]: «psb_icdasb.o» è aggiornato. +make[3]: «psb_ssphalo.o» è aggiornato. +make[3]: «psb_dsphalo.o» è aggiornato. +make[3]: «psb_csphalo.o» è aggiornato. +make[3]: «psb_zsphalo.o» è aggiornato. +make[3]: «psb_dcdbldext.o» è aggiornato. +make[3]: «psb_zcdbldext.o» è aggiornato. +make[3]: «psb_scdbldext.o» è aggiornato. +make[3]: «psb_ccdbldext.o» è aggiornato. +make[3]: «psb_s_remote_mat.o» è aggiornato. +make[3]: «psb_d_remote_mat.o» è aggiornato. +make[3]: «psb_c_remote_mat.o» è aggiornato. +make[3]: «psb_z_remote_mat.o» è aggiornato. +make[3]: «psb_s_remote_vect.o» è aggiornato. +make[3]: «psb_d_remote_vect.o» è aggiornato. +make[3]: «psb_c_remote_vect.o» è aggiornato. +make[3]: «psb_z_remote_vect.o» è aggiornato. +make[3]: «psb_e_remote_vect.o» è aggiornato. +make[3]: «psb_m_remote_vect.o» è aggiornato. +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +make[4]: «psi_dswapdata.o» è aggiornato. +make[4]: «psi_dswaptran.o» è aggiornato. +make[4]: «psi_sswapdata.o» è aggiornato. +make[4]: «psi_sswaptran.o» è aggiornato. +make[4]: «psi_iswapdata.o» è aggiornato. +make[4]: «psi_iswaptran.o» è aggiornato. +make[4]: «psi_lswapdata.o» è aggiornato. +make[4]: «psi_lswaptran.o» è aggiornato. +make[4]: «psi_cswapdata.o» è aggiornato. +make[4]: «psi_cswaptran.o» è aggiornato. +make[4]: «psi_zswapdata.o» è aggiornato. +make[4]: «psi_zswaptran.o» è aggiornato. +make[4]: «psi_dswapdata_a.o» è aggiornato. +make[4]: «psi_dswaptran_a.o» è aggiornato. +make[4]: «psi_sswapdata_a.o» è aggiornato. +make[4]: «psi_sswaptran_a.o» è aggiornato. +make[4]: «psi_mswapdata_a.o» è aggiornato. +make[4]: «psi_mswaptran_a.o» è aggiornato. +make[4]: «psi_eswapdata_a.o» è aggiornato. +make[4]: «psi_eswaptran_a.o» è aggiornato. +make[4]: «psi_cswapdata_a.o» è aggiornato. +make[4]: «psi_cswaptran_a.o» è aggiornato. +make[4]: «psi_zswapdata_a.o» è aggiornato. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +make[4]: «psi_zswaptran_a.o» è aggiornato. +make[4]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make -C modules lib LIBNAME=libpsb_base.a F90="" F90COPT=" " +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» +/usr/bin/install -c -p -p *.mod ../../modules +/usr/bin/install -c -p -p psb_config.h psb_types.h ../../include +ar -cDr ..//libpsb_base.a psb_const_mod.o psb_cbind_const_mod.o psb_error_mod.o psb_realloc_mod.o auxil/psb_string_mod.o auxil/psb_m_realloc_mod.o auxil/psb_e_realloc_mod.o auxil/psb_s_realloc_mod.o auxil/psb_d_realloc_mod.o auxil/psb_c_realloc_mod.o auxil/psb_z_realloc_mod.o serial/psb_s_serial_mod.o serial/psb_d_serial_mod.o serial/psb_c_serial_mod.o serial/psb_z_serial_mod.o serial/psb_serial_mod.o comm/psb_neighbor_topology_mod.o serial/psb_i_base_vect_mod.o serial/psb_i_vect_mod.o serial/psb_l_base_vect_mod.o serial/psb_l_vect_mod.o serial/psb_d_base_vect_mod.o serial/psb_d_vect_mod.o serial/psb_s_base_vect_mod.o serial/psb_s_vect_mod.o serial/psb_c_base_vect_mod.o serial/psb_c_vect_mod.o serial/psb_z_base_vect_mod.o serial/psb_z_vect_mod.o serial/psb_vect_mod.o auxil/psi_serial_mod.o auxil/psi_m_serial_mod.o auxil/psi_e_serial_mod.o auxil/psi_s_serial_mod.o auxil/psi_d_serial_mod.o auxil/psi_c_serial_mod.o auxil/psi_z_serial_mod.o psi_mod.o psi_i_mod.o psi_l_mod.o psi_s_mod.o psi_d_mod.o psi_c_mod.o psi_z_mod.o auxil/psb_ip_reord_mod.o auxil/psi_acx_mod.o auxil/psi_alcx_mod.o auxil/psi_lcx_mod.o auxil/psb_m_ip_reord_mod.o auxil/psb_e_ip_reord_mod.o auxil/psb_s_ip_reord_mod.o auxil/psb_d_ip_reord_mod.o auxil/psb_c_ip_reord_mod.o auxil/psb_z_ip_reord_mod.o auxil/psb_m_hsort_mod.o auxil/psb_m_isort_mod.o auxil/psb_m_msort_mod.o auxil/psb_m_qsort_mod.o auxil/psb_e_hsort_mod.o auxil/psb_e_isort_mod.o auxil/psb_e_msort_mod.o auxil/psb_e_qsort_mod.o auxil/psb_s_hsort_mod.o auxil/psb_s_isort_mod.o auxil/psb_s_msort_mod.o auxil/psb_s_qsort_mod.o auxil/psb_d_hsort_mod.o auxil/psb_d_isort_mod.o auxil/psb_d_msort_mod.o auxil/psb_d_qsort_mod.o auxil/psb_c_hsort_mod.o auxil/psb_c_isort_mod.o auxil/psb_c_msort_mod.o auxil/psb_c_qsort_mod.o auxil/psb_z_hsort_mod.o auxil/psb_z_isort_mod.o auxil/psb_z_msort_mod.o auxil/psb_z_qsort_mod.o auxil/psb_i_hsort_x_mod.o auxil/psb_l_hsort_x_mod.o auxil/psb_s_hsort_x_mod.o auxil/psb_d_hsort_x_mod.o auxil/psb_c_hsort_x_mod.o auxil/psb_z_hsort_x_mod.o auxil/psb_s_rb_idx_tree_mod.o auxil/psb_d_rb_idx_tree_mod.o auxil/psb_c_rb_idx_tree_mod.o auxil/psb_z_rb_idx_tree_mod.o auxil/psb_rb_idx_tree_mod.o serial/psb_base_mat_mod.o serial/psb_mat_mod.o serial/psb_s_base_mat_mod.o serial/psb_s_csr_mat_mod.o serial/psb_s_csc_mat_mod.o serial/psb_s_mat_mod.o serial/psb_d_base_mat_mod.o serial/psb_d_csr_mat_mod.o serial/psb_d_csc_mat_mod.o serial/psb_d_mat_mod.o serial/psb_c_base_mat_mod.o serial/psb_c_csr_mat_mod.o serial/psb_c_csc_mat_mod.o serial/psb_c_mat_mod.o serial/psb_z_base_mat_mod.o serial/psb_z_csr_mat_mod.o serial/psb_z_csc_mat_mod.o serial/psb_z_mat_mod.o desc/psb_desc_const_mod.o desc/psb_indx_map_mod.o desc/psb_gen_block_map_mod.o desc/psb_list_map_mod.o desc/psb_repl_map_mod.o desc/psb_glist_map_mod.o desc/psb_hash_map_mod.o desc/psb_hashval.o desc/psb_desc_mod.o auxil/psb_sort_mod.o tools/psb_cd_tools_mod.o tools/psb_i_tools_mod.o tools/psb_l_tools_mod.o tools/psb_s_tools_mod.o tools/psb_d_tools_mod.o tools/psb_c_tools_mod.o tools/psb_z_tools_mod.o tools/psb_m_tools_a_mod.o tools/psb_e_tools_a_mod.o tools/psb_s_tools_a_mod.o tools/psb_d_tools_a_mod.o tools/psb_c_tools_a_mod.o tools/psb_z_tools_a_mod.o tools/psb_tools_mod.o psb_penv_mod.o penv/psi_penv_mod.o penv/psi_p2p_mod.o penv/psi_m_p2p_mod.o penv/psi_i2_p2p_mod.o penv/psi_e_p2p_mod.o penv/psi_s_p2p_mod.o penv/psi_d_p2p_mod.o penv/psi_c_p2p_mod.o penv/psi_z_p2p_mod.o penv/psi_collective_mod.o penv/psi_i2_collective_mod.o penv/psi_e_collective_mod.o penv/psi_m_collective_mod.o penv/psi_s_collective_mod.o penv/psi_d_collective_mod.o penv/psi_c_collective_mod.o penv/psi_z_collective_mod.o psb_error_impl.o psb_timers_mod.o comm/psb_base_linmap_mod.o comm/psb_linmap_mod.o comm/psb_s_linmap_mod.o comm/psb_d_linmap_mod.o comm/psb_c_linmap_mod.o comm/psb_z_linmap_mod.o comm/psb_comm_mod.o comm/psb_i_comm_mod.o comm/psb_l_comm_mod.o comm/psb_s_comm_mod.o comm/psb_d_comm_mod.o comm/psb_c_comm_mod.o comm/psb_z_comm_mod.o comm/psb_m_comm_a_mod.o comm/psb_e_comm_a_mod.o comm/psb_s_comm_a_mod.o comm/psb_d_comm_a_mod.o comm/psb_c_comm_a_mod.o comm/psb_z_comm_a_mod.o comm/psi_e_comm_a_mod.o comm/psi_m_comm_a_mod.o comm/psi_s_comm_a_mod.o comm/psi_d_comm_a_mod.o comm/psi_c_comm_a_mod.o comm/psi_z_comm_a_mod.o comm/psi_i_comm_v_mod.o comm/psi_l_comm_v_mod.o comm/psi_s_comm_v_mod.o comm/psi_d_comm_v_mod.o comm/psi_c_comm_v_mod.o comm/psi_z_comm_v_mod.o psblas/psb_s_psblas_mod.o psblas/psb_c_psblas_mod.o psblas/psb_d_psblas_mod.o psblas/psb_z_psblas_mod.o psblas/psb_psblas_mod.o psb_check_mod.o desc/psb_hash_mod.o error.o psb_base_mod.o cutil.o +ranlib ..//libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/modules» +make -C serial lib LIBNAME=libpsb_base.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial» +make -C impl objs +make -C sort objs +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +make[3]: Nessuna operazione da eseguire per «objs». +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +make[3]: Nessuna operazione da eseguire per «objs». +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +make -C impl lib +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +ar -cDr ../../libpsb_base.a psb_base_mat_impl.o psb_s_base_mat_impl.o psb_d_base_mat_impl.o psb_c_base_mat_impl.o psb_z_base_mat_impl.o psb_s_csr_impl.o psb_s_coo_impl.o psb_s_csc_impl.o psb_s_mat_impl.o psb_s_rb_idx_tree_impl.o psb_d_csr_impl.o psb_d_coo_impl.o psb_d_csc_impl.o psb_d_mat_impl.o psb_d_rb_idx_tree_impl.o psb_c_csr_impl.o psb_c_coo_impl.o psb_c_csc_impl.o psb_c_mat_impl.o psb_c_rb_idx_tree_impl.o psb_z_csr_impl.o psb_z_coo_impl.o psb_z_csc_impl.o psb_z_mat_impl.o psb_z_rb_idx_tree_impl.o +ranlib ../../libpsb_base.a +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/impl» +make -C sort lib +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +ar -cDr ../../libpsb_base.a psb_s_hsort_impl.o psb_s_isort_impl.o psb_s_msort_impl.o psb_s_qsort_impl.o psb_d_hsort_impl.o psb_d_isort_impl.o psb_d_msort_impl.o psb_d_qsort_impl.o psb_c_hsort_impl.o psb_c_isort_impl.o psb_c_msort_impl.o psb_c_qsort_impl.o psb_z_hsort_impl.o psb_z_isort_impl.o psb_z_msort_impl.o psb_z_qsort_impl.o psb_m_hsort_impl.o psb_m_isort_impl.o psb_m_msort_impl.o psb_m_qsort_impl.o psb_e_hsort_impl.o psb_e_isort_impl.o psb_e_msort_impl.o psb_e_qsort_impl.o +ranlib ../../libpsb_base.a +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» +ar -cDr ../libpsb_base.a psb_lsame.o psi_m_serial_impl.o psi_e_serial_impl.o psi_s_serial_impl.o psi_d_serial_impl.o psi_c_serial_impl.o psi_z_serial_impl.o psb_srwextd.o psb_drwextd.o psb_crwextd.o psb_zrwextd.o psb_sspspmm.o psb_dspspmm.o psb_cspspmm.o psb_zspspmm.o psb_ssymbmm.o psb_dsymbmm.o psb_csymbmm.o psb_zsymbmm.o psb_snumbmm.o psb_dnumbmm.o psb_cnumbmm.o psb_znumbmm.o smmp.o lsmmp.o psb_sgeprt.o psb_dgeprt.o psb_cgeprt.o psb_zgeprt.o psb_spdot_srtd.o psb_aspxpby.o psb_spge_dot.o psb_saplusat.o psb_daplusat.o psb_caplusat.o psb_zaplusat.o psb_samax_s.o psb_damax_s.o psb_camax_s.o psb_zamax_s.o psb_sasum_s.o psb_dasum_s.o psb_casum_s.o psb_zasum_s.o +ranlib ../libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial» +make -C comm lib LIBNAME=libpsb_base.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make -C internals objs +make psb_dscatter.o psb_zscatter.o psb_iscatter.o psb_lscatter.o psb_cscatter.o psb_sscatter.o psb_dscatter_a.o psb_zscatter_a.o psb_mscatter_a.o psb_escatter_a.o psb_cscatter_a.o psb_sscatter_a.o psb_dspgather.o psb_sspgather.o psb_zspgather.o psb_cspgather.o FC="mpifort" +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +(make psi_dswapdata.o psi_dswaptran.o psi_sswapdata.o psi_sswaptran.o psi_iswapdata.o psi_iswaptran.o psi_lswapdata.o psi_lswaptran.o psi_cswapdata.o psi_cswaptran.o psi_zswapdata.o psi_zswaptran.o psi_dswapdata_a.o psi_dswaptran_a.o psi_sswapdata_a.o psi_sswaptran_a.o psi_mswapdata_a.o psi_mswaptran_a.o psi_eswapdata_a.o psi_eswaptran_a.o psi_cswapdata_a.o psi_cswaptran_a.o psi_zswapdata_a.o psi_zswaptran_a.o FC="mpifort" ) make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» make[3]: «psb_dscatter.o» è aggiornato. make[3]: «psb_zscatter.o» è aggiornato. @@ -86,9 +1595,75 @@ make[3]: «psb_sspgather.o» è aggiornato. make[3]: «psb_zspgather.o» è aggiornato. make[3]: «psb_cspgather.o» è aggiornato. make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make[4]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[4]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +make[4]: «psi_dswapdata.o» è aggiornato. +make[4]: «psi_dswaptran.o» è aggiornato. +make[4]: «psi_sswapdata.o» è aggiornato. +make[4]: «psi_sswaptran.o» è aggiornato. +make[4]: «psi_iswapdata.o» è aggiornato. +make[4]: «psi_iswaptran.o» è aggiornato. +make[4]: «psi_lswapdata.o» è aggiornato. +make[4]: «psi_lswaptran.o» è aggiornato. +make[4]: «psi_cswapdata.o» è aggiornato. +make[4]: «psi_cswaptran.o» è aggiornato. +make[4]: «psi_zswapdata.o» è aggiornato. +make[4]: «psi_zswaptran.o» è aggiornato. +make[4]: «psi_dswapdata_a.o» è aggiornato. +make[4]: «psi_dswaptran_a.o» è aggiornato. +make[4]: «psi_sswapdata_a.o» è aggiornato. +make[4]: «psi_sswaptran_a.o» è aggiornato. +make[4]: «psi_mswapdata_a.o» è aggiornato. +make[4]: «psi_mswaptran_a.o» è aggiornato. +make[4]: «psi_eswapdata_a.o» è aggiornato. +make[4]: «psi_eswaptran_a.o» è aggiornato. +make[4]: «psi_cswapdata_a.o» è aggiornato. +make[4]: «psi_cswaptran_a.o» è aggiornato. +make[4]: «psi_zswapdata_a.o» è aggiornato. +make[4]: «psi_zswaptran_a.o» è aggiornato. +make[4]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make -C internals lib LIBNAME=libpsb_base.a +make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +(make psi_dswapdata.o psi_dswaptran.o psi_sswapdata.o psi_sswaptran.o psi_iswapdata.o psi_iswaptran.o psi_lswapdata.o psi_lswaptran.o psi_cswapdata.o psi_cswaptran.o psi_zswapdata.o psi_zswaptran.o psi_dswapdata_a.o psi_dswaptran_a.o psi_sswapdata_a.o psi_sswaptran_a.o psi_mswapdata_a.o psi_mswaptran_a.o psi_eswapdata_a.o psi_eswaptran_a.o psi_cswapdata_a.o psi_cswaptran_a.o psi_zswapdata_a.o psi_zswaptran_a.o FC="mpifort" ) +make[4]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +make[4]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. +make[4]: «psi_dswapdata.o» è aggiornato. +make[4]: «psi_dswaptran.o» è aggiornato. +make[4]: «psi_sswapdata.o» è aggiornato. +make[4]: «psi_sswaptran.o» è aggiornato. +make[4]: «psi_iswapdata.o» è aggiornato. +make[4]: «psi_iswaptran.o» è aggiornato. +make[4]: «psi_lswapdata.o» è aggiornato. +make[4]: «psi_lswaptran.o» è aggiornato. +make[4]: «psi_cswapdata.o» è aggiornato. +make[4]: «psi_cswaptran.o» è aggiornato. +make[4]: «psi_zswapdata.o» è aggiornato. +make[4]: «psi_zswaptran.o» è aggiornato. +make[4]: «psi_dswapdata_a.o» è aggiornato. +make[4]: «psi_dswaptran_a.o» è aggiornato. +make[4]: «psi_sswapdata_a.o» è aggiornato. +make[4]: «psi_sswaptran_a.o» è aggiornato. +make[4]: «psi_mswapdata_a.o» è aggiornato. +make[4]: «psi_mswaptran_a.o» è aggiornato. +make[4]: «psi_eswapdata_a.o» è aggiornato. +make[4]: «psi_eswaptran_a.o» è aggiornato. +make[4]: «psi_cswapdata_a.o» è aggiornato. +make[4]: «psi_cswaptran_a.o» è aggiornato. +make[4]: «psi_zswapdata_a.o» è aggiornato. +make[4]: «psi_zswaptran_a.o» è aggiornato. +make[4]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +ar -cDr ../../libpsb_base.a psi_dswapdata.o psi_dswaptran.o psi_sswapdata.o psi_sswaptran.o psi_iswapdata.o psi_iswaptran.o psi_lswapdata.o psi_lswaptran.o psi_cswapdata.o psi_cswaptran.o psi_zswapdata.o psi_zswaptran.o psi_dswapdata_a.o psi_dswaptran_a.o psi_sswapdata_a.o psi_sswaptran_a.o psi_mswapdata_a.o psi_mswaptran_a.o psi_eswapdata_a.o psi_eswaptran_a.o psi_cswapdata_a.o psi_cswaptran_a.o psi_zswapdata_a.o psi_zswaptran_a.o psi_iovrl_restr.o psi_iovrl_save.o psi_iovrl_upd.o psi_lovrl_restr.o psi_lovrl_save.o psi_lovrl_upd.o psi_sovrl_restr.o psi_sovrl_save.o psi_sovrl_upd.o psi_dovrl_restr.o psi_dovrl_save.o psi_dovrl_upd.o psi_covrl_restr.o psi_covrl_save.o psi_covrl_upd.o psi_zovrl_restr.o psi_zovrl_save.o psi_zovrl_upd.o psi_movrl_restr_a.o psi_movrl_save_a.o psi_movrl_upd_a.o psi_eovrl_restr_a.o psi_eovrl_save_a.o psi_eovrl_upd_a.o psi_sovrl_restr_a.o psi_sovrl_save_a.o psi_sovrl_upd_a.o psi_dovrl_restr_a.o psi_dovrl_save_a.o psi_dovrl_upd_a.o psi_covrl_restr_a.o psi_covrl_save_a.o psi_covrl_upd_a.o psi_zovrl_restr_a.o psi_zovrl_save_a.o psi_zovrl_upd_a.o +ranlib ../../libpsb_base.a +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» +ar -cDr ../libpsb_base.a psb_dscatter.o psb_zscatter.o psb_iscatter.o psb_lscatter.o psb_cscatter.o psb_sscatter.o psb_dscatter_a.o psb_zscatter_a.o psb_mscatter_a.o psb_escatter_a.o psb_cscatter_a.o psb_sscatter_a.o psb_dspgather.o psb_sspgather.o psb_zspgather.o psb_cspgather.o psb_dgather.o psb_dhalo.o psb_dovrl.o psb_sgather.o psb_shalo.o psb_sovrl.o psb_igather.o psb_ihalo.o psb_iovrl.o psb_lgather.o psb_lhalo.o psb_lovrl.o psb_cgather.o psb_chalo.o psb_covrl.o psb_zgather.o psb_zhalo.o psb_zovrl.o psb_dgather_a.o psb_dhalo_a.o psb_dovrl_a.o psb_sgather_a.o psb_shalo_a.o psb_sovrl_a.o psb_mgather_a.o psb_mhalo_a.o psb_movrl_a.o psb_egather_a.o psb_ehalo_a.o psb_eovrl_a.o psb_cgather_a.o psb_chalo_a.o psb_covrl_a.o psb_zgather_a.o psb_zhalo_a.o psb_zovrl_a.o +ranlib ../libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm» +make -C auxil lib LIBNAME=libpsb_base.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +(make psi_desc_index.o psi_fnd_owner.o psi_a2a_fnd_owner.o psi_graph_fnd_owner.o psi_adjcncy_fnd_owner.o psi_symm_dep_list.o FC="mpifort") make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_base_mat_impl.F90 -o psb_c_base_mat_impl.o make[3]: «psi_desc_index.o» è aggiornato. make[3]: «psi_fnd_owner.o» è aggiornato. make[3]: «psi_a2a_fnd_owner.o» è aggiornato. @@ -96,14 +1671,21 @@ make[3]: «psi_graph_fnd_owner.o» è aggiornato. make[3]: «psi_adjcncy_fnd_owner.o» è aggiornato. make[3]: «psi_symm_dep_list.o» è aggiornato. make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +ar -cDr ../libpsb_base.a psi_desc_index.o psi_fnd_owner.o psi_a2a_fnd_owner.o psi_graph_fnd_owner.o psi_adjcncy_fnd_owner.o psi_symm_dep_list.o psi_crea_bnd_elem.o psi_crea_index.o psi_crea_ovr_elem.o psi_bld_tmpovrl.o psi_bld_tmphalo.o psi_sort_dl.o psi_indx_map_fnd_owner.o psi_desc_impl.o psi_hash_impl.o psi_srtlist.o psi_bld_glb_dep_list.o psi_xtr_loc_dl.o +ranlib ../libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» +make -C psblas lib LIBNAME=libpsb_base.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» +ar -cDr ../libpsb_base.a psb_ddot.o psb_damax.o psb_dasum.o psb_daxpby.o psb_dnrm2.o psb_dnrmi.o psb_dspmm.o psb_dspsm.o psb_sspnrm1.o psb_dspnrm1.o psb_cspnrm1.o psb_zspnrm1.o psb_zamax.o psb_zasum.o psb_zaxpby.o psb_zdot.o psb_znrm2.o psb_znrmi.o psb_zspmm.o psb_zspsm.o psb_saxpby.o psb_sdot.o psb_sasum.o psb_samax.o psb_snrm2.o psb_snrmi.o psb_sspmm.o psb_sspsm.o psb_camax.o psb_casum.o psb_caxpby.o psb_cdot.o psb_cnrm2.o psb_cnrmi.o psb_cspmm.o psb_cspsm.o psb_cmlt_vect.o psb_dmlt_vect.o psb_zmlt_vect.o psb_smlt_vect.o psb_cdiv_vect.o psb_ddiv_vect.o psb_zdiv_vect.o psb_sdiv_vect.o psb_cinv_vect.o psb_dinv_vect.o psb_zinv_vect.o psb_sinv_vect.o psb_dcmp_vect.o psb_scmp_vect.o psb_ccmp_vect.o psb_zcmp_vect.o psb_cabs_vect.o psb_dabs_vect.o psb_sabs_vect.o psb_zabs_vect.o psb_cgetmatinfo.o psb_dgetmatinfo.o psb_sgetmatinfo.o psb_zgetmatinfo.o +ranlib ../libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/psblas» +make -C tools lib LIBNAME=libpsb_base.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +(make psb_icdasb.o psb_ssphalo.o psb_dsphalo.o psb_csphalo.o psb_zsphalo.o psb_dcdbldext.o psb_zcdbldext.o psb_scdbldext.o psb_ccdbldext.o psb_s_remote_mat.o psb_d_remote_mat.o psb_c_remote_mat.o psb_z_remote_mat.o psb_s_remote_vect.o psb_d_remote_vect.o psb_c_remote_vect.o psb_z_remote_vect.o psb_e_remote_vect.o psb_m_remote_vect.o FC="mpifort") make[3]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» make[3]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. -make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/auxil» make[3]: «psb_icdasb.o» è aggiornato. -make[4]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/comm/internals» make[3]: «psb_ssphalo.o» è aggiornato. -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_z_base_mat_impl.F90 -o psb_z_base_mat_impl.o -make[4]: attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla regola make superiore. make[3]: «psb_dsphalo.o» è aggiornato. make[3]: «psb_csphalo.o» è aggiornato. make[3]: «psb_zsphalo.o» è aggiornato. @@ -111,96 +1693,127 @@ make[3]: «psb_dcdbldext.o» è aggiornato. make[3]: «psb_zcdbldext.o» è aggiornato. make[3]: «psb_scdbldext.o» è aggiornato. make[3]: «psb_ccdbldext.o» è aggiornato. -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_remote_mat.F90 -o psb_s_remote_mat.o -make[4]: «psi_dswapdata.o» è aggiornato. -make[4]: «psi_dswaptran.o» è aggiornato. -make[4]: «psi_sswapdata.o» è aggiornato. -make[4]: «psi_sswaptran.o» è aggiornato. -make[4]: «psi_iswapdata.o» è aggiornato. -make[4]: «psi_iswaptran.o» è aggiornato. -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_lswapdata.F90 -o psi_lswapdata.o +make[3]: «psb_s_remote_mat.o» è aggiornato. +make[3]: «psb_d_remote_mat.o» è aggiornato. +make[3]: «psb_c_remote_mat.o» è aggiornato. +make[3]: «psb_z_remote_mat.o» è aggiornato. +make[3]: «psb_s_remote_vect.o» è aggiornato. +make[3]: «psb_d_remote_vect.o» è aggiornato. +make[3]: «psb_c_remote_vect.o» è aggiornato. +make[3]: «psb_z_remote_vect.o» è aggiornato. +make[3]: «psb_e_remote_vect.o» è aggiornato. +make[3]: «psb_m_remote_vect.o» è aggiornato. +make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +ar -cDr ../libpsb_base.a psb_icdasb.o psb_ssphalo.o psb_dsphalo.o psb_csphalo.o psb_zsphalo.o psb_dcdbldext.o psb_zcdbldext.o psb_scdbldext.o psb_ccdbldext.o psb_s_remote_mat.o psb_d_remote_mat.o psb_c_remote_mat.o psb_z_remote_mat.o psb_s_remote_vect.o psb_d_remote_vect.o psb_c_remote_vect.o psb_z_remote_vect.o psb_e_remote_vect.o psb_m_remote_vect.o psb_cdall.o psb_cdals.o psb_cdalv.o psb_cd_inloc.o psb_cdins.o psb_cdprt.o psb_cdren.o psb_cdrep.o psb_get_overlap.o psb_cd_lstext.o psb_cd_remap.o psb_cdcpy.o psb_cd_reinit.o psb_cd_switch_ovl_indxmap.o psb_cd_renum_block.o psb_dspalloc.o psb_dspasb.o psb_d_remap.o psb_dspfree.o psb_dspins.o psb_dsprn.o psb_sspalloc.o psb_sspasb.o psb_s_remap.o psb_sspfree.o psb_sspins.o psb_ssprn.o psb_glob_to_loc.o psb_loc_to_glob.o psb_iallc.o psb_iasb.o psb_ifree.o psb_iins.o psb_lallc.o psb_lasb.o psb_lfree.o psb_lins.o psb_sallc.o psb_sasb.o psb_sfree.o psb_sins.o psb_dallc.o psb_dasb.o psb_dfree.o psb_dins.o psb_callc.o psb_casb.o psb_cfree.o psb_cins.o psb_zallc.o psb_zasb.o psb_zfree.o psb_zins.o psb_mallc_a.o psb_masb_a.o psb_mfree_a.o psb_mins_a.o psb_eallc_a.o psb_easb_a.o psb_efree_a.o psb_eins_a.o psb_sallc_a.o psb_sasb_a.o psb_sfree_a.o psb_sins_a.o psb_dallc_a.o psb_dasb_a.o psb_dfree_a.o psb_dins_a.o psb_callc_a.o psb_casb_a.o psb_cfree_a.o psb_cins_a.o psb_zallc_a.o psb_zasb_a.o psb_zfree_a.o psb_zins_a.o psb_zspalloc.o psb_zspasb.o psb_z_remap.o psb_zspfree.o psb_zspins.o psb_zsprn.o psb_cspalloc.o psb_cspasb.o psb_c_remap.o psb_cspfree.o psb_cspins.o psb_csprn.o psb_cd_set_bld.o psb_s_map.o psb_d_map.o psb_c_map.o psb_z_map.o psb_s_par_csr_spspmm.o psb_d_par_csr_spspmm.o psb_c_par_csr_spspmm.o psb_z_par_csr_spspmm.o psb_s_glob_transpose.o psb_d_glob_transpose.o psb_c_glob_transpose.o psb_z_glob_transpose.o psb_cgetelem.o psb_dgetelem.o psb_sgetelem.o psb_zgetelem.o +ranlib ../libpsb_base.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/tools» +/bin/cp -p ./libpsb_base.a ../lib +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base» +make -C prec lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +/usr/bin/install -c -p -p *.mod ../modules +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +make[2]: Nessuna operazione da eseguire per «objs». +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +make -C impl lib +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +ar -cDr ../libpsb_prec.a psb_s_prec_type_impl.o psb_d_prec_type_impl.o psb_c_prec_type_impl.o psb_z_prec_type_impl.o psb_d_diagprec_impl.o psb_d_bjacprec_impl.o psb_d_nullprec_impl.o psb_d_ilu0_fact.o psb_d_iluk_fact.o psb_d_ilut_fact.o psb_dprecbld.o psb_dprecinit.o psb_s_diagprec_impl.o psb_s_bjacprec_impl.o psb_s_nullprec_impl.o psb_s_ilu0_fact.o psb_s_iluk_fact.o psb_s_ilut_fact.o psb_sprecbld.o psb_sprecinit.o psb_c_diagprec_impl.o psb_c_bjacprec_impl.o psb_c_nullprec_impl.o psb_c_ilu0_fact.o psb_c_iluk_fact.o psb_c_ilut_fact.o psb_cprecbld.o psb_cprecinit.o psb_z_diagprec_impl.o psb_z_bjacprec_impl.o psb_z_nullprec_impl.o psb_z_ilu0_fact.o psb_z_iluk_fact.o psb_z_ilut_fact.o psb_zprecbld.o psb_zprecinit.o psb_c_sparsify.o psb_d_sparsify.o psb_s_sparsify.o psb_z_sparsify.o psb_crwclip.o psb_drwclip.o psb_srwclip.o psb_zrwclip.o psb_c_sp_drop.o psb_d_sp_drop.o psb_s_sp_drop.o psb_z_sp_drop.o psb_dsparse_biconjg_llk_noth.o psb_dsparse_biconjg_llk.o psb_dsparse_biconjg_mlk.o psb_dsparse_biconjg_s_ft_llk.o psb_dsparse_biconjg_s_llk.o psb_csparse_biconjg_llk_noth.o psb_csparse_biconjg_llk.o psb_csparse_biconjg_mlk.o psb_csparse_biconjg_s_ft_llk.o psb_csparse_biconjg_s_llk.o psb_zsparse_biconjg_llk_noth.o psb_zsparse_biconjg_llk.o psb_zsparse_biconjg_mlk.o psb_zsparse_biconjg_s_ft_llk.o psb_zsparse_biconjg_s_llk.o psb_ssparse_biconjg_llk_noth.o psb_ssparse_biconjg_llk.o psb_ssparse_biconjg_mlk.o psb_ssparse_biconjg_s_ft_llk.o psb_ssparse_biconjg_s_llk.o psb_d_ainv_bld.o psb_c_ainv_bld.o psb_s_ainv_bld.o psb_z_ainv_bld.o psb_c_invt_fact.o psb_d_invt_fact.o psb_s_invt_fact.o psb_z_invt_fact.o psb_c_invk_fact.o psb_d_invk_fact.o psb_s_invk_fact.o psb_z_invk_fact.o +ranlib ../libpsb_prec.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec/impl» +ar -cDr ./libpsb_prec.a psb_prec_const_mod.o psb_s_prec_type.o psb_d_prec_type.o psb_c_prec_type.o psb_z_prec_type.o psb_s_base_prec_mod.o psb_d_base_prec_mod.o psb_c_base_prec_mod.o psb_z_base_prec_mod.o psb_prec_type.o psb_prec_mod.o psb_s_prec_mod.o psb_d_prec_mod.o psb_c_prec_mod.o psb_z_prec_mod.o psb_d_diagprec.o psb_d_nullprec.o psb_d_bjacprec.o psb_s_ilu_fact_mod.o psb_s_diagprec.o psb_s_nullprec.o psb_s_bjacprec.o psb_d_ilu_fact_mod.o psb_c_diagprec.o psb_c_nullprec.o psb_c_bjacprec.o psb_c_ilu_fact_mod.o psb_z_diagprec.o psb_z_nullprec.o psb_z_bjacprec.o psb_z_ilu_fact_mod.o psb_c_ainv_fact_mod.o psb_d_ainv_fact_mod.o psb_s_ainv_fact_mod.o psb_z_ainv_fact_mod.o psb_c_ainv_tools_mod.o psb_d_ainv_tools_mod.o psb_s_ainv_tools_mod.o psb_z_ainv_tools_mod.o psb_ainv_tools_mod.o psb_biconjg_mod.o psb_c_biconjg_mod.o psb_d_biconjg_mod.o psb_s_biconjg_mod.o psb_z_biconjg_mod.o psb_c_invt_fact_mod.o psb_d_invt_fact_mod.o psb_s_invt_fact_mod.o psb_z_invt_fact_mod.o psb_c_invk_fact_mod.o psb_d_invk_fact_mod.o psb_s_invk_fact_mod.o psb_z_invk_fact_mod.o +ranlib ./libpsb_prec.a +/bin/cp -p ./libpsb_prec.a ../lib +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/prec» +make -C linsolve lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +/usr/bin/install -c -p -p *.mod ../modules +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +make[2]: Nessuna operazione da eseguire per «objs». +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +make -C impl lib +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +ar -cDr ../libpsb_linsolve.a psb_dkrylov.o psb_skrylov.o psb_ckrylov.o psb_zkrylov.o psb_drichardson.o psb_srichardson.o psb_crichardson.o psb_zrichardson.o psb_dcgstab.o psb_dcg.o psb_dfcg.o psb_dgcr.o psb_dcgs.o psb_dbicg.o psb_dcgstabl.o psb_drgmres.o psb_scgstab.o psb_scg.o psb_sfcg.o psb_sgcr.o psb_scgs.o psb_sbicg.o psb_scgstabl.o psb_srgmres.o psb_ccgstab.o psb_ccg.o psb_cfcg.o psb_cgcr.o psb_ccgs.o psb_cbicg.o psb_ccgstabl.o psb_crgmres.o psb_zcgstab.o psb_zcg.o psb_zfcg.o psb_zgcr.o psb_zcgs.o psb_zbicg.o psb_zcgstabl.o psb_zrgmres.o +ranlib ../libpsb_linsolve.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve/impl» +ar -cDr ./libpsb_linsolve.a psb_base_linsolve_conv_mod.o psb_s_linsolve_conv_mod.o psb_c_linsolve_conv_mod.o psb_d_linsolve_conv_mod.o psb_z_linsolve_conv_mod.o psb_linsolve_mod.o +ranlib ./libpsb_linsolve.a +/bin/cp -p ./libpsb_linsolve.a ../lib +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/linsolve» +make -C util lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» +/usr/bin/install -c -p -p *.mod ../modules +ar -cDr ./libpsb_util.a psb_metis_int.o psb_amd_order.o psb_util_mod.o psb_blockpart_mod.o psb_metispart_mod.o psb_partidx_mod.o psb_hbio_mod.o psb_mmio_mod.o psb_mat_dist_mod.o psb_s_mat_dist_mod.o psb_d_mat_dist_mod.o psb_c_mat_dist_mod.o psb_z_mat_dist_mod.o psb_renum_mod.o psb_gps_mod.o psb_s_renum_mod.o psb_d_renum_mod.o psb_c_renum_mod.o psb_z_renum_mod.o psb_s_hbio_impl.o psb_d_hbio_impl.o psb_c_hbio_impl.o psb_z_hbio_impl.o psb_s_mmio_impl.o psb_d_mmio_impl.o psb_c_mmio_impl.o psb_z_mmio_impl.o psb_i_mmio_impl.o psb_s_mat_dist_impl.o psb_d_mat_dist_impl.o psb_c_mat_dist_impl.o psb_z_mat_dist_impl.o psb_s_renum_impl.o psb_d_renum_impl.o psb_c_renum_impl.o psb_z_renum_impl.o psi_build_mtpart.o +ranlib ./libpsb_util.a +/bin/cp -p ./libpsb_util.a ../lib +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/util» +make -C cbind lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +cd base && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +Makefile:30: attenzione: sovrascrittura del set di istruzioni per l'obiettivo «.F90.o» +../../Make.inc:116: attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «.F90.o» +/bin/cp -p *.mod psb_base_cbind.h psb_c_base.h psb_c_sbase.h psb_c_dbase.h psb_c_cbase.h psb_c_zbase.h psb_c_scomm.h psb_c_dcomm.h psb_c_ccomm.h psb_c_zcomm.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +cd prec && make objs LIBNAME=libpsb_cbind.a +cd util && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +/bin/cp -p *.mod psb_prec_cbind.h psb_c_sprec.h psb_c_dprec.h psb_c_cprec.h psb_c_zprec.h .. +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +/bin/cp -p *.mod psb_util_cbind.h psb_c_cutil.h psb_c_zutil.h psb_c_dutil.h psb_c_sutil.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +cd linsolve && make objs LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.mod psb_linsolve_cbind.h .. +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.h ../include +/bin/cp -p *.mod ../modules/ +cd base && make lib LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +Makefile:30: attenzione: sovrascrittura del set di istruzioni per l'obiettivo «.F90.o» +../../Make.inc:116: attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «.F90.o» +/bin/cp -p *.mod psb_base_cbind.h psb_c_base.h psb_c_sbase.h psb_c_dbase.h psb_c_cbase.h psb_c_zbase.h psb_c_scomm.h psb_c_dcomm.h psb_c_ccomm.h psb_c_zcomm.h .. +ar -cDr ../libpsb_cbind.a psb_objhandle_mod.o psb_base_cbind_mod.o psb_cpenv_mod.o psb_base_tools_cbind_mod.o psb_base_psblas_cbind_mod.o psb_s_tools_cbind_mod.o psb_s_serial_cbind_mod.o psb_s_psblas_cbind_mod.o psb_d_tools_cbind_mod.o psb_d_serial_cbind_mod.o psb_d_psblas_cbind_mod.o psb_c_tools_cbind_mod.o psb_c_serial_cbind_mod.o psb_c_psblas_cbind_mod.o psb_z_tools_cbind_mod.o psb_z_serial_cbind_mod.o psb_z_psblas_cbind_mod.o psb_s_comm_cbind_mod.o psb_d_comm_cbind_mod.o psb_c_comm_cbind_mod.o psb_z_comm_cbind_mod.o psb_c_base.o psb_c_sbase.o psb_c_dbase.o psb_c_cbase.o psb_c_zbase.o psb_c_scomm.o psb_c_dcomm.o psb_c_ccomm.o psb_c_zcomm.o +ranlib ../libpsb_cbind.a +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/base» +cd prec && make lib LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +/bin/cp -p *.mod psb_prec_cbind.h psb_c_sprec.h psb_c_dprec.h psb_c_cprec.h psb_c_zprec.h .. +ar -cDr ../libpsb_cbind.a psb_prec_cbind_mod.o psb_sprec_cbind_mod.o psb_dprec_cbind_mod.o psb_cprec_cbind_mod.o psb_zprec_cbind_mod.o psb_c_sprec.o psb_c_dprec.o psb_c_cprec.o psb_c_zprec.o +ranlib ../libpsb_cbind.a +/bin/cp -p ../libpsb_cbind.a ../../lib +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/prec» +cd linsolve && make lib LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +/bin/cp -p *.mod psb_linsolve_cbind.h .. +ar -cDr ../libpsb_cbind.a psb_base_linsolve_cbind_mod.o psb_slinsolve_cbind_mod.o psb_dlinsolve_cbind_mod.o psb_clinsolve_cbind_mod.o psb_zlinsolve_cbind_mod.o +ranlib ../libpsb_cbind.a +/bin/cp -p ../libpsb_cbind.a ../../lib +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/linsolve» +cd util && make lib LIBNAME=libpsb_cbind.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +/bin/cp -p *.mod psb_util_cbind.h psb_c_cutil.h psb_c_zutil.h psb_c_dutil.h psb_c_sutil.h .. +ar -cDr ../libpsb_cbind.a psb_util_cbind_mod.o psb_c_util_cbind_mod.o psb_d_util_cbind_mod.o psb_s_util_cbind_mod.o psb_z_util_cbind_mod.o +ranlib ../libpsb_cbind.a +/bin/cp -p ../libpsb_cbind.a ../../lib +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind/util» +/bin/cp -p ./libpsb_cbind.a ../lib +make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/cbind» +make -C ext lib +make[1]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» +/bin/cp -p *.mod ../modules +make -C impl objs +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +make[2]: Nessuna operazione da eseguire per «objs». +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +make -C impl lib LIBNAME=libpsb_ext.a +make[2]: ingresso nella directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +ar -cDr ../libpsb_ext.a psb_s_cp_dia_from_coo.o psb_s_cp_dia_to_coo.o psb_s_cp_ell_from_coo.o psb_s_cp_ell_from_fmt.o psb_s_cp_ell_to_coo.o psb_s_cp_ell_to_fmt.o psb_s_cp_hdia_from_coo.o psb_s_cp_hdia_to_coo.o psb_s_cp_hll_from_coo.o psb_s_cp_hll_from_fmt.o psb_s_cp_hll_to_coo.o psb_s_cp_hll_to_fmt.o psb_s_dia_aclsum.o psb_s_dia_allocate_mnnz.o psb_s_dia_arwsum.o psb_s_dia_colsum.o psb_s_dia_csgetptn.o psb_s_dia_csgetrow.o psb_s_dia_csmm.o psb_s_dia_csmv.o psb_s_dia_get_diag.o psb_s_dia_maxval.o psb_s_dia_mold.o psb_s_dia_print.o psb_s_dia_reallocate_nz.o psb_s_dia_reinit.o psb_s_dia_rowsum.o psb_s_dia_scal.o psb_s_dia_scals.o psb_s_ell_aclsum.o psb_s_ell_allocate_mnnz.o psb_s_ell_arwsum.o psb_s_ell_colsum.o psb_s_ell_csgetblk.o psb_s_ell_csgetptn.o psb_s_ell_csgetrow.o psb_s_ell_csmm.o psb_s_ell_csmv.o psb_s_ell_csnm1.o psb_s_ell_csnmi.o psb_s_ell_csput.o psb_s_ell_cssm.o psb_s_ell_cssv.o psb_s_ell_get_diag.o psb_s_ell_maxval.o psb_s_ell_mold.o psb_s_ell_print.o psb_s_ell_reallocate_nz.o psb_s_ell_reinit.o psb_s_ell_rowsum.o psb_s_ell_scal.o psb_s_ell_scals.o psb_s_ell_trim.o psb_s_hdia_allocate_mnnz.o psb_s_hdia_csmv.o psb_s_hdia_mold.o psb_s_hdia_print.o psb_s_hll_aclsum.o psb_s_hll_allocate_mnnz.o psb_s_hll_arwsum.o psb_s_hll_colsum.o psb_s_hll_csgetblk.o psb_s_hll_csgetptn.o psb_s_hll_csgetrow.o psb_s_hll_csmm.o psb_s_hll_csmv.o psb_s_hll_csnm1.o psb_s_hll_csnmi.o psb_s_hll_csput.o psb_s_hll_cssm.o psb_s_hll_cssv.o psb_s_hll_get_diag.o psb_s_hll_maxval.o psb_s_hll_mold.o psb_s_hll_print.o psb_s_hll_reallocate_nz.o psb_s_hll_reinit.o psb_s_hll_rowsum.o psb_s_hll_scal.o psb_s_hll_scals.o psb_s_mv_dia_from_coo.o psb_s_mv_ell_from_coo.o psb_s_mv_ell_from_fmt.o psb_s_mv_ell_to_coo.o psb_s_mv_ell_to_fmt.o psb_s_mv_hdia_from_coo.o psb_s_mv_hdia_to_coo.o psb_s_mv_hll_from_coo.o psb_s_mv_hll_from_fmt.o psb_s_mv_hll_to_coo.o psb_s_mv_hll_to_fmt.o psb_c_cp_dia_from_coo.o psb_c_cp_dia_to_coo.o psb_c_cp_ell_from_coo.o psb_c_cp_ell_from_fmt.o psb_c_cp_ell_to_coo.o psb_c_cp_ell_to_fmt.o psb_c_cp_hdia_from_coo.o psb_c_cp_hdia_to_coo.o psb_c_cp_hll_from_coo.o psb_c_cp_hll_from_fmt.o psb_c_cp_hll_to_coo.o psb_c_cp_hll_to_fmt.o psb_c_dia_aclsum.o psb_c_dia_allocate_mnnz.o psb_c_dia_arwsum.o psb_c_dia_colsum.o psb_c_dia_csgetptn.o psb_c_dia_csgetrow.o psb_c_dia_csmm.o psb_c_dia_csmv.o psb_c_dia_get_diag.o psb_c_dia_maxval.o psb_c_dia_mold.o psb_c_dia_print.o psb_c_dia_reallocate_nz.o psb_c_dia_reinit.o psb_c_dia_rowsum.o psb_c_dia_scal.o psb_c_dia_scals.o psb_c_ell_aclsum.o psb_c_ell_allocate_mnnz.o psb_c_ell_arwsum.o psb_c_ell_colsum.o psb_c_ell_csgetblk.o psb_c_ell_csgetptn.o psb_c_ell_csgetrow.o psb_c_ell_csmm.o psb_c_ell_csmv.o psb_c_ell_csnm1.o psb_c_ell_csnmi.o psb_c_ell_csput.o psb_c_ell_cssm.o psb_c_ell_cssv.o psb_c_ell_get_diag.o psb_c_ell_maxval.o psb_c_ell_mold.o psb_c_ell_print.o psb_c_ell_reallocate_nz.o psb_c_ell_reinit.o psb_c_ell_rowsum.o psb_c_ell_scal.o psb_c_ell_scals.o psb_c_ell_trim.o psb_c_hdia_allocate_mnnz.o psb_c_hdia_csmv.o psb_c_hdia_mold.o psb_c_hdia_print.o psb_c_hll_aclsum.o psb_c_hll_allocate_mnnz.o psb_c_hll_arwsum.o psb_c_hll_colsum.o psb_c_hll_csgetblk.o psb_c_hll_csgetptn.o psb_c_hll_csgetrow.o psb_c_hll_csmm.o psb_c_hll_csmv.o psb_c_hll_csnm1.o psb_c_hll_csnmi.o psb_c_hll_csput.o psb_c_hll_cssm.o psb_c_hll_cssv.o psb_c_hll_get_diag.o psb_c_hll_maxval.o psb_c_hll_mold.o psb_c_hll_print.o psb_c_hll_reallocate_nz.o psb_c_hll_reinit.o psb_c_hll_rowsum.o psb_c_hll_scal.o psb_c_hll_scals.o psb_c_mv_dia_from_coo.o psb_c_mv_ell_from_coo.o psb_c_mv_ell_from_fmt.o psb_c_mv_ell_to_coo.o psb_c_mv_ell_to_fmt.o psb_c_mv_hdia_from_coo.o psb_c_mv_hdia_to_coo.o psb_c_mv_hll_from_coo.o psb_c_mv_hll_from_fmt.o psb_c_mv_hll_to_coo.o psb_c_mv_hll_to_fmt.o psb_d_cp_dia_from_coo.o psb_d_cp_dia_to_coo.o psb_d_cp_ell_from_coo.o psb_d_cp_ell_from_fmt.o psb_d_cp_ell_to_coo.o psb_d_cp_ell_to_fmt.o psb_d_cp_hdia_from_coo.o psb_d_cp_hdia_to_coo.o psb_d_cp_hll_from_coo.o psb_d_cp_hll_from_fmt.o psb_d_cp_hll_to_coo.o psb_d_cp_hll_to_fmt.o psb_d_dia_aclsum.o psb_d_dia_allocate_mnnz.o psb_d_dia_arwsum.o psb_d_dia_colsum.o psb_d_dia_csgetptn.o psb_d_dia_csgetrow.o psb_d_dia_csmm.o psb_d_dia_csmv.o psb_d_dia_get_diag.o psb_d_dia_maxval.o psb_d_dia_mold.o psb_d_dia_print.o psb_d_dia_reallocate_nz.o psb_d_dia_reinit.o psb_d_dia_rowsum.o psb_d_dia_scal.o psb_d_dia_scals.o psb_d_ell_aclsum.o psb_d_ell_allocate_mnnz.o psb_d_ell_arwsum.o psb_d_ell_colsum.o psb_d_ell_csgetblk.o psb_d_ell_csgetptn.o psb_d_ell_csgetrow.o psb_d_ell_csmm.o psb_d_ell_csmv.o psb_d_ell_csnm1.o psb_d_ell_csnmi.o psb_d_ell_csput.o psb_d_ell_cssm.o psb_d_ell_cssv.o psb_d_ell_get_diag.o psb_d_ell_maxval.o psb_d_ell_mold.o psb_d_ell_print.o psb_d_ell_reallocate_nz.o psb_d_ell_reinit.o psb_d_ell_rowsum.o psb_d_ell_scal.o psb_d_ell_scals.o psb_d_ell_trim.o psb_d_hdia_allocate_mnnz.o psb_d_hdia_csmv.o psb_d_hdia_mold.o psb_d_hdia_print.o psb_d_hll_aclsum.o psb_d_hll_allocate_mnnz.o psb_d_hll_arwsum.o psb_d_hll_colsum.o psb_d_hll_csgetblk.o psb_d_hll_csgetptn.o psb_d_hll_csgetrow.o psb_d_hll_csmm.o psb_d_hll_csmv.o psb_d_hll_csnm1.o psb_d_hll_csnmi.o psb_d_hll_csput.o psb_d_hll_cssm.o psb_d_hll_cssv.o psb_d_hll_get_diag.o psb_d_hll_maxval.o psb_d_hll_mold.o psb_d_hll_print.o psb_d_hll_reallocate_nz.o psb_d_hll_reinit.o psb_d_hll_rowsum.o psb_d_hll_scal.o psb_d_hll_scals.o psb_d_mv_dia_from_coo.o psb_d_mv_ell_from_coo.o psb_d_mv_ell_from_fmt.o psb_d_mv_ell_to_coo.o psb_d_mv_ell_to_fmt.o psb_d_mv_hdia_from_coo.o psb_d_mv_hdia_to_coo.o psb_d_mv_hll_from_coo.o psb_d_mv_hll_from_fmt.o psb_d_mv_hll_to_coo.o psb_d_mv_hll_to_fmt.o psb_z_cp_dia_from_coo.o psb_z_cp_dia_to_coo.o psb_z_cp_ell_from_coo.o psb_z_cp_ell_from_fmt.o psb_z_cp_ell_to_coo.o psb_z_cp_ell_to_fmt.o psb_z_cp_hdia_from_coo.o psb_z_cp_hdia_to_coo.o psb_z_cp_hll_from_coo.o psb_z_cp_hll_from_fmt.o psb_z_cp_hll_to_coo.o psb_z_cp_hll_to_fmt.o psb_z_dia_aclsum.o psb_z_dia_allocate_mnnz.o psb_z_dia_arwsum.o psb_z_dia_colsum.o psb_z_dia_csgetptn.o psb_z_dia_csgetrow.o psb_z_dia_csmm.o psb_z_dia_csmv.o psb_z_dia_get_diag.o psb_z_dia_maxval.o psb_z_dia_mold.o psb_z_dia_print.o psb_z_dia_reallocate_nz.o psb_z_dia_reinit.o psb_z_dia_rowsum.o psb_z_dia_scal.o psb_z_dia_scals.o psb_z_ell_aclsum.o psb_z_ell_allocate_mnnz.o psb_z_ell_arwsum.o psb_z_ell_colsum.o psb_z_ell_csgetblk.o psb_z_ell_csgetptn.o psb_z_ell_csgetrow.o psb_z_ell_csmm.o psb_z_ell_csmv.o psb_z_ell_csnm1.o psb_z_ell_csnmi.o psb_z_ell_csput.o psb_z_ell_cssm.o psb_z_ell_cssv.o psb_z_ell_get_diag.o psb_z_ell_maxval.o psb_z_ell_mold.o psb_z_ell_print.o psb_z_ell_reallocate_nz.o psb_z_ell_reinit.o psb_z_ell_rowsum.o psb_z_ell_scal.o psb_z_ell_scals.o psb_z_ell_trim.o psb_z_hdia_allocate_mnnz.o psb_z_hdia_csmv.o psb_z_hdia_mold.o psb_z_hdia_print.o psb_z_hll_aclsum.o psb_z_hll_allocate_mnnz.o psb_z_hll_arwsum.o psb_z_hll_colsum.o psb_z_hll_csgetblk.o psb_z_hll_csgetptn.o psb_z_hll_csgetrow.o psb_z_hll_csmm.o psb_z_hll_csmv.o psb_z_hll_csnm1.o psb_z_hll_csnmi.o psb_z_hll_csput.o psb_z_hll_cssm.o psb_z_hll_cssv.o psb_z_hll_get_diag.o psb_z_hll_maxval.o psb_z_hll_mold.o psb_z_hll_print.o psb_z_hll_reallocate_nz.o psb_z_hll_reinit.o psb_z_hll_rowsum.o psb_z_hll_scal.o psb_z_hll_scals.o psb_z_mv_dia_from_coo.o psb_z_mv_ell_from_coo.o psb_z_mv_ell_from_fmt.o psb_z_mv_ell_to_coo.o psb_z_mv_ell_to_fmt.o psb_z_mv_hdia_from_coo.o psb_z_mv_hdia_to_coo.o psb_z_mv_hll_from_coo.o psb_z_mv_hll_from_fmt.o psb_z_mv_hll_to_coo.o psb_z_mv_hll_to_fmt.o psi_s_xtr_ell_from_coo.o psi_c_xtr_ell_from_coo.o psi_d_xtr_ell_from_coo.o psi_z_xtr_ell_from_coo.o psi_s_convert_ell_from_coo.o psi_c_convert_ell_from_coo.o psi_d_convert_ell_from_coo.o psi_z_convert_ell_from_coo.o psi_s_convert_hll_from_coo.o psi_c_convert_hll_from_coo.o psi_d_convert_hll_from_coo.o psi_z_convert_hll_from_coo.o psi_s_xtr_dia_from_coo.o psi_c_xtr_dia_from_coo.o psi_d_xtr_dia_from_coo.o psi_z_xtr_dia_from_coo.o psi_s_xtr_coo_from_dia.o psi_d_xtr_coo_from_dia.o psi_c_xtr_coo_from_dia.o psi_z_xtr_coo_from_dia.o psi_s_convert_dia_from_coo.o psi_c_convert_dia_from_coo.o psi_d_convert_dia_from_coo.o psi_z_convert_dia_from_coo.o psb_s_dns_mat_impl.o psb_d_dns_mat_impl.o psb_c_dns_mat_impl.o psb_z_dns_mat_impl.o +make[2]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext/impl» +ar -cDr libpsb_ext.a psb_d_ell_mat_mod.o psb_d_hll_mat_mod.o psb_s_hll_mat_mod.o psb_s_ell_mat_mod.o psb_c_hll_mat_mod.o psb_c_ell_mat_mod.o psb_z_hll_mat_mod.o psb_z_ell_mat_mod.o psb_d_dia_mat_mod.o psb_d_hdia_mat_mod.o psb_s_dia_mat_mod.o psb_s_hdia_mat_mod.o psb_c_dia_mat_mod.o psb_c_hdia_mat_mod.o psb_z_dia_mat_mod.o psb_z_hdia_mat_mod.o psb_s_dns_mat_mod.o psb_d_dns_mat_mod.o psb_c_dns_mat_mod.o psb_z_dns_mat_mod.o psi_ext_util_mod.o psi_i_ext_util_mod.o psi_s_ext_util_mod.o psi_c_ext_util_mod.o psi_d_ext_util_mod.o psi_z_ext_util_mod.o psb_ext_mod.o +/bin/cp -p libpsb_ext.a ../lib make[1]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/ext» -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_lovrl_save.f90 -o psi_lovrl_save.o -make[3]: uscita dalla directory «/home/stack/Desktop/PSBLAS/comm/psblas3/base/serial/sort» -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_lovrl_upd.f90 -o psi_lovrl_upd.o -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_csr_impl.F90 -o psb_s_csr_impl.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_d_remote_mat.F90 -o psb_d_remote_mat.o -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -c psi_sovrl_restr.f90 -o psi_sovrl_restr.o -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psi_lswaptran.F90 -o psi_lswaptran.o -psb_dspmm.f90:600:88: - - 600 | call psi_swapdata(flag=ior(psb_swap_send_,psb_swap_recv_), beta=dzero, y=x%v, desc_a=desc_a, & - | 1 -Error: Unexpected ‘%’ for nonderived-type variable ‘x’ at (1) -psb_dspmm.f90:618:5: - - 618 | end if - | 1 -Error: Expecting END SUBROUTINE statement at (1) -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sallc.f90 -o psb_sallc.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -c psb_sasb.f90 -o psb_sasb.o -psb_sovrl.f90:316:48: - - 316 | & desc_a,iwork,info,data=psb_comm_ovr_) - | 1 -Error: There is no specific subroutine for the generic ‘psi_swapdata’ at (1) -make[2]: *** [../../Make.inc:114: psb_sovrl.o] Errore 1 -make[2]: *** Attesa per i processi non terminati.... -mpifort -frecursive -g -O3 -I. -I../../modules -I../.. -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_s_coo_impl.F90 -o psb_s_coo_impl.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -I../modules -DPSB_HAVE_LAPACK -DPSB_HAVE_FLUSH_STMT -DPSB_LPK8 -DPSB_IPK4 -DPSB_MPI_MOD -c psb_c_remote_mat.F90 -o psb_c_remote_mat.o -psb_dspsm.f90:212:57: - - 212 | & done,y%v,desc_a,iwork,info,data=psb_comm_ovr_) - | 1 -Error: There is no specific subroutine for the generic ‘psi_swapdata’ at (1) -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_sasum.f90 -o psb_sasum.o -mpifort -frecursive -g -O3 -I. -I../modules -I.. -c psb_samax.f90 -o psb_samax.o -make[2]: *** [../../Make.inc:114: psb_samax.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_dspsm.o] Interruzione -make[1]: *** [../Make.inc:116: psb_metispart_mod.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_s_base_mat_impl.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_d_base_mat_impl.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_c_base_mat_impl.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_lins.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_z_base_mat_impl.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_sasb.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_s_csr_impl.o] Interruzione -make[3]: *** [../../../Make.inc:116: psb_s_coo_impl.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_dspmm.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_zspmm.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_saxpby.o] Interruzione -make[4]: *** wait: Nessun processo figlio. Arresto. -make[4]: *** Attesa per i processi non terminati.... -make[4]: *** wait: Nessun processo figlio. Arresto. -make[2]: *** [../../Make.inc:114: psb_sallc.o] Interruzione -make[3]: *** [../../../Make.inc:114: psi_sovrl_restr.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_zspsm.o] Interruzione -make[2]: *** [../../Make.inc:116: psb_dspins.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_sdot.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_sasum.o] Interruzione -make[3]: *** [../../Make.inc:116: psb_c_remote_mat.o] Interruzione -make[1]: *** [../Make.inc:114: psb_s_bjacprec.o] Interruzione -make[2]: *** [../../Make.inc:114: psb_zgeprt.o] Interruzione -make[2]: *** [Makefile:34: impld] Interruzione -make[2]: *** wait: Nessun processo figlio. Arresto. -make[2]: *** Attesa per i processi non terminati.... -make[1]: *** [../Make.inc:114: psb_gps_mod.o] Interruzione -make[2]: *** wait: Nessun processo figlio. Arresto. -make[1]: *** [../Make.inc:114: psb_c_bjacprec.o] Interruzione -make[1]: *** wait: Nessun processo figlio. Arresto. -make[1]: *** Attesa per i processi non terminati.... -make[1]: *** wait: Nessun processo figlio. Arresto. -make[1]: *** [Makefile:31: pb] Interruzione -make[3]: *** [Makefile:41: mpfobjs] Errore 2 -make[1]: *** [../Make.inc:114: psb_z_bjacprec.o] Interruzione -make[1]: *** wait: Nessun processo figlio. Arresto. -make[1]: *** Attesa per i processi non terminati.... -make[1]: *** wait: Nessun processo figlio. Arresto. -make[1]: *** [Makefile:25: sr] Errore 2 -make: *** [Makefile:21: utilmods] Errore 2 -make[2]: *** [Makefile:51: mpfobjs] Interruzione -make: *** [Makefile:17: precmods] Errore 2 -make[1]: *** [Makefile:33: tl] Interruzione -make[2]: *** [Makefile:38: interns] Interruzione -make[1]: *** [Makefile:27: cm] Interruzione -make: *** [Makefile:56: based] Interruzione +===================================== +PSBLAS libraries Compilation Successful. diff --git a/prec/impl/psb_c_bjacprec_impl.f90 b/prec/impl/psb_c_bjacprec_impl.f90 index 32baf385..2810565c 100644 --- a/prec/impl/psb_c_bjacprec_impl.f90 +++ b/prec/impl/psb_c_bjacprec_impl.f90 @@ -71,7 +71,7 @@ subroutine psb_c_bjac_dump(prec,info,prefix,head) end subroutine psb_c_bjac_dump -subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_c_bjacprec, psb_protect_name => psb_c_bjac_apply_vect implicit none @@ -82,11 +82,10 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) ! Local variables integer(psb_ipk_) :: n_row,n_col - complex(psb_spk_), pointer :: ww(:), aux(:) + complex(psb_spk_), pointer :: ww(:) type(psb_c_vect_type) :: wv, wv1 type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me @@ -140,17 +139,7 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) end if - if (n_col <= size(work)) then - ww => work(1:n_col) - if ((4*n_col+n_col) <= size(work)) then - aux => work(n_col+1:) - else - allocate(aux(4*n_col),stat=info) - - endif - else - allocate(ww(n_col),aux(4*n_col),stat=info) - endif + allocate(ww(n_col),stat=info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -168,28 +157,28 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(cone,prec%av(psb_l_pr_),x,czero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('T') call psb_spsm(cone,prec%av(psb_u_pr_),x,czero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_, work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('C') call psb_spsm(cone,prec%av(psb_u_pr_),x,czero,wv,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) call wv1%mlt(cone,prec%dv,wv,czero,info,conjgx=trans_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) end select if (info /= psb_success_) then @@ -203,20 +192,20 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spmm(cone,prec%av(psb_l_pr_),x,czero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(cone,prec%dv,wv,czero,info) if(info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1,& - & beta,y,desc_data,info, trans=trans_, work=aux,doswap=.false.) + & beta,y,desc_data,info, trans=trans_,doswap=.false.) case('T','C') call psb_spmm(cone,prec%av(psb_l_pr_),x,czero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(cone,prec%dv,wv,czero,info) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1, & - & beta,y,desc_data,info,trans=trans_,work=aux,doswap=.false.) + & beta,y,desc_data,info,trans=trans_,doswap=.false.) end select if (info /= psb_success_) then @@ -235,15 +224,8 @@ subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call psb_halo(y,desc_data,info,data=psb_comm_mov_) if (do_alloc_wrk) call prec%free_wrk(info) - if (n_col <= size(work)) then - if ((4*n_col+n_col) <= size(work)) then - else - deallocate(aux) - endif - else - deallocate(ww,aux) - endif + deallocate(ww) call psb_erractionrestore(err_act) return diff --git a/prec/impl/psb_c_diagprec_impl.f90 b/prec/impl/psb_c_diagprec_impl.f90 index c16f9465..53b3ad7a 100644 --- a/prec/impl/psb_c_diagprec_impl.f90 +++ b/prec/impl/psb_c_diagprec_impl.f90 @@ -65,7 +65,7 @@ subroutine psb_c_diag_dump(prec,info,prefix,head) end subroutine psb_c_diag_dump -subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_c_diagprec, psb_protect_name => psb_c_diag_apply_vect implicit none @@ -76,7 +76,6 @@ subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='c_diag_prec_apply' complex(psb_spk_), pointer :: ww(:) diff --git a/prec/impl/psb_c_nullprec_impl.f90 b/prec/impl/psb_c_nullprec_impl.f90 index 9d87522a..136eba2b 100644 --- a/prec/impl/psb_c_nullprec_impl.f90 +++ b/prec/impl/psb_c_nullprec_impl.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_c_nullprec, psb_protect_name => psb_c_null_apply_vect implicit none @@ -40,7 +40,6 @@ subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='c_null_prec_apply' diff --git a/prec/impl/psb_c_prec_type_impl.f90 b/prec/impl/psb_c_prec_type_impl.f90 index e82d7dca..64dccd5f 100644 --- a/prec/impl/psb_c_prec_type_impl.f90 +++ b/prec/impl/psb_c_prec_type_impl.f90 @@ -62,7 +62,7 @@ !!$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans,work) +subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans) use psb_base_mod use psb_c_prec_type, psb_protect_name => psb_c_apply2_vect implicit none @@ -72,7 +72,6 @@ subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans,work) type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) character :: trans_ complex(psb_spk_), pointer :: work_(:) @@ -94,36 +93,13 @@ subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if - call prec%prec%apply(cone,x,czero,y,desc_data,info,& - & trans=trans_,work=work_) - - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if + call prec%prec%apply(cone,x,czero,y,desc_data,info,trans=trans_) call psb_erractionrestore(err_act) return @@ -133,20 +109,18 @@ subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans,work) end subroutine psb_c_apply2_vect -subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans,work) +subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans) use psb_base_mod use psb_c_prec_type, psb_protect_name => psb_c_apply1_vect implicit none - type(psb_desc_type),intent(in) :: desc_data - class(psb_cprec_type), intent(inout) :: prec - type(psb_c_vect_type),intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) + type(psb_desc_type),intent(in) :: desc_data + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type),intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + character(len=1), optional :: trans type(psb_c_vect_type) :: ww character :: trans_ - complex(psb_spk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -165,18 +139,6 @@ subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") @@ -184,19 +146,9 @@ subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans,work) end if call psb_geasb(ww,desc_data,info,mold=x%v,scratch=.true.) - if (info == 0) call prec%prec%apply(cone,x,czero,ww,desc_data,info,& - & trans=trans_,work=work_) + if (info == 0) call prec%prec%apply(cone,x,czero,ww,desc_data,info,trans=trans_) if (info == 0) call psb_geaxpby(cone,ww,czero,x,desc_data,info) call psb_gefree(ww,desc_data,info) - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if call psb_erractionrestore(err_act) return diff --git a/prec/impl/psb_d_bjacprec_impl.f90 b/prec/impl/psb_d_bjacprec_impl.f90 index ec866dbe..3664704c 100644 --- a/prec/impl/psb_d_bjacprec_impl.f90 +++ b/prec/impl/psb_d_bjacprec_impl.f90 @@ -71,7 +71,7 @@ subroutine psb_d_bjac_dump(prec,info,prefix,head) end subroutine psb_d_bjac_dump -subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_d_bjacprec, psb_protect_name => psb_d_bjac_apply_vect implicit none @@ -82,11 +82,10 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) ! Local variables integer(psb_ipk_) :: n_row,n_col - real(psb_dpk_), pointer :: ww(:), aux(:) + real(psb_dpk_), pointer :: ww(:) type(psb_d_vect_type) :: wv, wv1 type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me @@ -140,17 +139,7 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) end if - if (n_col <= size(work)) then - ww => work(1:n_col) - if ((4*n_col+n_col) <= size(work)) then - aux => work(n_col+1:) - else - allocate(aux(4*n_col),stat=info) - - endif - else - allocate(ww(n_col),aux(4*n_col),stat=info) - endif + allocate(ww(n_col),stat=info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -168,28 +157,28 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(done,prec%av(psb_l_pr_),x,dzero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('T') call psb_spsm(done,prec%av(psb_u_pr_),x,dzero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_, work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('C') call psb_spsm(done,prec%av(psb_u_pr_),x,dzero,wv,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) call wv1%mlt(done,prec%dv,wv,dzero,info,conjgx=trans_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) end select if (info /= psb_success_) then @@ -203,20 +192,20 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spmm(done,prec%av(psb_l_pr_),x,dzero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(done,prec%dv,wv,dzero,info) if(info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1,& - & beta,y,desc_data,info, trans=trans_, work=aux,doswap=.false.) + & beta,y,desc_data,info, trans=trans_,doswap=.false.) case('T','C') call psb_spmm(done,prec%av(psb_l_pr_),x,dzero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(done,prec%dv,wv,dzero,info) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1, & - & beta,y,desc_data,info,trans=trans_,work=aux,doswap=.false.) + & beta,y,desc_data,info,trans=trans_,doswap=.false.) end select if (info /= psb_success_) then @@ -234,16 +223,7 @@ subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call psb_halo(y,desc_data,info,data=psb_comm_mov_) - if (do_alloc_wrk) call prec%free_wrk(info) - if (n_col <= size(work)) then - if ((4*n_col+n_col) <= size(work)) then - else - deallocate(aux) - endif - else - deallocate(ww,aux) - endif - + deallocate(ww) call psb_erractionrestore(err_act) return @@ -350,7 +330,7 @@ subroutine psb_d_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(done,prec%av(psb_l_pr_),x,dzero,ww,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_, work=aux) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),ww,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_, work=aux) @@ -360,7 +340,7 @@ subroutine psb_d_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_, work=aux) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),ww,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_, work=aux) case('C') @@ -369,7 +349,7 @@ subroutine psb_d_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) ww(1:n_row) = ww(1:n_row)*(prec%dv%v%v(1:n_row)) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),ww,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_, work=aux) end select if (info /= psb_success_) then @@ -384,27 +364,26 @@ subroutine psb_d_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) case('N') call psb_spmm(done,prec%av(psb_l_pr_),x,dzero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * prec%dv%v%v(1:n_row) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) case('T') call psb_spmm(done,prec%av(psb_u_pr_),x,dzero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * prec%dv%v%v(1:n_row) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) - + & trans=trans_,doswap=.false., work=aux) case('C') call psb_spmm(done,prec%av(psb_u_pr_),x,dzero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * (prec%dv%v%v(1:n_row)) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) end select diff --git a/prec/impl/psb_d_diagprec_impl.f90 b/prec/impl/psb_d_diagprec_impl.f90 index 3a6e32f9..2300c571 100644 --- a/prec/impl/psb_d_diagprec_impl.f90 +++ b/prec/impl/psb_d_diagprec_impl.f90 @@ -65,7 +65,7 @@ subroutine psb_d_diag_dump(prec,info,prefix,head) end subroutine psb_d_diag_dump -subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_d_diagprec, psb_protect_name => psb_d_diag_apply_vect implicit none @@ -76,7 +76,6 @@ subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='d_diag_prec_apply' real(psb_dpk_), pointer :: ww(:) diff --git a/prec/impl/psb_d_nullprec_impl.f90 b/prec/impl/psb_d_nullprec_impl.f90 index b9822932..7bcdf127 100644 --- a/prec/impl/psb_d_nullprec_impl.f90 +++ b/prec/impl/psb_d_nullprec_impl.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_d_nullprec, psb_protect_name => psb_d_null_apply_vect implicit none @@ -40,7 +40,6 @@ subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='c_null_prec_apply' diff --git a/prec/impl/psb_d_prec_type_impl.f90 b/prec/impl/psb_d_prec_type_impl.f90 index 69e48079..61715676 100644 --- a/prec/impl/psb_d_prec_type_impl.f90 +++ b/prec/impl/psb_d_prec_type_impl.f90 @@ -14,7 +14,7 @@ ! documentation and/or other materials provided with the distribution. ! 3. The name of the PSBLAS group or the names of its contributors may ! not be used to endorse or promote products derived from this -! software without specific written permission. +! software without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED @@ -45,7 +45,7 @@ !!$ documentation and/or other materials provided with the distribution. !!$ 3. The name of the PSBLAS group or the names of its contributors may !!$ not be used to endorse or promote products derived from this -!!$ software without specific written permission. +!!$ software without specific prior written permission. !!$ !!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS !!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED @@ -62,7 +62,7 @@ !!$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans,work) +subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans) use psb_base_mod use psb_d_prec_type, psb_protect_name => psb_d_apply2_vect implicit none @@ -72,10 +72,8 @@ subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans,work) type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) character :: trans_ - real(psb_dpk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -94,36 +92,13 @@ subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if - call prec%prec%apply(done,x,dzero,y,desc_data,info,& - & trans=trans_,work=work_) - - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if + call prec%prec%apply(done,x,dzero,y,desc_data,info,trans=trans_) call psb_erractionrestore(err_act) return @@ -133,7 +108,7 @@ subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans,work) end subroutine psb_d_apply2_vect -subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans,work) +subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans) use psb_base_mod use psb_d_prec_type, psb_protect_name => psb_d_apply1_vect implicit none @@ -142,11 +117,9 @@ subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans,work) type(psb_d_vect_type),intent(inout) :: x integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) type(psb_d_vect_type) :: ww character :: trans_ - real(psb_dpk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -165,18 +138,6 @@ subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") @@ -184,19 +145,9 @@ subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans,work) end if call psb_geasb(ww,desc_data,info,mold=x%v,scratch=.true.) - if (info == 0) call prec%prec%apply(done,x,dzero,ww,desc_data,info,& - & trans=trans_,work=work_) + if (info == 0) call prec%prec%apply(done,x,dzero,ww,desc_data,info,trans=trans_) if (info == 0) call psb_geaxpby(done,ww,dzero,x,desc_data,info) call psb_gefree(ww,desc_data,info) - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if call psb_erractionrestore(err_act) return diff --git a/prec/impl/psb_s_bjacprec_impl.f90 b/prec/impl/psb_s_bjacprec_impl.f90 index d4a4fd17..5c414060 100644 --- a/prec/impl/psb_s_bjacprec_impl.f90 +++ b/prec/impl/psb_s_bjacprec_impl.f90 @@ -71,7 +71,7 @@ subroutine psb_s_bjac_dump(prec,info,prefix,head) end subroutine psb_s_bjac_dump -subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_s_bjacprec, psb_protect_name => psb_s_bjac_apply_vect implicit none @@ -82,11 +82,10 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) ! Local variables integer(psb_ipk_) :: n_row,n_col - real(psb_spk_), pointer :: ww(:), aux(:) + real(psb_spk_), pointer :: ww(:) type(psb_s_vect_type) :: wv, wv1 type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me @@ -139,18 +138,7 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) goto 9999 end if - - if (n_col <= size(work)) then - ww => work(1:n_col) - if ((4*n_col+n_col) <= size(work)) then - aux => work(n_col+1:) - else - allocate(aux(4*n_col),stat=info) - - endif - else - allocate(ww(n_col),aux(4*n_col),stat=info) - endif + allocate(ww(n_col),stat=info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -168,28 +156,28 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(sone,prec%av(psb_l_pr_),x,szero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('T') call psb_spsm(sone,prec%av(psb_u_pr_),x,szero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_, work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('C') call psb_spsm(sone,prec%av(psb_u_pr_),x,szero,wv,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) call wv1%mlt(sone,prec%dv,wv,szero,info,conjgx=trans_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) end select if (info /= psb_success_) then @@ -203,20 +191,20 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spmm(sone,prec%av(psb_l_pr_),x,szero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(sone,prec%dv,wv,szero,info) if(info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1,& - & beta,y,desc_data,info, trans=trans_, work=aux,doswap=.false.) + & beta,y,desc_data,info, trans=trans_,doswap=.false.) case('T','C') call psb_spmm(sone,prec%av(psb_l_pr_),x,szero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(sone,prec%dv,wv,szero,info) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1, & - & beta,y,desc_data,info,trans=trans_,work=aux,doswap=.false.) + & beta,y,desc_data,info,trans=trans_,doswap=.false.) end select if (info /= psb_success_) then @@ -235,15 +223,8 @@ subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call psb_halo(y,desc_data,info,data=psb_comm_mov_) if (do_alloc_wrk) call prec%free_wrk(info) - if (n_col <= size(work)) then - if ((4*n_col+n_col) <= size(work)) then - else - deallocate(aux) - endif - else - deallocate(ww,aux) - endif + deallocate(ww) call psb_erractionrestore(err_act) return @@ -350,7 +331,7 @@ subroutine psb_s_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(sone,prec%av(psb_l_pr_),x,szero,ww,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_, work=aux) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),ww,& & beta,y,desc_data,info,& & trans=trans_,scale='U',choice=psb_none_, work=aux) @@ -360,7 +341,7 @@ subroutine psb_s_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) & trans=trans_,scale='L',diag=prec%dv%v%v,choice=psb_none_, work=aux) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),ww,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_, work=aux) case('C') @@ -369,7 +350,7 @@ subroutine psb_s_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) ww(1:n_row) = ww(1:n_row)*(prec%dv%v%v(1:n_row)) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),ww,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_, work=aux) end select if (info /= psb_success_) then @@ -384,28 +365,25 @@ subroutine psb_s_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) case('N') call psb_spmm(sone,prec%av(psb_l_pr_),x,szero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * prec%dv%v%v(1:n_row) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) - + & trans=trans_,doswap=.false., work=aux) case('T') call psb_spmm(sone,prec%av(psb_u_pr_),x,szero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * prec%dv%v%v(1:n_row) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) - + & trans=trans_,doswap=.false., work=aux) case('C') call psb_spmm(sone,prec%av(psb_u_pr_),x,szero,ww,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false., work=aux) ww(1:n_row) = ww(1:n_row) * (prec%dv%v%v(1:n_row)) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) - + & trans=trans_,doswap=.false., work=aux) end select diff --git a/prec/impl/psb_s_diagprec_impl.f90 b/prec/impl/psb_s_diagprec_impl.f90 index 4074cbff..cd145576 100644 --- a/prec/impl/psb_s_diagprec_impl.f90 +++ b/prec/impl/psb_s_diagprec_impl.f90 @@ -65,7 +65,7 @@ subroutine psb_s_diag_dump(prec,info,prefix,head) end subroutine psb_s_diag_dump -subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_s_diagprec, psb_protect_name => psb_s_diag_apply_vect implicit none @@ -76,7 +76,6 @@ subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='s_diag_prec_apply' real(psb_spk_), pointer :: ww(:) diff --git a/prec/impl/psb_s_nullprec_impl.f90 b/prec/impl/psb_s_nullprec_impl.f90 index f95c34fd..ebb3eda4 100644 --- a/prec/impl/psb_s_nullprec_impl.f90 +++ b/prec/impl/psb_s_nullprec_impl.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_s_nullprec, psb_protect_name => psb_s_null_apply_vect implicit none @@ -40,7 +40,6 @@ subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='c_null_prec_apply' diff --git a/prec/impl/psb_s_prec_type_impl.f90 b/prec/impl/psb_s_prec_type_impl.f90 index 4272ba75..ab7e5d8e 100644 --- a/prec/impl/psb_s_prec_type_impl.f90 +++ b/prec/impl/psb_s_prec_type_impl.f90 @@ -62,7 +62,7 @@ !!$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans,work) +subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans) use psb_base_mod use psb_s_prec_type, psb_protect_name => psb_s_apply2_vect implicit none @@ -72,10 +72,8 @@ subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans,work) type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) character :: trans_ - real(psb_spk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -94,36 +92,13 @@ subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if - call prec%prec%apply(sone,x,szero,y,desc_data,info,& - & trans=trans_,work=work_) - - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if + call prec%prec%apply(sone,x,szero,y,desc_data,info,trans=trans_) call psb_erractionrestore(err_act) return @@ -133,7 +108,7 @@ subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans,work) end subroutine psb_s_apply2_vect -subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans,work) +subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans) use psb_base_mod use psb_s_prec_type, psb_protect_name => psb_s_apply1_vect implicit none @@ -142,11 +117,9 @@ subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans,work) type(psb_s_vect_type),intent(inout) :: x integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) type(psb_s_vect_type) :: ww character :: trans_ - real(psb_spk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -165,18 +138,6 @@ subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") @@ -184,19 +145,9 @@ subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans,work) end if call psb_geasb(ww,desc_data,info,mold=x%v,scratch=.true.) - if (info == 0) call prec%prec%apply(sone,x,szero,ww,desc_data,info,& - & trans=trans_,work=work_) + if (info == 0) call prec%prec%apply(sone,x,szero,ww,desc_data,info,trans=trans_) if (info == 0) call psb_geaxpby(sone,ww,szero,x,desc_data,info) call psb_gefree(ww,desc_data,info) - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if call psb_erractionrestore(err_act) return diff --git a/prec/impl/psb_z_bjacprec_impl.f90 b/prec/impl/psb_z_bjacprec_impl.f90 index 3533f1e3..03d6329f 100644 --- a/prec/impl/psb_z_bjacprec_impl.f90 +++ b/prec/impl/psb_z_bjacprec_impl.f90 @@ -71,7 +71,7 @@ subroutine psb_z_bjac_dump(prec,info,prefix,head) end subroutine psb_z_bjac_dump -subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_z_bjacprec, psb_protect_name => psb_z_bjac_apply_vect implicit none @@ -82,11 +82,10 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) ! Local variables integer(psb_ipk_) :: n_row,n_col - complex(psb_dpk_), pointer :: ww(:), aux(:) + complex(psb_dpk_), pointer :: ww(:) type(psb_z_vect_type) :: wv, wv1 type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me @@ -140,17 +139,7 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) end if - if (n_col <= size(work)) then - ww => work(1:n_col) - if ((4*n_col+n_col) <= size(work)) then - aux => work(n_col+1:) - else - allocate(aux(4*n_col),stat=info) - - endif - else - allocate(ww(n_col),aux(4*n_col),stat=info) - endif + allocate(ww(n_col),stat=info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='Allocate') @@ -168,28 +157,28 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spsm(zone,prec%av(psb_l_pr_),x,zzero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_,work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_u_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('T') call psb_spsm(zone,prec%av(psb_u_pr_),x,zzero,wv,desc_data,info,& - & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_, work=aux) + & trans=trans_,scale='L',diag=prec%dv,choice=psb_none_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) case('C') call psb_spsm(zone,prec%av(psb_u_pr_),x,zzero,wv,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_, work=aux) + & trans=trans_,scale='U',choice=psb_none_) call wv1%mlt(zone,prec%dv,wv,zzero,info,conjgx=trans_) if(info == psb_success_) call psb_spsm(alpha,prec%av(psb_l_pr_),wv1,& & beta,y,desc_data,info,& - & trans=trans_,scale='U',choice=psb_none_,work=aux) + & trans=trans_,scale='U',choice=psb_none_) end select if (info /= psb_success_) then @@ -203,20 +192,20 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) select case(trans_) case('N') call psb_spmm(zone,prec%av(psb_l_pr_),x,zzero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(zone,prec%dv,wv,zzero,info) if(info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1,& - & beta,y,desc_data,info, trans=trans_, work=aux,doswap=.false.) + & beta,y,desc_data,info, trans=trans_, doswap=.false.) case('T','C') call psb_spmm(zone,prec%av(psb_l_pr_),x,zzero,wv,desc_data,info,& - & trans=trans_,work=aux,doswap=.false.) + & trans=trans_,doswap=.false.) if (info == psb_success_) call wv1%mlt(zone,prec%dv,wv,zzero,info) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_u_pr_),wv1, & - & beta,y,desc_data,info,trans=trans_,work=aux,doswap=.false.) + & beta,y,desc_data,info,trans=trans_,doswap=.false.) end select if (info /= psb_success_) then @@ -235,14 +224,8 @@ subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) call psb_halo(y,desc_data,info,data=psb_comm_mov_) if (do_alloc_wrk) call prec%free_wrk(info) - if (n_col <= size(work)) then - if ((4*n_col+n_col) <= size(work)) then - else - deallocate(aux) - endif - else - deallocate(ww,aux) - endif + + deallocate(ww) call psb_erractionrestore(err_act) @@ -397,7 +380,6 @@ subroutine psb_z_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& & trans=trans_,work=aux,doswap=.false.) - case('C') call psb_spmm(zone,prec%av(psb_u_pr_),x,zzero,ww,desc_data,info,& & trans=trans_,work=aux,doswap=.false.) @@ -405,7 +387,6 @@ subroutine psb_z_bjac_apply(alpha,prec,x,beta,y,desc_data,info,trans,work) if (info == psb_success_) & & call psb_spmm(alpha,prec%av(psb_l_pr_),ww,beta,y,desc_data,info,& & trans=trans_,work=aux,doswap=.false.) - end select diff --git a/prec/impl/psb_z_diagprec_impl.f90 b/prec/impl/psb_z_diagprec_impl.f90 index 15776b52..d501401e 100644 --- a/prec/impl/psb_z_diagprec_impl.f90 +++ b/prec/impl/psb_z_diagprec_impl.f90 @@ -65,7 +65,7 @@ subroutine psb_z_diag_dump(prec,info,prefix,head) end subroutine psb_z_diag_dump -subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_z_diagprec, psb_protect_name => psb_z_diag_apply_vect implicit none @@ -76,7 +76,6 @@ subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='z_diag_prec_apply' complex(psb_dpk_), pointer :: ww(:) diff --git a/prec/impl/psb_z_nullprec_impl.f90 b/prec/impl/psb_z_nullprec_impl.f90 index 0306f35d..9cb1a208 100644 --- a/prec/impl/psb_z_nullprec_impl.f90 +++ b/prec/impl/psb_z_nullprec_impl.f90 @@ -29,7 +29,7 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) +subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) use psb_base_mod use psb_z_nullprec, psb_protect_name => psb_z_null_apply_vect implicit none @@ -40,7 +40,6 @@ subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) integer(psb_ipk_) :: err_act, nrow, ierr(5) character(len=20) :: name='c_null_prec_apply' diff --git a/prec/impl/psb_z_prec_type_impl.f90 b/prec/impl/psb_z_prec_type_impl.f90 index 00f0b05e..7f5ae39e 100644 --- a/prec/impl/psb_z_prec_type_impl.f90 +++ b/prec/impl/psb_z_prec_type_impl.f90 @@ -75,7 +75,6 @@ subroutine psb_z_apply2_vect(prec,x,y,desc_data,info,trans,work) complex(psb_dpk_),intent(inout), optional, target :: work(:) character :: trans_ - complex(psb_dpk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -94,36 +93,13 @@ subroutine psb_z_apply2_vect(prec,x,y,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") goto 9999 end if - call prec%prec%apply(zone,x,zzero,y,desc_data,info,& - & trans=trans_,work=work_) - - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if + call prec%prec%apply(zone,x,zzero,y,desc_data,info,trans=trans_) call psb_erractionrestore(err_act) return @@ -146,7 +122,6 @@ subroutine psb_z_apply1_vect(prec,x,desc_data,info,trans,work) type(psb_z_vect_type) :: ww character :: trans_ - complex(psb_dpk_), pointer :: work_(:) type(psb_ctxt_type) :: ctxt integer(psb_ipk_) :: np,me integer(psb_ipk_) :: err_act @@ -165,18 +140,6 @@ subroutine psb_z_apply1_vect(prec,x,desc_data,info,trans,work) trans_='N' end if - if (present(work)) then - work_ => work - else - allocate(work_(4*desc_data%get_local_cols()),stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='Allocate') - goto 9999 - end if - - end if - if (.not.allocated(prec%prec)) then info = 1124 call psb_errpush(info,name,a_err="preconditioner") @@ -184,19 +147,9 @@ subroutine psb_z_apply1_vect(prec,x,desc_data,info,trans,work) end if call psb_geasb(ww,desc_data,info,mold=x%v,scratch=.true.) - if (info == 0) call prec%prec%apply(zone,x,zzero,ww,desc_data,info,& - & trans=trans_,work=work_) + if (info == 0) call prec%prec%apply(zone,x,zzero,ww,desc_data,info,trans=trans_) if (info == 0) call psb_geaxpby(zone,ww,zzero,x,desc_data,info) call psb_gefree(ww,desc_data,info) - if (present(work)) then - else - deallocate(work_,stat=info) - if (info /= psb_success_) then - info = psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='DeAllocate') - goto 9999 - end if - end if call psb_erractionrestore(err_act) return diff --git a/prec/psb_c_base_prec_mod.f90 b/prec/psb_c_base_prec_mod.f90 index 4358d5c2..8af17a7d 100644 --- a/prec/psb_c_base_prec_mod.f90 +++ b/prec/psb_c_base_prec_mod.f90 @@ -78,7 +78,7 @@ module psb_c_base_prec_mod & psb_c_base_get_nzeros abstract interface - subroutine psb_c_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_c_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import psb_ipk_, psb_spk_, psb_desc_type, psb_c_vect_type, & & psb_c_base_vect_type, psb_cspmat_type, psb_c_base_prec_type,& & psb_c_base_sparse_mat @@ -90,7 +90,6 @@ module psb_c_base_prec_mod type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_c_base_apply_vect end interface diff --git a/prec/psb_c_bjacprec.f90 b/prec/psb_c_bjacprec.f90 index 8d689352..c26e7d76 100644 --- a/prec/psb_c_bjacprec.f90 +++ b/prec/psb_c_bjacprec.f90 @@ -77,7 +77,7 @@ module psb_c_bjacprec end interface interface - subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_c_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_c_bjac_prec_type, psb_c_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_c_bjac_prec_type), intent(inout) :: prec @@ -86,7 +86,7 @@ module psb_c_bjacprec type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) + end subroutine psb_c_bjac_apply_vect end interface diff --git a/prec/psb_c_diagprec.f90 b/prec/psb_c_diagprec.f90 index 9af9e2f9..5ef6aa1a 100644 --- a/prec/psb_c_diagprec.f90 +++ b/prec/psb_c_diagprec.f90 @@ -56,7 +56,7 @@ module psb_c_diagprec interface - subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_c_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_c_diag_prec_type, psb_c_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_c_diag_prec_type), intent(inout) :: prec @@ -65,7 +65,6 @@ module psb_c_diagprec type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_c_diag_apply_vect end interface diff --git a/prec/psb_c_nullprec.f90 b/prec/psb_c_nullprec.f90 index 56bbca58..4d8e828a 100644 --- a/prec/psb_c_nullprec.f90 +++ b/prec/psb_c_nullprec.f90 @@ -51,7 +51,7 @@ module psb_c_nullprec interface - subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_c_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_c_null_prec_type, psb_c_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_c_null_prec_type), intent(inout) :: prec @@ -60,7 +60,6 @@ module psb_c_nullprec type(psb_c_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_c_null_apply_vect end interface diff --git a/prec/psb_c_prec_type.f90 b/prec/psb_c_prec_type.f90 index 9c5e1cdc..220f3e5a 100644 --- a/prec/psb_c_prec_type.f90 +++ b/prec/psb_c_prec_type.f90 @@ -108,27 +108,25 @@ module psb_c_prec_type end interface interface - subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans,work) + subroutine psb_c_apply2_vect(prec,x,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_cprec_type, psb_c_vect_type, psb_spk_ - type(psb_desc_type),intent(in) :: desc_data - class(psb_cprec_type), intent(inout) :: prec - type(psb_c_vect_type),intent(inout) :: x - type(psb_c_vect_type),intent(inout) :: y - integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) + type(psb_desc_type),intent(in) :: desc_data + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type),intent(inout) :: x + type(psb_c_vect_type),intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + character(len=1), optional :: trans end subroutine psb_c_apply2_vect end interface interface - subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans,work) + subroutine psb_c_apply1_vect(prec,x,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_cprec_type, psb_c_vect_type, psb_spk_ - type(psb_desc_type),intent(in) :: desc_data - class(psb_cprec_type), intent(inout) :: prec - type(psb_c_vect_type),intent(inout) :: x - integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - complex(psb_spk_),intent(inout), optional, target :: work(:) + type(psb_desc_type),intent(in) :: desc_data + class(psb_cprec_type), intent(inout) :: prec + type(psb_c_vect_type),intent(inout) :: x + integer(psb_ipk_), intent(out) :: info + character(len=1), optional :: trans end subroutine psb_c_apply1_vect end interface diff --git a/prec/psb_d_base_prec_mod.f90 b/prec/psb_d_base_prec_mod.f90 index e3869193..dbc8d1f1 100644 --- a/prec/psb_d_base_prec_mod.f90 +++ b/prec/psb_d_base_prec_mod.f90 @@ -78,7 +78,7 @@ module psb_d_base_prec_mod & psb_d_base_get_nzeros abstract interface - subroutine psb_d_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_d_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import psb_ipk_, psb_dpk_, psb_desc_type, psb_d_vect_type, & & psb_d_base_vect_type, psb_dspmat_type, psb_d_base_prec_type,& & psb_d_base_sparse_mat @@ -90,8 +90,6 @@ module psb_d_base_prec_mod type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) - end subroutine psb_d_base_apply_vect end interface diff --git a/prec/psb_d_bjacprec.f90 b/prec/psb_d_bjacprec.f90 index 6ca35ec8..92ae0c69 100644 --- a/prec/psb_d_bjacprec.f90 +++ b/prec/psb_d_bjacprec.f90 @@ -77,7 +77,7 @@ module psb_d_bjacprec end interface interface - subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_d_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_d_bjac_prec_type, psb_d_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_d_bjac_prec_type), intent(inout) :: prec @@ -86,7 +86,6 @@ module psb_d_bjacprec type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_d_bjac_apply_vect end interface diff --git a/prec/psb_d_diagprec.f90 b/prec/psb_d_diagprec.f90 index 268b104c..133763b0 100644 --- a/prec/psb_d_diagprec.f90 +++ b/prec/psb_d_diagprec.f90 @@ -56,7 +56,7 @@ module psb_d_diagprec interface - subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_d_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_d_diag_prec_type, psb_d_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_d_diag_prec_type), intent(inout) :: prec @@ -65,7 +65,6 @@ module psb_d_diagprec type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_d_diag_apply_vect end interface diff --git a/prec/psb_d_nullprec.f90 b/prec/psb_d_nullprec.f90 index 7e94e0ef..b37af8b7 100644 --- a/prec/psb_d_nullprec.f90 +++ b/prec/psb_d_nullprec.f90 @@ -51,7 +51,7 @@ module psb_d_nullprec interface - subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_d_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_d_null_prec_type, psb_d_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_d_null_prec_type), intent(inout) :: prec @@ -60,7 +60,6 @@ module psb_d_nullprec type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_d_null_apply_vect end interface diff --git a/prec/psb_d_prec_type.f90 b/prec/psb_d_prec_type.f90 index 708b33f3..55baaad6 100644 --- a/prec/psb_d_prec_type.f90 +++ b/prec/psb_d_prec_type.f90 @@ -108,7 +108,7 @@ module psb_d_prec_type end interface interface - subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans,work) + subroutine psb_d_apply2_vect(prec,x,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_dprec_type, psb_d_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_dprec_type), intent(inout) :: prec @@ -116,19 +116,17 @@ module psb_d_prec_type type(psb_d_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_d_apply2_vect end interface interface - subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans,work) + subroutine psb_d_apply1_vect(prec,x,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_dprec_type, psb_d_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_dprec_type), intent(inout) :: prec type(psb_d_vect_type),intent(inout) :: x integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_d_apply1_vect end interface diff --git a/prec/psb_s_base_prec_mod.f90 b/prec/psb_s_base_prec_mod.f90 index 36af2787..5f2bc217 100644 --- a/prec/psb_s_base_prec_mod.f90 +++ b/prec/psb_s_base_prec_mod.f90 @@ -78,19 +78,18 @@ module psb_s_base_prec_mod & psb_s_base_get_nzeros abstract interface - subroutine psb_s_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_s_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import psb_ipk_, psb_spk_, psb_desc_type, psb_s_vect_type, & & psb_s_base_vect_type, psb_sspmat_type, psb_s_base_prec_type,& & psb_s_base_sparse_mat implicit none - type(psb_desc_type),intent(in) :: desc_data + type(psb_desc_type),intent(in) :: desc_data class(psb_s_base_prec_type), intent(inout) :: prec - real(psb_spk_),intent(in) :: alpha, beta - type(psb_s_vect_type),intent(inout) :: x - type(psb_s_vect_type),intent(inout) :: y - integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) + real(psb_spk_),intent(in) :: alpha, beta + type(psb_s_vect_type),intent(inout) :: x + type(psb_s_vect_type),intent(inout) :: y + integer(psb_ipk_), intent(out) :: info + character(len=1), optional :: trans end subroutine psb_s_base_apply_vect end interface @@ -101,14 +100,14 @@ module psb_s_base_prec_mod & psb_s_base_vect_type, psb_sspmat_type, psb_s_base_prec_type,& & psb_s_base_sparse_mat implicit none - type(psb_desc_type),intent(in) :: desc_data - class(psb_s_base_prec_type), intent(inout) :: prec - real(psb_spk_),intent(in) :: alpha, beta - real(psb_spk_),intent(inout) :: x(:) - real(psb_spk_),intent(inout) :: y(:) - integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) + type(psb_desc_type),intent(in) :: desc_data + class(psb_s_base_prec_type), intent(inout) :: prec + real(psb_spk_),intent(in) :: alpha, beta + real(psb_spk_),intent(inout) :: x(:) + real(psb_spk_),intent(inout) :: y(:) + integer(psb_ipk_), intent(out) :: info + character(len=1), optional :: trans + real(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_s_base_apply end interface diff --git a/prec/psb_s_bjacprec.f90 b/prec/psb_s_bjacprec.f90 index 5173ddd2..645cea04 100644 --- a/prec/psb_s_bjacprec.f90 +++ b/prec/psb_s_bjacprec.f90 @@ -77,7 +77,7 @@ module psb_s_bjacprec end interface interface - subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_s_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_s_bjac_prec_type, psb_s_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_s_bjac_prec_type), intent(inout) :: prec @@ -85,8 +85,7 @@ module psb_s_bjacprec type(psb_s_vect_type),intent(inout) :: x type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info - character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) + character(len=1), optional :: trans end subroutine psb_s_bjac_apply_vect end interface diff --git a/prec/psb_s_diagprec.f90 b/prec/psb_s_diagprec.f90 index 022d831d..41c02a37 100644 --- a/prec/psb_s_diagprec.f90 +++ b/prec/psb_s_diagprec.f90 @@ -56,7 +56,7 @@ module psb_s_diagprec interface - subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_s_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_s_diag_prec_type, psb_s_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_s_diag_prec_type), intent(inout) :: prec @@ -65,7 +65,6 @@ module psb_s_diagprec type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_s_diag_apply_vect end interface diff --git a/prec/psb_s_nullprec.f90 b/prec/psb_s_nullprec.f90 index 9907eb7a..c6fba772 100644 --- a/prec/psb_s_nullprec.f90 +++ b/prec/psb_s_nullprec.f90 @@ -51,7 +51,7 @@ module psb_s_nullprec interface - subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_s_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_s_null_prec_type, psb_s_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_s_null_prec_type), intent(inout) :: prec @@ -60,7 +60,6 @@ module psb_s_nullprec type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_s_null_apply_vect end interface diff --git a/prec/psb_s_prec_type.f90 b/prec/psb_s_prec_type.f90 index 9b6ee231..8ee1c005 100644 --- a/prec/psb_s_prec_type.f90 +++ b/prec/psb_s_prec_type.f90 @@ -108,7 +108,7 @@ module psb_s_prec_type end interface interface - subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans,work) + subroutine psb_s_apply2_vect(prec,x,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_sprec_type, psb_s_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_sprec_type), intent(inout) :: prec @@ -116,19 +116,17 @@ module psb_s_prec_type type(psb_s_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_s_apply2_vect end interface interface - subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans,work) + subroutine psb_s_apply1_vect(prec,x,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_sprec_type, psb_s_vect_type, psb_spk_ type(psb_desc_type),intent(in) :: desc_data class(psb_sprec_type), intent(inout) :: prec type(psb_s_vect_type),intent(inout) :: x integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - real(psb_spk_),intent(inout), optional, target :: work(:) end subroutine psb_s_apply1_vect end interface diff --git a/prec/psb_z_base_prec_mod.f90 b/prec/psb_z_base_prec_mod.f90 index ddf67630..4b73740e 100644 --- a/prec/psb_z_base_prec_mod.f90 +++ b/prec/psb_z_base_prec_mod.f90 @@ -78,7 +78,7 @@ module psb_z_base_prec_mod & psb_z_base_get_nzeros abstract interface - subroutine psb_z_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_z_base_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import psb_ipk_, psb_dpk_, psb_desc_type, psb_z_vect_type, & & psb_z_base_vect_type, psb_zspmat_type, psb_z_base_prec_type,& & psb_z_base_sparse_mat @@ -90,8 +90,6 @@ module psb_z_base_prec_mod type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) - end subroutine psb_z_base_apply_vect end interface diff --git a/prec/psb_z_bjacprec.f90 b/prec/psb_z_bjacprec.f90 index d8ff09bb..0bfbe3c2 100644 --- a/prec/psb_z_bjacprec.f90 +++ b/prec/psb_z_bjacprec.f90 @@ -77,7 +77,7 @@ module psb_z_bjacprec end interface interface - subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_z_bjac_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_z_bjac_prec_type, psb_z_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_z_bjac_prec_type), intent(inout) :: prec @@ -86,7 +86,6 @@ module psb_z_bjacprec type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_z_bjac_apply_vect end interface diff --git a/prec/psb_z_diagprec.f90 b/prec/psb_z_diagprec.f90 index 26ae3c38..b70f57da 100644 --- a/prec/psb_z_diagprec.f90 +++ b/prec/psb_z_diagprec.f90 @@ -56,7 +56,7 @@ module psb_z_diagprec interface - subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_z_diag_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_z_diag_prec_type, psb_z_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_z_diag_prec_type), intent(inout) :: prec @@ -65,7 +65,6 @@ module psb_z_diagprec type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_z_diag_apply_vect end interface diff --git a/prec/psb_z_nullprec.f90 b/prec/psb_z_nullprec.f90 index 56b5329f..433fe10a 100644 --- a/prec/psb_z_nullprec.f90 +++ b/prec/psb_z_nullprec.f90 @@ -51,7 +51,7 @@ module psb_z_nullprec interface - subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans,work) + subroutine psb_z_null_apply_vect(alpha,prec,x,beta,y,desc_data,info,trans) import :: psb_ipk_, psb_desc_type, psb_z_null_prec_type, psb_z_vect_type, psb_dpk_ type(psb_desc_type),intent(in) :: desc_data class(psb_z_null_prec_type), intent(inout) :: prec @@ -60,7 +60,6 @@ module psb_z_nullprec type(psb_z_vect_type),intent(inout) :: y integer(psb_ipk_), intent(out) :: info character(len=1), optional :: trans - complex(psb_dpk_),intent(inout), optional, target :: work(:) end subroutine psb_z_null_apply_vect end interface diff --git a/test/torture/psb_s_mvsv_tester.f90 b/test/torture/psb_s_mvsv_tester.f90 index cfa3388a..0f1a7a75 100644 --- a/test/torture/psb_s_mvsv_tester.f90 +++ b/test/torture/psb_s_mvsv_tester.f90 @@ -23,8 +23,8 @@ contains integer(psb_ipk_) :: nnz=3 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(3)=(/1, 1, 2/) - integer(psb_ipk_) :: JA(3)=(/1, 2, 2/) + integer(psb_lpk_) :: IA(3)=(/1, 1, 2/) + integer(psb_lpk_) :: JA(3)=(/1, 2, 2/) real*4 :: VA(3)=(/1, 1, 1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/9, 6/)! reference cy after @@ -100,8 +100,8 @@ contains integer(psb_ipk_) :: nnz=2 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(2)=(/1, 2/) - integer(psb_ipk_) :: JA(2)=(/1, 1/) + integer(psb_lpk_) :: IA(2)=(/1, 2/) + integer(psb_lpk_) :: JA(2)=(/1, 1/) real*4 :: VA(2)=(/1, 1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/9, 3/)! reference cy after @@ -177,8 +177,8 @@ contains integer(psb_ipk_) :: nnz=3 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(3)=(/1, 1, 2/) - integer(psb_ipk_) :: JA(3)=(/1, 2, 2/) + integer(psb_lpk_) :: IA(3)=(/1, 1, 2/) + integer(psb_lpk_) :: JA(3)=(/1, 2, 2/) real*4 :: VA(3)=(/1, 2, 6/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/6, 27/)! reference cy after @@ -254,8 +254,8 @@ contains integer(psb_ipk_) :: nnz=2 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(2)=(/1, 1/) - integer(psb_ipk_) :: JA(2)=(/1, 2/) + integer(psb_lpk_) :: IA(2)=(/1, 1/) + integer(psb_lpk_) :: JA(2)=(/1, 2/) real*4 :: VA(2)=(/1, 2/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/9, 0/)! reference cy after @@ -331,8 +331,8 @@ contains integer(psb_ipk_) :: nnz=3 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(3)=(/1, 1, 2/) - integer(psb_ipk_) :: JA(3)=(/1, 2, 1/) + integer(psb_lpk_) :: IA(3)=(/1, 1, 2/) + integer(psb_lpk_) :: JA(3)=(/1, 2, 1/) real*4 :: VA(3)=(/1, 3, 2/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/9, 9/)! reference cy after @@ -408,8 +408,8 @@ contains integer(psb_ipk_) :: nnz=2 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(2)=(/1, 2/) - integer(psb_ipk_) :: JA(2)=(/1, 1/) + integer(psb_lpk_) :: IA(2)=(/1, 2/) + integer(psb_lpk_) :: JA(2)=(/1, 1/) real*4 :: VA(2)=(/1, 1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/6, 0/)! reference cy after @@ -485,8 +485,8 @@ contains integer(psb_ipk_) :: nnz=1 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(1)=(/1/) - integer(psb_ipk_) :: JA(1)=(/1/) + integer(psb_lpk_) :: IA(1)=(/1/) + integer(psb_lpk_) :: JA(1)=(/1/) real*4 :: VA(1)=(/1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/4, 3/)! reference cy after @@ -562,8 +562,8 @@ contains integer(psb_ipk_) :: nnz=2 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(2)=(/1, 2/) - integer(psb_ipk_) :: JA(2)=(/1, 1/) + integer(psb_lpk_) :: IA(2)=(/1, 2/) + integer(psb_lpk_) :: JA(2)=(/1, 1/) real*4 :: VA(2)=(/1, 1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/5, 3/)! reference cy after @@ -639,8 +639,8 @@ contains integer(psb_ipk_) :: nnz=4 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(4)=(/1, 1, 2, 2/) - integer(psb_ipk_) :: JA(4)=(/1, 2, 1, 2/) + integer(psb_lpk_) :: IA(4)=(/1, 1, 2, 2/) + integer(psb_lpk_) :: JA(4)=(/1, 2, 1, 2/) real*4 :: VA(4)=(/1, 2, 5, 1/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/9, 6/)! reference cy after @@ -716,8 +716,8 @@ contains integer(psb_ipk_) :: nnz=3 integer(psb_ipk_) :: m=2 integer(psb_ipk_) :: k=2 - integer(psb_ipk_) :: IA(3)=(/1, 1, 2/) - integer(psb_ipk_) :: JA(3)=(/1, 2, 1/) + integer(psb_lpk_) :: IA(3)=(/1, 1, 2/) + integer(psb_lpk_) :: JA(3)=(/1, 2, 1/) real*4 :: VA(3)=(/1, 1, 2/) real*4 :: x(2)=(/1, 1/)! reference x real*4 :: cy(2)=(/2, 2/)! reference cy after