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

Communication scheme tests

This directory contains tests created after adding multiple communication schemes to PSBLAS.

The goal is to exercise and compare communication patterns at different layers:

  • direct halo exchange (psi_swapdata)
  • overlap exchange for transpose/SpMV workflows (psi_swaptran + psi_swapdata)
  • full Krylov solver runs (CG) using different comm schemes.

Communication schemes covered in this area:

  • psb_comm_isend_irecv_ (baseline point-to-point)
  • psb_comm_ineighbor_alltoallv_ (neighbor collective)
  • psb_comm_persistent_ineighbor_alltoallv_ (persistent neighbor collective)

See:

  • swapdata/ for a direct halo-exchange test.
  • spmv/ for an overlap SpMV test that uses different communication schemes.
  • cg/ for a conjugate-gradient solve-time comparison across the three schemes.