Commit Graph
537 Commits
Author SHA1 Message Date
jalmerol 0c93e0781b Fix nested matrix lifecycle and distributed preconditioning 2026-09-21 14:52:05 +02:00
jalmerol 157d5ea6ce Add block-diagonal PDE-control preconditioner 2026-07-15 14:50:59 +02:00
jalmerol 6004643a7b added SCHUR_SOLVE=SELFP / SELF option and stokes problem test
update for self/selfp
2026-07-03 12:19:55 +02:00
jalmerol 768c6764d3 move file to new location 2026-06-16 17:37:37 +02:00
jalmerol 606548e294 added field-split nested preconditioner with Schur and inner Krylov support 2026-06-16 17:31:13 +02:00
Stack-1 8bd49c43b1 [UPDATE] Convert the CG test to the builder API and drop the redundant builder test
Rewrite psb_d_nest_cg_test to build the operator through the psb_d_nest_matrix
utility (init/ins/asb + get_owned_rows) instead of the low-level path, so no
per-field descriptor or l2g idiom appears in user-facing test code; x_exact=1
is set with x%set(done) rather than an l2g loop.

With this change psb_d_nest_cg_test fully subsumes psb_d_nest_builder_test
(same operator via the same builder, NONE plus DIAG/BJAC), so the latter is
removed.  The test suite is now glob (square matvec), rect (rectangular
matvec) and cg (builder + preconditioned CG).  Build hooks and README updated.

Author: Simone Staccone (Stack-1)
2026-06-13 12:50:33 +02:00
Stack-1 fd60bb8d7f [UPDATE] User-friendly row queries on the nested matrix
Add get_owned_rows(i_field) and get_owned_row_count(i_field) to
psb_d_nest_matrix: the list of GLOBAL row indices of a field owned by the
calling process (i.e. the rows it is expected to insert through ins) and
their count.  They replace the descriptor-level idiom
field_desc(i)%get_local_rows() / field_desc(i)%l2g(...) in user code, which
leaked descriptor jargon into the build loop.

The high-level tests (glob, rect, builder) are rewritten on the new queries;
the low-level CG test intentionally keeps the descriptor path.  README updated
with the new queries and an example.

Author: Simone Staccone (Stack-1)
2026-06-12 20:24:06 +02:00
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)
2026-06-12 19:50:40 +02:00
Stack-1 5f659ffba2 [ADD] ignore test .log artifacts 2026-06-11 20:11:15 +02:00
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.
2026-06-11 18:22:03 +02:00
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_.
2026-06-11 18:07:28 +02:00
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)
2026-06-11 16:53:46 +02:00
fdurastante 3aceaa31eb Implementation of preconditioned MINRES 2026-06-08 15:31:00 +02:00
jalmerol b8d41569fd Add double-precision nested block-structured matrix/vector layer 2026-06-05 00:27:41 +02:00
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
2026-06-04 22:31:01 +02:00
Stack-1 2acfbe7e4a [FIX] Fixed threshold for spmm computational_routines test 2026-06-04 21:21:08 +02:00
Stack-1 e88e3d3008 [UPDATE] Added comm tests for all precisions and fixed spmm test in computational_routines 2026-06-03 11:47:15 +02:00
Stack-1 2c65c50593 [ADD] Added single point of comm_scheme selection on descriptor 2026-05-27 15:24:43 +02:00
Stack-1 29248d366f [UPDATE] Refactor after template update for RMA routines 2026-05-26 13:15:31 +02:00
Stack-1 d231efe35a [FIX] Modified spmv test to check overlap 2026-05-12 12:32:03 +02:00
sfilippone 014abc941c Fix matrix generation 2026-05-05 16:43:40 +02:00
sfilippone 09308b5c7d various changes, including test matrix generators 2026-05-05 15:49:13 +02:00
Stack-1 fb5ba59693 [ADD] Added RMA one sided communication schemes 2026-04-24 15:10:06 +02:00
Stack-1 52ad95461d [UPDATE] Updated communicationtest to read also external matrices 2026-04-23 14:43:23 +02:00
Stack-1 be6f27069a [UPDATE] Modified tests to supèport GPU SpMV computing, Moreover dinstinct routine for persistant is now present in psi_dswpadata 2026-04-21 14:56:47 +02:00
Stack-1 75d86864b0 [UPDATE] Minor changes to debug 2026-04-19 17:56:39 +02:00
Stack-1 fcae4a1633 [UPDATE] Transient version usefull for debug on local server 2026-04-19 00:11:45 +02:00
Stack-1 5ed9643fe6 [FIX] Fixed comm tests for single process, added guard on neighbor topology data exchange for single process run 2026-04-14 21:13:20 +02:00
Stack-1 6ba327854e [UPDATE] Changes in CG test, added debug 2026-04-13 22:23:31 +02:00
Stack-1 6b803fd759 [UPDATE] Updated buffer reuse in psb_dcg 2026-04-09 14:54:14 +02:00
Stack-1 33477e4f03 [UPDATE] Changed all the interfaces that calls psi_swapdata inside PSBLAS internals for double precision vectors. Added also tests under test/comm/ in order to check psi_swapdata, psb_spmv and psb_cg calls 2026-04-03 16:02:34 +02:00
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 2026-04-02 20:28:33 +02:00
Stack-1 02f1ef741c [] 2026-03-23 11:00:35 +01:00
Stack-1 461a6a325f [UPDATE] Removed work/aux buffer from vector routines that use psb_x_vect_type encapsulation for data exchange 2026-03-19 17:36:44 +01:00
sfilippone d2fba9e952 Fix licensing text 2026-03-18 14:49:55 +01:00
Stack-1 dc61cbb0a2 [UPDATE] Mid commit to fix dist_graph_create 2026-03-17 13:58:43 +01:00
sfilippone 897d466013 Define DESC%check_addr for debugging 2026-01-26 11:26:30 +01:00
sfilippone 9552bda6de Merge branch 'fix-build' into development 2026-01-09 12:05:25 +01:00
Salvatore Filippone f3fcd3a41a Improved error messaging for sample programs. 2025-12-17 14:10:13 +01:00
sfilippone 97665684e6 Fix CUDA library names and configry 2025-12-03 17:37:01 +01:00
sfilippone 339efde796 Changed library names and machinery for CUDA. 2025-12-03 17:35:03 +01:00
Luca Pepè Sciarria 4c27ffb760 Merge branch 'development' into cmake 2025-11-14 11:17:03 +01:00
sfilippone 0c84efb887 Working version with mods for building with dealii requests 2025-11-06 14:06:47 +01:00
sfilippone 98a6eba948 First round of changes for vector builds 2025-11-05 14:01:54 +01:00
sfilippone 8292608125 Refactor test/openacc 2025-10-31 14:33:50 +01:00
sfilippone 388b679d8a Fixed OpenACC test program mixed with CUDA 2025-10-28 11:31:00 +01:00
sfilippone b60fc25314 New OpenACC test and compile fix 2025-10-20 16:37:31 +02:00
sfilippone 246bd70b3a Modify sorting with REORD. Document same. 2025-10-08 12:55:23 +02:00
sfilippone 390144126c Fixes for compilation with CUDA 13.0 2025-09-25 13:35:30 +02:00
Luca Pepè Sciarria 4db11f9301 [ADD] CMake compilation for gedot test 2025-07-03 14:35:29 +02:00