Commit Graph

132 Commits (8e02a99a1153701873faaead3123a1a578c34969)

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 1244b640e0 [UPDATE] Merge communication_v2 into nested_matrix_type
Propagate the latest development (via communication_v2) onto the nested branch:
brings the GMRES refactor, the stopping-criterion change and the restored work
parameter on top of the nested (MATNEST) matrix support. Clean merge, no
conflicts.
2 weeks ago
Stack-1 7d4354feac Merge origin/development into communication_v2
Realign communication_v2 with the latest development (10 commits, including the
GMRES refactor and the stopping-criterion change), keeping the communication_v2
work intact.

Conflict resolution:
- base/modules/Makefile (veryclean): keep communication_v2's '/bin/rm -f *.h'.
- linsolve/impl/psb_{c,d,s,z}rgmres.f90: keep development's variable
  declaration (itmax_, naux), consistent with development's refactored GMRES
  body which references itmax_.
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
sfilippone 8254b66140 Overzealous make clean 2 weeks ago
sfilippone 847e638123 Fix detail in base/modules/makefile 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
Stack-1 fb5ba59693 [ADD] Added RMA one sided communication schemes 2 months ago
sfilippone 19ffaaa915 Update dependencies for i2_vect_mod 2 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
Salvatore Filippone 0a97ea2924 Fix makefile 3 months ago
Salvatore Filippone e717d2d228 Fix makefile dependencies 3 months ago
sfilippone a223c7eaf3 Rebuild I2 supprot 3 months ago
Salvatore Filippone eeeb450f0b Simplified build fix 3 months ago
sfilippone e1ab2bddf6 Fix import and build dependencies 3 months ago
Stack-1 02f1ef741c [] 3 months ago
Stack-1 e7e8a69373 [FIX] Fixed compilation for psi_dswapdata routine 3 months ago
sfilippone 43fcc53344 Final (hopefully) version of Makefile dependencies 7 months ago
sfilippone ef202e2cf7 Fix hash_map/timers dependency 1 year ago
sfilippone 243fe4e78f Split type definitions from psb_config 1 year ago
sfilippone 2b23f4bdc2 Mv fakempi to psb_fakempi.{c|h}. psb_c_base.h include psb_config.h 1 year ago
sfilippone e42dfbe4f7 Changes for --enable-serial 1 year ago
Salvatore Filippone 63fb828528 Fix Makefile for I2 2 years ago
sfilippone fa6b8d5e33 Enable I2 send/receive/collectives 2 years ago
sfilippone d82b090289 Fix makefile for psi_acx & friends 3 years ago
Salvatore Filippone 0d8a5d3dc2 New SPSPMM implementation 3 years ago
Salvatore Filippone d0cacda995 Moved various modules related to RB around, into auxil, update Makefile. 3 years ago
wlthr 0fe95c3c76 added use statement 3 years ago
wlthr 1af76c067c added parallel double precision spspmm implementations 3 years ago
Salvatore Filippone bcc85e47fd Fix Makefiles for parallel make 4 years ago
Salvatore Filippone db90270ea7 Fixes for remote_vect handling 4 years ago
Salvatore Filippone 336f7bf132 Defined non-blocking version of PSB_SUM. 4 years ago
Salvatore Filippone c58e523918 Embed GELP in PSI_SERIAL_IMPL 6 years ago
Salvatore Filippone 02b9ff5cfb Fix Makefile dependencies 6 years ago
Salvatore Filippone b376d226cb Fixed declaration and use of CONTEXT with new type. 6 years ago
Salvatore Filippone 2697fbe73a Started work on encapsulating CONTEXT. 6 years ago
Salvatore Filippone 86872d9939 Define psb_simple_a2av 7 years ago
Salvatore Filippone 4507a6522a New indxmap component for process adjacency list, setters/getters. 7 years ago
Salvatore Filippone 40204a7be6 Moved fnd_owner to internals impl. subdir 7 years ago
Salvatore Filippone 1d04fffbd4 Refactor map_fnd_owner, first step towards new version. 7 years ago
Salvatore Filippone 4366ac4948 Move psb_indx_map_fnd_owner in modules/desc subdir, update makefiles. 7 years ago
Salvatore Filippone b97bdf3d2e Added timers facility. 7 years ago
Salvatore Filippone e828a2a45a Additional constraints in makefile. 7 years ago
Salvatore Filippone 8d489f8ce2 Merged MixedI8 in new branch (to be later merged into development) 8 years ago
Salvatore Filippone d366da81f6 Renamed C hashval implementation. 8 years ago
Salvatore Filippone c7312ab54c Reimplemented hash function in C to avoid overflow trap. 8 years ago
Salvatore Filippone 3d347d31dc Ensure that the CNV method pick up the default storage format.
Populate the defaults at psb_init time.
8 years ago
Salvatore Filippone 077998c1bd psblas3:
.
 Make.inc.in
 base/comm/Makefile
 base/internals/Makefile
 base/internals/psi_exist_ovr_elem.f
 base/internals/psi_exist_ovr_elem.f90
 base/internals/psi_list_search.f
 base/internals/psi_list_search.f90
 base/internals/psi_srtlist.f90
 base/internals/srtlist.f
 base/modules/Makefile
 base/serial/Makefile
 base/serial/f77
 base/serial/f77/Makefile
 base/serial/f77/caxpby.f
 base/serial/f77/cnumbmm.f
 base/serial/f77/daxpby.f
 base/serial/f77/dnumbmm.f
 base/serial/f77/iaxpby.f
 base/serial/f77/saxpby.f
 base/serial/f77/snumbmm.f
 base/serial/f77/symbmm.f
 base/serial/f77/zaxpby.f
 base/serial/f77/znumbmm.f
 base/serial/psb_aspxpby.f90
 base/serial/psi_c_serial_impl.f90
 base/serial/psi_d_serial_impl.f90
 base/serial/psi_i_serial_impl.f90
 base/serial/psi_s_serial_impl.f90
 base/serial/psi_z_serial_impl.f90
 base/serial/smmp.f90
 base/tools/Makefile
 configure.ac
 configure
 prec/psb_d_bjacprec.f90
 prec/psb_d_diagprec.f90
 prec/psb_d_nullprec.f90
 test/fileread/Makefile
 test/hello/Makefile
 test/kernel/Makefile
 test/pargen/Makefile
 test/serial/Makefile
 test/torture/Makefile
 test/util/Makefile

Merged changes from fixprec branch.
9 years ago