[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)
This commit is contained in:
Stack-1
2026-06-13 01:58:38 +02:00
parent fd60bb8d7f
commit e1d759d019
19 changed files with 6722 additions and 58 deletions
+72 -6
View File
@@ -84,7 +84,10 @@ SERIAL_MODS=serial/psb_s_serial_mod.o serial/psb_d_serial_mod.o \
serial/psb_d_base_mat_mod.o serial/psb_d_csr_mat_mod.o serial/psb_d_csc_mat_mod.o serial/psb_d_mat_mod.o \
serial/psb_c_base_mat_mod.o serial/psb_c_csr_mat_mod.o serial/psb_c_csc_mat_mod.o serial/psb_c_mat_mod.o \
serial/psb_z_base_mat_mod.o serial/psb_z_csr_mat_mod.o serial/psb_z_csc_mat_mod.o serial/psb_z_mat_mod.o \
serial/psb_d_nest_mat_mod.o serial/psb_d_nest_base_mat_mod.o
serial/psb_s_nest_mat_mod.o serial/psb_s_nest_base_mat_mod.o \
serial/psb_d_nest_mat_mod.o serial/psb_d_nest_base_mat_mod.o \
serial/psb_c_nest_mat_mod.o serial/psb_c_nest_base_mat_mod.o \
serial/psb_z_nest_mat_mod.o serial/psb_z_nest_base_mat_mod.o
#\
# serial/psb_ls_csr_mat_mod.o serial/psb_ld_csr_mat_mod.o serial/psb_lc_csr_mat_mod.o serial/psb_lz_csr_mat_mod.o
#\
@@ -98,8 +101,10 @@ UTIL_MODS = desc/psb_desc_const_mod.o desc/psb_indx_map_mod.o\
tools/psb_cd_nest_tools_mod.o \
tools/psb_i_tools_mod.o tools/psb_l_tools_mod.o \
tools/psb_s_tools_mod.o tools/psb_d_tools_mod.o\
tools/psb_d_nest_tools_mod.o \
tools/psb_d_nest_builder_mod.o \
tools/psb_s_nest_tools_mod.o tools/psb_d_nest_tools_mod.o \
tools/psb_c_nest_tools_mod.o tools/psb_z_nest_tools_mod.o \
tools/psb_s_nest_builder_mod.o tools/psb_d_nest_builder_mod.o \
tools/psb_c_nest_builder_mod.o tools/psb_z_nest_builder_mod.o \
tools/psb_c_tools_mod.o tools/psb_z_tools_mod.o \
tools/psb_i2_tools_a_mod.o tools/psb_m_tools_a_mod.o tools/psb_e_tools_a_mod.o \
tools/psb_s_tools_a_mod.o tools/psb_d_tools_a_mod.o\
@@ -133,7 +138,7 @@ UTIL_MODS = desc/psb_desc_const_mod.o desc/psb_indx_map_mod.o\
MODULES=$(BASIC_MODS) $(SERIAL_MODS) $(UTIL_MODS)
OBJS = error.o psb_base_mod.o psb_d_nest_mod.o $(EXTRA_COBJS) cutil.o
OBJS = error.o psb_base_mod.o psb_s_nest_mod.o psb_d_nest_mod.o psb_c_nest_mod.o psb_z_nest_mod.o $(EXTRA_COBJS) cutil.o
MODDIR=../../modules
INCDIR=../../include
LIBDIR=../
@@ -418,7 +423,9 @@ comm/psi_s_comm_a_mod.o comm/psi_d_comm_a_mod.o \
comm/psi_c_comm_a_mod.o comm/psi_z_comm_a_mod.o: desc/psb_desc_mod.o
tools/psb_tools_mod.o: tools/psb_cd_tools_mod.o tools/psb_s_tools_mod.o tools/psb_d_tools_mod.o\
tools/psb_cd_nest_tools_mod.o tools/psb_d_nest_tools_mod.o \
tools/psb_cd_nest_tools_mod.o \
tools/psb_s_nest_tools_mod.o tools/psb_d_nest_tools_mod.o \
tools/psb_c_nest_tools_mod.o tools/psb_z_nest_tools_mod.o \
tools/psb_i_tools_mod.o tools/psb_l_tools_mod.o \
tools/psb_c_tools_mod.o tools/psb_z_tools_mod.o \
tools/psb_i2_tools_a_mod.o tools/psb_m_tools_a_mod.o tools/psb_e_tools_a_mod.o \
@@ -433,10 +440,39 @@ tools/psb_d_nest_tools_mod.o: tools/psb_d_nest_tools_mod.F90 tools/psb_d_tools_m
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_d_nest_tools_mod.F90 -o tools/psb_d_nest_tools_mod.o
tools/psb_d_nest_builder_mod.o: tools/psb_d_nest_builder_mod.F90 tools/psb_cd_tools_mod.o \
tools/psb_cd_nest_tools_mod.o tools/psb_d_nest_tools_mod.o \
tools/psb_cd_nest_tools_mod.o \
tools/psb_s_nest_tools_mod.o tools/psb_d_nest_tools_mod.o \
tools/psb_c_nest_tools_mod.o tools/psb_z_nest_tools_mod.o \
serial/psb_d_nest_base_mat_mod.o serial/psb_d_nest_mat_mod.o desc/psb_desc_nest_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_d_nest_builder_mod.F90 -o tools/psb_d_nest_builder_mod.o
tools/psb_s_nest_tools_mod.o: tools/psb_s_nest_tools_mod.F90 tools/psb_s_tools_mod.o \
desc/psb_desc_nest_mod.o serial/psb_s_nest_mat_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_s_nest_tools_mod.F90 -o tools/psb_s_nest_tools_mod.o
tools/psb_s_nest_builder_mod.o: tools/psb_s_nest_builder_mod.F90 tools/psb_cd_tools_mod.o \
tools/psb_cd_nest_tools_mod.o tools/psb_s_nest_tools_mod.o \
serial/psb_s_nest_base_mat_mod.o serial/psb_s_nest_mat_mod.o desc/psb_desc_nest_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_s_nest_builder_mod.F90 -o tools/psb_s_nest_builder_mod.o
tools/psb_c_nest_tools_mod.o: tools/psb_c_nest_tools_mod.F90 tools/psb_c_tools_mod.o \
desc/psb_desc_nest_mod.o serial/psb_c_nest_mat_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_c_nest_tools_mod.F90 -o tools/psb_c_nest_tools_mod.o
tools/psb_c_nest_builder_mod.o: tools/psb_c_nest_builder_mod.F90 tools/psb_cd_tools_mod.o \
tools/psb_cd_nest_tools_mod.o tools/psb_c_nest_tools_mod.o \
serial/psb_c_nest_base_mat_mod.o serial/psb_c_nest_mat_mod.o desc/psb_desc_nest_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_c_nest_builder_mod.F90 -o tools/psb_c_nest_builder_mod.o
tools/psb_z_nest_tools_mod.o: tools/psb_z_nest_tools_mod.F90 tools/psb_z_tools_mod.o \
desc/psb_desc_nest_mod.o serial/psb_z_nest_mat_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_z_nest_tools_mod.F90 -o tools/psb_z_nest_tools_mod.o
tools/psb_z_nest_builder_mod.o: tools/psb_z_nest_builder_mod.F90 tools/psb_cd_tools_mod.o \
tools/psb_cd_nest_tools_mod.o tools/psb_z_nest_tools_mod.o \
serial/psb_z_nest_base_mat_mod.o serial/psb_z_nest_mat_mod.o desc/psb_desc_nest_mod.o
$(FC) $(FCOPT) $(FINCLUDES) $(FDEFINES) -c tools/psb_z_nest_builder_mod.F90 -o tools/psb_z_nest_builder_mod.o
tools/psb_cd_tools_mod.o tools/psb_i_tools_mod.o tools/psb_l_tools_mod.o \
tools/psb_s_tools_mod.o tools/psb_d_tools_mod.o \
tools/psb_c_tools_mod.o tools/psb_z_tools_mod.o \
@@ -459,6 +495,36 @@ psblas/psb_psblas_mod.o: psblas/psb_s_psblas_mod.o psblas/psb_c_psblas_mod.o ps
psblas/psb_s_psblas_mod.o psblas/psb_c_psblas_mod.o psblas/psb_d_psblas_mod.o psblas/psb_z_psblas_mod.o: serial/psb_mat_mod.o desc/psb_desc_mod.o
# --- nested mat/desc dependencies (MATNEST) ---
serial/psb_s_nest_mat_mod.o: serial/psb_s_mat_mod.o
serial/psb_s_nest_base_mat_mod.o: serial/psb_s_nest_mat_mod.o desc/psb_desc_nest_mod.o serial/psb_s_base_mat_mod.o serial/psb_s_mat_mod.o desc/psb_desc_mod.o \
serial/psb_i_vect_mod.o serial/psb_s_base_vect_mod.o
psb_s_nest_mod.o: \
desc/psb_desc_nest_mod.o \
serial/psb_s_nest_mat_mod.o \
serial/psb_s_nest_base_mat_mod.o \
tools/psb_cd_nest_tools_mod.o \
tools/psb_s_nest_tools_mod.o \
tools/psb_s_nest_builder_mod.o
serial/psb_c_nest_mat_mod.o: serial/psb_c_mat_mod.o
serial/psb_c_nest_base_mat_mod.o: serial/psb_c_nest_mat_mod.o desc/psb_desc_nest_mod.o serial/psb_c_base_mat_mod.o serial/psb_c_mat_mod.o desc/psb_desc_mod.o \
serial/psb_i_vect_mod.o serial/psb_c_base_vect_mod.o
psb_c_nest_mod.o: \
desc/psb_desc_nest_mod.o \
serial/psb_c_nest_mat_mod.o \
serial/psb_c_nest_base_mat_mod.o \
tools/psb_cd_nest_tools_mod.o \
tools/psb_c_nest_tools_mod.o \
tools/psb_c_nest_builder_mod.o
serial/psb_z_nest_mat_mod.o: serial/psb_z_mat_mod.o
serial/psb_z_nest_base_mat_mod.o: serial/psb_z_nest_mat_mod.o desc/psb_desc_nest_mod.o serial/psb_z_base_mat_mod.o serial/psb_z_mat_mod.o desc/psb_desc_mod.o \
serial/psb_i_vect_mod.o serial/psb_z_base_vect_mod.o
psb_z_nest_mod.o: \
desc/psb_desc_nest_mod.o \
serial/psb_z_nest_mat_mod.o \
serial/psb_z_nest_base_mat_mod.o \
tools/psb_cd_nest_tools_mod.o \
tools/psb_z_nest_tools_mod.o \
tools/psb_z_nest_builder_mod.o
desc/psb_desc_nest_mod.o: desc/psb_desc_mod.o
serial/psb_d_nest_mat_mod.o: serial/psb_d_mat_mod.o
serial/psb_d_nest_base_mat_mod.o: serial/psb_d_nest_mat_mod.o desc/psb_desc_nest_mod.o serial/psb_d_base_mat_mod.o serial/psb_d_mat_mod.o desc/psb_desc_mod.o \