Files
psblas3/test/comm/spmv
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
..

spmv overlap communication test

This test was added after introducing different communication schemes in PSBLAS.

It exercises the overlapped SpMV communication path inside psb_spmm.

Communication pattern:

  • split exchange/computation flow (start + local compute + wait)
  • halo/overlap update through internal swap routines used by SpMV kernels
  • same matrix/vector workload repeated across schemes for timing comparison

Communication schemes compared:

  • psb_comm_isend_irecv_
  • psb_comm_ineighbor_alltoallv_
  • psb_comm_persistent_ineighbor_alltoallv_

Unlike swapdata/, which checks direct halo exchange, this test covers the overlapped SpMV workflow.

Run options

  • Default PDE-generated matrix: ./runs/psb_spmv_kernel [--gpu=TRUE|FALSE] [--nooverlap]
  • External matrix: ./runs/psb_spmv_kernel [--gpu=TRUE|FALSE] --matrix=<path> [--fmt=MM|HB] [--nooverlap]

The overlap path is enabled by default; pass --nooverlap to force the non-overlapped halo-update path.

When --matrix is provided, the benchmark reads and distributes that matrix instead of generating the 3D PDE test matrix.