Commit Graph
534 Commits
Author SHA1 Message Date
Stack-1 84d22c8429 [ADD] Build and run the per-type comm test drivers
The four drivers the template generates in each of test/comm/{swapdata,
cg,spmv} were copied into the tree but appeared in no make rule, so they
were never compiled and never run. Only the generic double-precision
driver was built. That is why the complex halo exchange could stay broken
without anyone noticing.

Each Makefile now builds the four typed executables alongside the generic
one, which is kept: psb_spmv_kernel and psb_comm_cg_test are referenced by
the sbatch scripts. clean covers the new objects and executables, and
there are run/run-typed targets with NP and IDIM as before.

In cg and spmv the typed drivers are built CPU-only, without
-DPSB_HAVE_CUDA and without libpsb_cuda. The CUDA layer has no complex
support upstream: psb_?_cuda_vect_mod declares an external cdot/zdot,
which are not BLAS symbols (the complex dots are cdotc/cdotu), and
cuda/Makefile never compiles the c/z hdiag modules. Both are present in
development too, so this is not something the branch introduced. Building
all four the same way also keeps the cross-type comparison honest.

For the two types the CUDA layer does support, 'make gpu' builds
psb_{s,d}_*_gpu variants from the same sources with the CUDA defines and
libraries, into separate objects so switching between the two does not
force a full rebuild; 'make both' does both. The spmv drivers declare a
module, so the GPU build writes its module files to gpumod/ to avoid the
two variants overwriting each other.
2026-08-08 15:02:35 +02:00
Stack-1 87eca22895 [WIP] RMA swapdata optimization, nest builder updates, GPU/scorep test tooling
- psi_dswapdata / psb_comm_rma: RMA swapdata optimization (PSCW + Win_allocate)
- psb_d_nest_builder: builder updates
- cuda: Makefile + psb_d_cuda_vect_mod adjustments
- test/comm: spmv/cg drivers, Makefiles, GPU + scorep/strong-scaling scripts
- test/nested: halo-regime test + Makefile/CMake updates
2026-07-05 15:01:43 +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
Luca Pepè Sciarria 17c920188f [ADD] CMake compilation for geaxpby test 2025-07-03 14:32:35 +02:00
Luca Pepè Sciarria e64f78418e [ADD] CMake compilation for spmm test 2025-07-03 14:24:13 +02:00
Luca Pepè Sciarria c47e691d44 Merge branch 'test_dev' into cmake 2025-07-03 11:17:25 +02:00