From 503f8c2b99162494b8b890aaf27233c8c9930388 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sat, 18 Apr 2015 17:29:21 +0000 Subject: [PATCH] psblas-3.3-maint: base/psblas/psb_cspmm.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_sspmm.f90 base/psblas/psb_zspmm.f90 Fix for transpose spmm_vect. --- base/psblas/psb_cspmm.f90 | 7 +++++-- base/psblas/psb_dspmm.f90 | 7 +++++-- base/psblas/psb_sspmm.f90 | 7 +++++-- base/psblas/psb_zspmm.f90 | 7 +++++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/base/psblas/psb_cspmm.f90 b/base/psblas/psb_cspmm.f90 index 8d0a3c47..f83cd6fc 100644 --- a/base/psblas/psb_cspmm.f90 +++ b/base/psblas/psb_cspmm.f90 @@ -813,8 +813,11 @@ subroutine psb_cspmv_vect(alpha,a,x,beta,y,desc_a,info,& call psi_ovrl_save(x%v,xvsave,desc_a,info) if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,psb_avg_,info) -!!! THIS SHOULD BE FIXED !!! But beta is almost never /= 0 -!!$ yp(nrow+1:ncol) = czero + if (beta /= czero) then + call y%sync() + y%v%v(nrow+1:ncol) = czero + call y%v%set_host() + end if ! local Matrix-vector product if (info == psb_success_) call psb_csmm(alpha,a,x,beta,y,info,trans=trans_) diff --git a/base/psblas/psb_dspmm.f90 b/base/psblas/psb_dspmm.f90 index e8eb3535..c1b8d02a 100644 --- a/base/psblas/psb_dspmm.f90 +++ b/base/psblas/psb_dspmm.f90 @@ -813,8 +813,11 @@ subroutine psb_dspmv_vect(alpha,a,x,beta,y,desc_a,info,& call psi_ovrl_save(x%v,xvsave,desc_a,info) if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,psb_avg_,info) -!!! THIS SHOULD BE FIXED !!! But beta is almost never /= 0 -!!$ yp(nrow+1:ncol) = dzero + if (beta /= dzero) then + call y%sync() + y%v%v(nrow+1:ncol) = dzero + call y%v%set_host() + end if ! local Matrix-vector product if (info == psb_success_) call psb_csmm(alpha,a,x,beta,y,info,trans=trans_) diff --git a/base/psblas/psb_sspmm.f90 b/base/psblas/psb_sspmm.f90 index e3a01b7a..ac2c8fef 100644 --- a/base/psblas/psb_sspmm.f90 +++ b/base/psblas/psb_sspmm.f90 @@ -813,8 +813,11 @@ subroutine psb_sspmv_vect(alpha,a,x,beta,y,desc_a,info,& call psi_ovrl_save(x%v,xvsave,desc_a,info) if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,psb_avg_,info) -!!! THIS SHOULD BE FIXED !!! But beta is almost never /= 0 -!!$ yp(nrow+1:ncol) = szero + if (beta /= szero) then + call y%sync() + y%v%v(nrow+1:ncol) = szero + call y%v%set_host() + end if ! local Matrix-vector product if (info == psb_success_) call psb_csmm(alpha,a,x,beta,y,info,trans=trans_) diff --git a/base/psblas/psb_zspmm.f90 b/base/psblas/psb_zspmm.f90 index 4e8f700b..0f6a5576 100644 --- a/base/psblas/psb_zspmm.f90 +++ b/base/psblas/psb_zspmm.f90 @@ -813,8 +813,11 @@ subroutine psb_zspmv_vect(alpha,a,x,beta,y,desc_a,info,& call psi_ovrl_save(x%v,xvsave,desc_a,info) if (info == psb_success_) call psi_ovrl_upd(x%v,desc_a,psb_avg_,info) -!!! THIS SHOULD BE FIXED !!! But beta is almost never /= 0 -!!$ yp(nrow+1:ncol) = zzero + if (beta /= zzero) then + call y%sync() + y%v%v(nrow+1:ncol) = zzero + call y%v%set_host() + end if ! local Matrix-vector product if (info == psb_success_) call psb_csmm(alpha,a,x,beta,y,info,trans=trans_)