Commit Graph

3334 Commits (communication_v2)
 

Author SHA1 Message Date
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
1 week ago
Stack-1 4106f44331 Merge branch 'nested_matrix_type' into communication_v2 2 weeks ago
Stack-1 5d07ed92aa [UPDATE] Restored work argument for non _vect routines in preconditioners 4 weeks ago
Stack-1 877058094a docs: linearize psblas-3.9.pdf for web viewing
GitHub's inline PDF viewer failed with 'Error loading PDF page number 1'.
Linearize the PDF (fast web view) so a streaming viewer can load page 1
before fetching the whole file. As a side effect qpdf recompresses the
streams (2.8M -> 0.68M). Fonts stay embedded (26/27; the remaining one is
a base-14 standard font), 188 pages, PDF 1.5.
4 weeks ago
Stack-1 c215f4f404 docs: fix GitHub rendering of internals and PDF
- communication.md: replace the Mermaid state diagram with a plain-text
  diagram (Mermaid showed 'Error rendering embedded code' on GitHub)
- regenerate psblas-3.9.pdf as PDF 1.5 (matching the previous build)
  instead of TeX Live 2026's default 1.7, which GitHub's viewer failed
  to load
4 weeks ago
Stack-1 dad4d3b894 docs: add developer guide internals layer
Introduce docs/internals/ as a two-layer complement to the user manual:
- README.md: index plus the user-manual vs developer-guide rationale
- communication.md: the psb_halo/psb_ovrl -> psi_swapdata dispatch path,
  the psb_comm_handle_type hierarchy and factory, the five MPI schemes
  (isend/irecv, neighbor alltoallv, persistent, RMA pull/push), and the
  start/wait/sync swap-status state machine
4 weeks ago
Stack-1 a140a1050c docs: document communication_v2 user-level flags and fix manual errors
- psb_halo: document tran and mode arguments; note work is array-only
- psb_ovrl: document mode argument
- add psb_comm_status_{sync,start,wait}_ to the Named Constants list
- fix psb_add_ -> psb_sum_ in the psb_ovrl update operator list
- remove duplicated psb_gather synopsis line
- drop spurious alpha from the psb_halo data-type table header
- regenerate psblas-3.9.pdf
4 weeks ago
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)
4 weeks ago
Stack-1 e1d759d019 [ADD] Generate the nested matrix support for s/c/z from the templates
Extend the nested (MATNEST) matrix support to all the arithmetics: the
psb_{s,c,z}_nest_{mat,base_mat,tools,builder}_mod modules and the
psb_{s,c,z}_nest_mod umbrellas are generated from the template-psblas
X_nest_* templates; the d sources are regenerated byte-identical.

Preparatory changes to the d sources for clean templating: rowsum/arwsum and
colsum/aclsum no longer share a helper (for the complex arithmetics the
absolute sums are real-valued while the plain sums are complex-valued), the
transposed kernel forwards the actual 'T'/'C' character to the blocks
(conjugate transpose for the complex types), and the capacity helper takes a
type-neutral name.

Build hooks (autotools Makefile and CMakeLists) updated with the per-arith
objects, compile rules and dependencies.  All four d tests keep passing.

Author: Simone Staccone (Stack-1)
1 month ago
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)
1 month ago
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)
1 month ago
Stack-1 026b1953c2 [FIX] Drop work= from MINRES vector calls after the development merge
The MINRES implementation merged from development calls the vector psb_spmm
and prec%apply with work=aux, but communication_v2 removed the work argument
from the vector interfaces.  Remove work=aux from psb_{c,d,s,z}minres so the
vector solvers match the communication_v2 interface; the library now builds.
1 month ago
Stack-1 5f659ffba2 [ADD] ignore test .log artifacts 1 month ago
Stack-1 732a74c928 [FIX] Drop work= from MINRES vector calls after the development merge
The MINRES implementation merged from development calls the vector psb_spmm
and prec%apply with work=aux, but communication_v2 removed the work argument
from the vector interfaces.  Remove work=aux from psb_{c,d,s,z}minres so the
vector solvers match the communication_v2 interface; the library builds and
the nested tests pass.
1 month 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.
1 month ago
Stack-1 a2c9238ba6 Merge origin/communication_v2 into communication_v2
Integrate the remote commit 67deef4e (restored work parameter in non-vect
implementations) before pushing; clean merge, no conflicts.
1 month 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_.
1 month 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)
1 month ago
sfilippone d7f3bf536d Cosmetic changes in cuda dir 1 month ago
sfilippone 8254b66140 Overzealous make clean 1 month ago
sfilippone 0688629612 Configry adjustments to sequencing PSBL_IPK 1 month ago
sfilippone 1c51cab1b5 Make desc_is_asb always a method 1 month ago
sfilippone 187a8c3051 Minor adjustments to configry 1 month ago
sfilippone 847e638123 Fix detail in base/modules/makefile 1 month ago
federicamontes 67deef4e97 restored work parameter in non-vect implementations 1 month ago
Fabio Durastante 3aceaa31eb Implementation of preconditioned MINRES 1 month ago
sfilippone 4a5acb014c Put mmio_impl into templates 1 month ago
sfilippone d7cb05f371 Define unrolling at 64 for HLL 1 month ago
sfilippone d99e759fd1 Change handling of stopping criterion, refactor GMRES 1 month ago
Stack-1 6bd7c32b58 Locate mpi.mod for OpenMPI in CMake build
The configure step only searched MPI_Fortran_INCLUDE_PATH for mpi.mod, which
is empty for OpenMPI (the wrapper carries includes internally and ships mpi.mod
under lib/). mpi.mod was thus never copied into the module dir, and the
mpi.mod.stamp rule failed on a clean build. Also probe the wrapper
(--showme:inc/libdirs) and lib/ + include/ relative to the Fortran MPI
compiler. MPICH (used in CI) is unaffected.
1 month ago
Stack-1 784c3cc0b4 Drop stale work argument from psb_d_nest_spsm
The nested layer was imported from an older base where the vector psb_spsm
still took a work buffer. communication_v2 removed work from the psb_x_vect_type
routines, so psb_dspsv_vect has no work argument and the call failed generic
resolution. Remove work from psb_d_nest_spsm (signature, declaration, call).
1 month ago
Stack-1 e45b1a04c4 Locate mpi.mod for OpenMPI in CMake build
The configure step only searched MPI_Fortran_INCLUDE_PATH for mpi.mod, which
is empty for OpenMPI (the wrapper carries includes internally and ships mpi.mod
under lib/). mpi.mod was thus never copied into the module dir, and the
mpi.mod.stamp rule failed on a clean build. Also probe the wrapper
(--showme:inc/libdirs) and lib/ + include/ relative to the Fortran MPI
compiler. MPICH (used in CI) is unaffected.
1 month ago
jalmerol b8d41569fd Add double-precision nested block-structured matrix/vector layer 1 month ago
Stack-1 164f393183 Add CMake build/ directory to .gitignore 1 month ago
Stack-1 027ca71a38 Fix CMake base source list for comm_schemes and psb_comm_mod
base/CMakeLists.txt listed only psb_comm_rma_mod.F90 from comm_schemes,
omitting psb_comm_schemes_mod, psb_comm_baseline_mod, psb_comm_neighbor_impl_mod
and psb_comm_factory_mod, so their .mod files were never generated under CMake.
Also psb_comm_mod was listed as .F90 while the file is .f90 (breaks on
case-sensitive filesystems). The autotools Makefile was already correct.
1 month 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
1 month ago
Stack-1 2acfbe7e4a [FIX] Fixed threshold for spmm computational_routines test 1 month ago
Stack-1 e88e3d3008 [UPDATE] Added comm tests for all precisions and fixed spmm test in computational_routines 1 month ago
Stack-1 2c65c50593 [ADD] Added single point of comm_scheme selection on descriptor 2 months ago
Stack-1 29248d366f [UPDATE] Refactor after template update for RMA routines 2 months ago
Stack-1 4b8e4dd4a3 [UPDATE] Refactor after template update for RMA routines 2 months ago
Stack-1 d231efe35a [FIX] Modified spmv test to check overlap 2 months ago
sfilippone 014abc941c Fix matrix generation 2 months 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
sfilippone 1cb7634d1f Fix GEMIN 2 months ago
sfilippone 586cafae49 New PrintSolverOptions in CBIND 3 months ago
Stack-1 fb5ba59693 [ADD] Added RMA one sided communication schemes 3 months ago
Stack-1 52ad95461d [UPDATE] Updated communicationtest to read also external matrices 3 months ago
Stack-1 be6f27069a [UPDATE] Modified tests to supèport GPU SpMV computing, Moreover dinstinct routine for persistant is now present in psi_dswpadata 3 months ago