| 311 | |
| 312 | |
| 313 | void DevDiagonalMatrix :: Mult (const BaseVector & x, BaseVector & y) const |
| 314 | { |
| 315 | UnifiedVectorWrapper ux(x); |
| 316 | UnifiedVectorWrapper uy(y); |
| 317 | |
| 318 | /* |
| 319 | ux.UpdateDevice(); |
| 320 | uy.UpdateDevice(); |
| 321 | |
| 322 | // MultDiagonal (diag.Size(), diag.DevData(), ux.DevData(), uy.DevData()); |
| 323 | DeviceParallelFor |
| 324 | (diag.Size(), |
| 325 | [ddiag=diag.DevData(), dx=ux.DevData(), dy=uy.DevData()] DEVICE_LAMBDA (auto tid) |
| 326 | { |
| 327 | dy[tid] = ddiag[tid]*dx[tid]; |
| 328 | }); |
| 329 | |
| 330 | uy.InvalidateHost(); |
| 331 | */ |
| 332 | |
| 333 | DeviceParallelFor |
| 334 | (diag.Size(), |
| 335 | [ddiag=diag.DevData(), dx=ux.FVDevRO(), dy=uy.FVDev()] DEVICE_LAMBDA (auto tid) |
| 336 | { |
| 337 | dy(tid) = ddiag[tid]*dx(tid); |
| 338 | }); |
| 339 | } |
| 340 | |
| 341 | void DevDiagonalMatrix :: MultAdd (double s, const BaseVector & x, BaseVector & y) const |
| 342 | { |
nothing calls this directly
no test coverage detected