From 026b1953c26e2d44e6e510e7f4dc92f54aa1e2b8 Mon Sep 17 00:00:00 2001 From: Stack-1 Date: Thu, 11 Jun 2026 20:49:29 +0200 Subject: [PATCH] [FIX] Drop work= from MINRES vector calls after the development merge The MINRES implementation merged from development calls the vector psb_spmm and prec%apply with work=aux, but communication_v2 removed the work argument from the vector interfaces. Remove work=aux from psb_{c,d,s,z}minres so the vector solvers match the communication_v2 interface; the library now builds. --- linsolve/impl/psb_cminres.f90 | 10 +++++----- linsolve/impl/psb_dminres.f90 | 10 +++++----- linsolve/impl/psb_sminres.f90 | 10 +++++----- linsolve/impl/psb_zminres.f90 | 10 +++++----- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/linsolve/impl/psb_cminres.f90 b/linsolve/impl/psb_cminres.f90 index f4b1f8c77..9e63a6e1a 100644 --- a/linsolve/impl/psb_cminres.f90 +++ b/linsolve/impl/psb_cminres.f90 @@ -235,7 +235,7 @@ subroutine psb_cminres_vect(a,prec,b,x,eps,desc_a,info,& ! res = b - A*x call psb_geaxpby(cone,b,czero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,res,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -268,7 +268,7 @@ subroutine psb_cminres_vect(a,prec,b,x,eps,desc_a,info,& ! y = beta1 * P' * v1, with v1 the first Lanczos vector. call psb_geaxpby(cone,res,czero,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(cone,res,czero,r1,desc_a,info) - if (info == psb_success_) call prec%apply(res,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(res,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -346,7 +346,7 @@ subroutine psb_cminres_vect(a,prec,b,x,eps,desc_a,info,& s = cone/beta call psb_geaxpby(s,y,czero,v,desc_a,info) - if (info == psb_success_) call psb_spmm(cone,a,v,czero,y,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(cone,a,v,czero,y,desc_a,info) if (itx >= 2 .and. info == psb_success_) then call psb_geaxpby((-beta/oldb),r1,cone,y,desc_a,info) end if @@ -366,7 +366,7 @@ subroutine psb_cminres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby((-alfa/beta),r2,cone,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(cone,r2,czero,r1,desc_a,info) if (info == psb_success_) call psb_geaxpby(cone,y,czero,r2,desc_a,info) - if (info == psb_success_) call prec%apply(r2,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(r2,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -446,7 +446,7 @@ subroutine psb_cminres_vect(a,prec,b,x,eps,desc_a,info,& case(psb_istop_ani_) ! Compute true residual only for the ANI stopping criterion. call psb_geaxpby(cone,b,czero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-cone,a,x,cone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-cone,a,x,cone,res,desc_a,info) if (info == psb_success_) rni = psb_geamax(res,desc_a,info) if (info == psb_success_) xni = psb_geamax(x,desc_a,info) errnum = rni diff --git a/linsolve/impl/psb_dminres.f90 b/linsolve/impl/psb_dminres.f90 index a3e1675a1..916a0dbaf 100644 --- a/linsolve/impl/psb_dminres.f90 +++ b/linsolve/impl/psb_dminres.f90 @@ -236,7 +236,7 @@ subroutine psb_dminres_vect(a,prec,b,x,eps,desc_a,info,& ! res = b - A*x call psb_geaxpby(done,b,dzero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,res,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -269,7 +269,7 @@ subroutine psb_dminres_vect(a,prec,b,x,eps,desc_a,info,& ! y = beta1 * P' * v1, with v1 the first Lanczos vector. call psb_geaxpby(done,res,dzero,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(done,res,dzero,r1,desc_a,info) - if (info == psb_success_) call prec%apply(res,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(res,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -354,7 +354,7 @@ subroutine psb_dminres_vect(a,prec,b,x,eps,desc_a,info,& s = done/beta call psb_geaxpby(s,y,dzero,v,desc_a,info) - if (info == psb_success_) call psb_spmm(done,a,v,dzero,y,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(done,a,v,dzero,y,desc_a,info) if (itx >= 2 .and. info == psb_success_) then call psb_geaxpby((-beta/oldb),r1,done,y,desc_a,info) end if @@ -374,7 +374,7 @@ subroutine psb_dminres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby((-alfa/beta),r2,done,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(done,r2,dzero,r1,desc_a,info) if (info == psb_success_) call psb_geaxpby(done,y,dzero,r2,desc_a,info) - if (info == psb_success_) call prec%apply(r2,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(r2,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -461,7 +461,7 @@ subroutine psb_dminres_vect(a,prec,b,x,eps,desc_a,info,& case(psb_istop_ani_) ! Compute true residual only for the ANI stopping criterion. call psb_geaxpby(done,b,dzero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-done,a,x,done,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-done,a,x,done,res,desc_a,info) if (info == psb_success_) rni = psb_geamax(res,desc_a,info) if (info == psb_success_) xni = psb_geamax(x,desc_a,info) errnum = rni diff --git a/linsolve/impl/psb_sminres.f90 b/linsolve/impl/psb_sminres.f90 index 7696e323a..55b684f49 100644 --- a/linsolve/impl/psb_sminres.f90 +++ b/linsolve/impl/psb_sminres.f90 @@ -236,7 +236,7 @@ subroutine psb_sminres_vect(a,prec,b,x,eps,desc_a,info,& ! res = b - A*x call psb_geaxpby(sone,b,szero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,res,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -269,7 +269,7 @@ subroutine psb_sminres_vect(a,prec,b,x,eps,desc_a,info,& ! y = beta1 * P' * v1, with v1 the first Lanczos vector. call psb_geaxpby(sone,res,szero,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(sone,res,szero,r1,desc_a,info) - if (info == psb_success_) call prec%apply(res,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(res,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -354,7 +354,7 @@ subroutine psb_sminres_vect(a,prec,b,x,eps,desc_a,info,& s = sone/beta call psb_geaxpby(s,y,szero,v,desc_a,info) - if (info == psb_success_) call psb_spmm(sone,a,v,szero,y,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(sone,a,v,szero,y,desc_a,info) if (itx >= 2 .and. info == psb_success_) then call psb_geaxpby((-beta/oldb),r1,sone,y,desc_a,info) end if @@ -374,7 +374,7 @@ subroutine psb_sminres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby((-alfa/beta),r2,sone,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(sone,r2,szero,r1,desc_a,info) if (info == psb_success_) call psb_geaxpby(sone,y,szero,r2,desc_a,info) - if (info == psb_success_) call prec%apply(r2,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(r2,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -461,7 +461,7 @@ subroutine psb_sminres_vect(a,prec,b,x,eps,desc_a,info,& case(psb_istop_ani_) ! Compute true residual only for the ANI stopping criterion. call psb_geaxpby(sone,b,szero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-sone,a,x,sone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-sone,a,x,sone,res,desc_a,info) if (info == psb_success_) rni = psb_geamax(res,desc_a,info) if (info == psb_success_) xni = psb_geamax(x,desc_a,info) errnum = rni diff --git a/linsolve/impl/psb_zminres.f90 b/linsolve/impl/psb_zminres.f90 index 4d9c27dbe..555c0581c 100644 --- a/linsolve/impl/psb_zminres.f90 +++ b/linsolve/impl/psb_zminres.f90 @@ -235,7 +235,7 @@ subroutine psb_zminres_vect(a,prec,b,x,eps,desc_a,info,& ! res = b - A*x call psb_geaxpby(zone,b,zzero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,res,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -268,7 +268,7 @@ subroutine psb_zminres_vect(a,prec,b,x,eps,desc_a,info,& ! y = beta1 * P' * v1, with v1 the first Lanczos vector. call psb_geaxpby(zone,res,zzero,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(zone,res,zzero,r1,desc_a,info) - if (info == psb_success_) call prec%apply(res,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(res,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -346,7 +346,7 @@ subroutine psb_zminres_vect(a,prec,b,x,eps,desc_a,info,& s = zone/beta call psb_geaxpby(s,y,zzero,v,desc_a,info) - if (info == psb_success_) call psb_spmm(zone,a,v,zzero,y,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(zone,a,v,zzero,y,desc_a,info) if (itx >= 2 .and. info == psb_success_) then call psb_geaxpby((-beta/oldb),r1,zone,y,desc_a,info) end if @@ -366,7 +366,7 @@ subroutine psb_zminres_vect(a,prec,b,x,eps,desc_a,info,& call psb_geaxpby((-alfa/beta),r2,zone,y,desc_a,info) if (info == psb_success_) call psb_geaxpby(zone,r2,zzero,r1,desc_a,info) if (info == psb_success_) call psb_geaxpby(zone,y,zzero,r2,desc_a,info) - if (info == psb_success_) call prec%apply(r2,y,desc_a,info,work=aux) + if (info == psb_success_) call prec%apply(r2,y,desc_a,info) if (info /= psb_success_) then info=psb_err_from_subroutine_non_ call psb_errpush(info,name) @@ -446,7 +446,7 @@ subroutine psb_zminres_vect(a,prec,b,x,eps,desc_a,info,& case(psb_istop_ani_) ! Compute true residual only for the ANI stopping criterion. call psb_geaxpby(zone,b,zzero,res,desc_a,info) - if (info == psb_success_) call psb_spmm(-zone,a,x,zone,res,desc_a,info,work=aux) + if (info == psb_success_) call psb_spmm(-zone,a,x,zone,res,desc_a,info) if (info == psb_success_) rni = psb_geamax(res,desc_a,info) if (info == psb_success_) xni = psb_geamax(x,desc_a,info) errnum = rni