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_)