Commit Graph

155 Commits (fd60bb8d7fc05a851575627349fff0628261d87d)

Author SHA1 Message Date
Stack-1 8e02a99a11 [ADD] Stock preconditioners, configurable block format and full base-class contract for the nested matrix
Complete the integration of the nested (MATNEST) operator into the standard
PSBLAS infrastructure:

- Preconditioners: implement get_diag and csgetrow on psb_d_nest_base_mat so
  the stock one-level preconditioners build directly on the nested operator
  (DIAG through the concatenated block diagonals, BJAC through the
  format-agnostic csget path used by the ILU factorizations).

- Configurable block storage: psb_d_nest_rect_block and psb_d_nest_matrix%asb
  accept an optional type ('CSR' default, 'CSC', 'COO') or mold (any class
  extending psb_d_base_sparse_mat, e.g. the psb_ext ELL/HLL formats); the
  operator is format-agnostic since every operation delegates to the blocks.

- Device-capable matvec: override vect_mv to gather/scatter through the
  vectors' own gth/sct with encapsulated index vectors (device kernels on
  device vectors) and to run each block through its vect_mv, so device block
  formats execute their native kernels; bit-equivalent to csmv on host.

- Full psb_d_base_sparse_mat contract by delegation to the blocks: transposed
  csmv (dedicated kernel, ghost contributions left to the transposed halo
  exchange), multi-RHS csmm, cp_to_coo/mv_to_coo (unlocking cscnv, csclip,
  tril/triu through the base generics), rowsum/arwsum/colsum/aclsum,
  maxval/spnmi/spnm1, scal (left/right) and scals, clone (view semantics:
  shared blocks, re-owned index maps), mold, sizeof.  cp_from_coo/mv_from_coo,
  csput and cssv/cssm are intentionally left to the base error (meaningless
  for a block-operator view), documented in the type and in the README.

Tests: glob assembles the blocks in HLL (psb_ext) and rect in CSC, both still
bit-identical to the monolithic CSR oracle; the CG test solves under NONE,
DIAG and BJAC/ILU(0), requiring convergence to the exact solution for all of
them and DIAG bit-identical to NONE (exactness check of the nested get_diag).
README updated with the user API reference, the preconditioner section and
the implemented-contract section.

Author: Simone Staccone (Stack-1)
2 weeks ago
Stack-1 acdd2e9eb5 [ADD] Nested (MATNEST-style) block matrix support and tests
Add a block-structured distributed operator that presents itself to Krylov
solvers and preconditioners as a single ordinary distributed matrix (the
PSBLAS analogue of PETSc MATNEST), targeting saddle-point systems
M = [[A, B^T], [B, 0]] with possibly rectangular sub-blocks.

Library (base/modules):
- psb_desc_nest_mod, psb_d_nest_mat_mod: grid of per-field descriptors and
  per-block sparse storage.
- psb_d_nest_base_mat_mod: psb_d_nest_base_mat, the operator extending
  psb_d_base_sparse_mat (local csmv, free, field-split hooks for a future
  block preconditioner).
- psb_cd_nest_tools_mod / psb_d_nest_tools_mod: composed global descriptor
  with union halo (psb_cd_nest_compose) and rectangular local block builder
  (psb_d_nest_rect_block), plus the per-block assembly wrappers.
- psb_d_nest_builder_mod: psb_d_nest_matrix, the user frontend with the
  init/ins/asb/free pattern hiding all descriptor/halo/compose/setup
  boilerplate.
- psb_d_nest_mod: umbrella module (use psb_d_nest_mod).

Remove the earlier bespoke per-block prototype (comm/psblas/vect modules and
the pde_nest_psblas test) superseded by the single MATNEST design.

Tests (test/nested): glob (square operator vs monolithic CSR oracle), rect
(genuinely rectangular blocks), cg (low-level path, ill-conditioned SPD
red-black Laplacian solved with standard CG), builder (same solve via the
utility), plus a README describing the design and usage. All pass serially
and in parallel, with results invariant to the process count.

Build hooks updated (autotools Makefiles + CMakeLists); the nested tests are
relocated out of test/pdegen into test/nested.

Author: Simone Staccone (Stack-1)
2 weeks ago
jalmerol b8d41569fd Add double-precision nested block-structured matrix/vector layer 3 weeks ago
Stack-1 f725ccdeeb Merge branch 'development' into communication_v2
# Conflicts:
#	base/CMakeLists.txt
#	base/comm/internals/psi_cswapdata.F90
#	base/comm/internals/psi_dswapdata.F90
#	base/comm/internals/psi_iswapdata.F90
#	base/comm/internals/psi_lswapdata.F90
#	base/comm/internals/psi_sswapdata.F90
#	base/comm/internals/psi_zswapdata.F90
#	base/modules/Makefile
#	base/modules/comm/psb_i2_comm_mod.f90
#	base/modules/comm/psi_i2_comm_v_mod.f90
#	base/modules/serial/psb_i2_base_vect_mod.F90
#	test/computational_routines/spmm/spmm_checker
3 weeks ago
Stack-1 4b8e4dd4a3 [UPDATE] Refactor after template update for RMA routines 4 weeks ago
sfilippone 09308b5c7d various changes, including test matrix generators 2 months ago
sfilippone 19ce4a0942 Fix multivect assembly and comments in base_vect 2 months ago
Stack-1 6b803fd759 [UPDATE] Updated buffer reuse in psb_dcg 3 months ago
Stack-1 09a5a74d75 [ADD] Added polymorphic comm_handle data excahnge for non-blocking and persistant neighbor communication. Check test/comm/ to see how it's used. For now works only for d types 3 months ago
sfilippone a223c7eaf3 Rebuild I2 supprot 3 months ago
Stack-1 02f1ef741c [] 3 months ago
sfilippone c990dc6840 Fix info in %reinit 3 months ago
sfilippone ca458870b1 Fix intent in precbld to align with AMG 3 months ago
sfilippone d2fba9e952 Fix licensing text 3 months ago
Marco Feder 303edfedc7 Fix return value 3 months ago
Stack-1 e7e8a69373 [FIX] Fixed compilation for psi_dswapdata routine 3 months ago
sfilippone 356bdba5c7 Fix intent on base_vect%reinit 3 months ago
sfilippone e8c5c0b8b0 Add clear argument to reinit method in vectors. 3 months ago
sfilippone 96ab382ce8 Fix vect_clone and define check_addr 5 months ago
sfilippone 897d466013 Define DESC%check_addr for debugging 5 months ago
sfilippone ac5512974b Fix vector allocation etc. 5 months ago
sfilippone 3337a12e59 Fix multivect handling 5 months ago
sfilippone c1ca1665e7 Fixes to vector status and build processing for dealii 7 months ago
sfilippone 5333117010 Fix vect_clone, expose to C interface 7 months ago
sfilippone 0c84efb887 Working version with mods for building with dealii requests 8 months ago
sfilippone 98a6eba948 First round of changes for vector builds 8 months ago
sfilippone 0239569e2b Final fixes for compilation with INTEL 9 months ago
sfilippone dc25c789ef Fixes for Intel compilation take 2. To be completed. 9 months ago
sfilippone 727dc13a98 First attempt at a fix for INTEL 9 months ago
Salvatore Filippone cc8cab0e8a Workaround for strange ipk8 issue 1 year ago
sfilippone 07fa2323eb Fixes for IPK8 1 year ago
sfilippone ea6c4181f7 Changed all defines with prefix PSB_ 1 year ago
sfilippone 3c53066a04 Walk back some generic method changes made for NVHPC. 1 year ago
sfilippone 55518f5553 Avoid specific method names' conflicts between vect and multivect. 1 year ago
sfilippone 4e71fa971c Modify clean_zeros and have it only at base% 1 year ago
sfilippone ee56c6be3c Cosmetic changes to OpenACC vectors 2 years ago
sfilippone 8220140729 Merged recent changes from development 2 years ago
sfilippone 3168b7e8f7 Merge branch 'development' into oacc_loloum 2 years ago
sfilippone 7857015923 Cosmetic changes to vect_mod 2 years ago
sfilippone 2982aaee27 Implementation in OpenACC for ELL and HLL into templates. Merge from development 2 years ago
sfilippone 4461b44eda Change name abgdxyz into upd_xyz 2 years ago
sfilippone ba8c32c507 Define merge_nd method 2 years ago
sfilippone 373d841bce Don't need renaming of psi_gth and psi_sct 2 years ago
sfilippone 86be8ebcd0 New method W%XYZW() 2 years ago
Salvatore Filippone f4c7604f61 Fix base implementation of abgdxyz to call set_host 2 years ago
Salvatore Filippone b8f9badf95 Fix interface between vect and base_vect%ABGD 2 years ago
Salvatore Filippone 2a40b82b58 Fix typo in base_vect_mod 2 years ago
Salvatore Filippone 4e611bb078 Enable psi_abgdxyz 2 years ago
sfilippone 45f00e6e19 Fixed comments 2 years ago
Salvatore Filippone 14c4ff0f32 Added new methd for two combined axpbys 2 years ago