| 
77 | 77 | # This PyLops operator has GPU-support (https://pylops.readthedocs.io/en/stable/gpu.html)  | 
78 | 78 | # so it can run with DistributedArray whose engine is Cupy  | 
79 | 79 | 
 
  | 
80 |  | -PPop = PoststackLinearModelling(wav, nt0=nz, spatdims=(ny_i, nx))  | 
 | 80 | +PPop = PoststackLinearModelling(wav=cp.asarray(wav), nt0=nz, spatdims=(ny_i, nx))  | 
81 | 81 | Top = Transpose((ny_i, nx, nz), (2, 0, 1))  | 
82 | 82 | BDiag = pylops_mpi.basicoperators.MPIBlockDiag(ops=[Top.H @ PPop @ Top, ])  | 
83 | 83 | 
 
  | 
 | 
97 | 97 | # will be carried through NCCL GPU-to-GPU.  | 
98 | 98 | 
 
  | 
99 | 99 | # Inversion using CGLS solver  | 
100 |  | -minv3d_iter_dist = pylops_mpi.optimization.basic.cgls(BDiag, d_dist, x0=mback3d_dist, niter=10, show=True)[0]  | 
 | 100 | +minv3d_iter_dist = pylops_mpi.optimization.basic.cgls(BDiag, d_dist, x0=mback3d_dist, niter=100, show=True)[0]  | 
101 | 101 | minv3d_iter = minv3d_iter_dist.asarray().reshape((ny, nx, nz))  | 
102 | 102 | 
 
  | 
103 | 103 | ###############################################################################  | 
 | 
108 | 108 |                                 sampling=(1, 1, 1), dtype=BDiag.dtype)  | 
109 | 109 | NormEqOp = BDiag.H @ BDiag + epsR * LapOp.H @ LapOp  | 
110 | 110 | dnorm_dist = BDiag.H @ d_dist  | 
111 |  | -minv3d_ne_dist = pylops_mpi.optimization.basic.cg(NormEqOp, dnorm_dist, x0=mback3d_dist, niter=10, show=True)[0]  | 
 | 111 | +minv3d_ne_dist = pylops_mpi.optimization.basic.cg(NormEqOp, dnorm_dist, x0=mback3d_dist, niter=100, show=True)[0]  | 
112 | 112 | minv3d_ne = minv3d_ne_dist.asarray().reshape((ny, nx, nz))  | 
113 | 113 | 
 
  | 
114 | 114 | ###############################################################################  | 
 | 
120 | 120 | dstack_dist = pylops_mpi.StackedDistributedArray([d_dist, d0_dist])  | 
121 | 121 | 
 
  | 
122 | 122 | dnorm_dist = BDiag.H @ d_dist  | 
123 |  | -minv3d_reg_dist = pylops_mpi.optimization.basic.cgls(StackOp, dstack_dist, x0=mback3d_dist, niter=10, show=True)[0]  | 
 | 123 | +minv3d_reg_dist = pylops_mpi.optimization.basic.cgls(StackOp, dstack_dist, x0=mback3d_dist, niter=100, show=True)[0]  | 
124 | 124 | minv3d_reg = minv3d_reg_dist.asarray().reshape((ny, nx, nz))  | 
125 | 125 | 
 
  | 
126 | 126 | ###############################################################################  | 
 | 
0 commit comments