[UPDATE] Automated the excecution of tests in psb_geaxpby kernel. Now both single process and mulitple processes tests are excecuted thanks to the autotest.sh script

test_dev
Stack-1 11 months ago
parent c556d729cd
commit 0801b00d56

@ -1,5 +1,5 @@
# Computational Routines Test
This is a directory containing all the tests done in order to analyze the correctness of the computational routines present in PSBLAS.
This is a directory containing all the tests done in order to analyze the correctness of the computational routines present in PSBLAS [[3]](#psblas).
## Test Environment
These tests are developed using a linux environment, in particular Rocky Linux 9.5 (Blue Onyx).
@ -12,23 +12,36 @@ The necessary dependnces are:
- PSBLAS 3.9
- CUDA 12.5
## Test Approach
In order to check wheter each kernel computation is correct or not, it was taken into account a simple approach resported in [[1]](#testing): the kernels are excecuted both in single $y_{s}$ and double precision $y_{d}$. The difference between the two results $\Delta y$ should not exceed the machine epsilon of the single precision floating point representation. This quantity is identified as the unit roundoff $u$. In this the IEEE floating point representation we have $$u = 2^-24 \approx 5.96 \cdot 10^{-8}$$ and therefore $$\Delta y = y_d - y_s \leq u$$ as stated in Highman in his book [[2]](#accuracy). It is also important to note that $\Delta y$ is a double precision floating point number, since it should be able to detect an higher precision with respect to a single precision representation.
## Routines
In this test suite were considered only computational routines implemented by PSBLAS, according to the version 3.9 of the documentation. In the following table are reported all the kernels, their implementation and wheter or not they were tested yet.
|**Kernel**| **PSBLAS Subroutine**|**Description**|**Test**|
| ------------------------------- | :--------------------------: | ---------------------------------------------------------------------- | :---------------: |
|**General Dense Matrix Sum**| `psb_geaxpby`| This subroutine is an interface to the computational kernel for dense matrix sum: $$Y \leftarrow \alpha X + \beta Y $$|Work in progress :hammer_and_wrench:|
| **Dot product**|`psb_gedot`|This function computes dot product between two vectors x and y. $$ dot \leftarrow x^T y $$ If x and y are real vectors it computes dot-product as: $$ dot \leftarrow x^H y $$|No ❌|
| **Generalized Dot Product** |`psb_gedots`|This subroutine computes a series of dot products among the columns of two dense matrices x and y: $$ res(i) \leftarrow x(:,i)^T y(:,i) $$ If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.|No ❌|
|**Infinity-Norm of Vector**|`psb_normi`/`psb_geamax`|This function computes the infinity-norm of a vector x. If x is a real vector it computes infinity norm as: $$ amax \leftarrow max \mid x_i \mid $$ else if x is a complex vector then it computes the infinity-norm as: $$ amax \leftarrow max(\mid re(x_i) \mid + \mid im(x_i) \mid)$$|No ❌|
|**Generalized Infinity Norm**|`psb_geamaxs`|This subroutine computes a series of infinity norms on the columns of a dense matrix x: $$ res(i) \leftarrow max_k \mid x(k,i) \mid $$| No ❌ |
| **1-Norm of Vector**| `psb_norm1` / `psb_geasums`|This function computes the 1-norm of a vector x. If x is a real vector it computes 1-norm as: $$ asum \leftarrow \mid \mid x_i \mid \mid $$ else if x is a complex vector then it computes 1-norm as: $$ asum \leftarrow \mid \mid re(x) \mid \mid_1 + \mid \mid im(x) \mid \mid_1 $$ |No ❌|
|**Generalized 1-Norm of Vector**|`psb_geasums`|This subroutine computes a series of 1-norms on the columns of a dense matrix x: $$ res(i) \leftarrow max_k \mid x(k,i) \mid $$ This function computes the 1-norm of a vector x. If x is a real vector it computes 1-norm as: $$ res(i) \leftarrow \mid \mid x_i \mid \mid $$ else if x is a complex vector then it computes 1-norm as: $$ res(i) \leftarrow \mid \mid re(x) \mid \mid_\ + \mid \mid im(x) \mid \mid_1 $$ |No ❌|
| **2-Norm of Vector**|`psb_norm2` / `psb_genrm2`| This function computes the 2-norm of a vector x. If x is a real vector it computes 2-norm as: $$ nrm2 \leftarrow \sqrt{x^T x}$$ else if x is a complex vector then it computes 2-norm as: $$ nrm2 \leftarrow \sqrt{x^H x}$$|No ❌|
|**Generalized 2-Norm of Vector**|`psb_genrm2s` / `psb_spnrm1` |This subroutine computes a series of 2-norms on the columns of a dense matrix x: $$ res(i) \leftarrow \mid \mid x(:,i) \mid \mid_2 $$|No ❌|
|**1-Norm of Sparse Matrix**|`psb_norm1`|This function computes the 1-norm of a matrix A: $$ nrm1 \leftarrow \mid \mid A \mid \mid_1 $$ where A represents the global matrix A|No ❌|
|**Infinity Norm of Sparse Matrix**|`psb_normi` / `psb_spnrmi`|This function computes the infinity-norm of a matrix A: $$ nrmi \leftarrow \mid \mid A \mid \mid_{\infty}$$ where: A represents the global matrix A|No ❌|
|**Sparse Matrix by Dense Matrix Product**| `psb_spmm`|This subroutine computes the Sparse Matrix by Dense Matrix Product: $$ y \leftarrow \alpha A x + \beta y$$ $$ y \leftarrow \alpha A^T x + \beta y$$ $$ y \leftarrow \alpha A^H x + \beta y$$ where: <br> x is the global dense matrix x_{:,:} <br> y is the global dense matrix y_{:,:} <br> A is the global sparse matrix A|Work in progress ✅|
|**Triangular System Solve**|`psb_spsm`|This subroutine computes the Triangular System Solve: $$ y \leftarrow \alpha T^{-1} x + \beta y $$ $$ y \leftarrow \alpha D^{-1} x + \beta y $$ $$ y \leftarrow \alpha T^{-1} D x + \beta y $$ $$ y \leftarrow \alpha T^{-T} x + \beta y $$ $$ y \leftarrow \alpha D T^{-T} x + \beta y $$ $$ y \leftarrow \alpha T^{-T} D x + \beta y $$ $$ y \leftarrow \alpha T^{-H} x + \beta y $$ $$ y \leftarrow \alpha D T^{-H} x + \beta y $$ $$ y \leftarrow \alpha T^{-H} D x + \beta y $$ where: <br> x is the global dense matrix x_{:,:} <br> y is the global dense matrix y_{:,:} <br> T is the global sparse block triangular submatrix T <br> D is the scaling diagonal matrix|No ❌|
|**Entrywise Product**|`psb_gemlt`|This function computes the entrywise product between two vectors x and y $$ dot \leftarrow x(i)y(i)$$|No ❌|
|**Entrywise Division**|`psb_gediv`|This function computes the entrywise division between two vectors x and y $$ div \leftarrow \frac{x(i)}{y(i)}$$|No ❌|
|**Entrywise Inversion**|`psb_geinv`|This function computes the entrywise inverse of a vector x and puts it into y $$ inv \leftarrow \frac{1}{x(i)}$$|No ❌|
|**General Dense Matrix Sum**| `psb_geaxpby`| This subroutine is an interface to the computational kernel for dense matrix sum:$$Y \leftarrow \alpha X + \beta Y$$|Yes ✅|
| **Dot product**|`psb_gedot`|This function computes dot product between two vectors x and y.$$dot \leftarrow x^T y$$If x and y are real vectors it computes dot-product as:$$dot \leftarrow x^H y$$|No ❌|
| **Generalized Dot Product** |`psb_gedots`|This subroutine computes a series of dot products among the columns of two dense matrices x and y:$$res(i) \leftarrow x(:,i)^T y(:,i)$$If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.|No ❌|
|**Infinity-Norm of Vector**|`psb_normi`/`psb_geamax`|This function computes the infinity-norm of a vector x. If x is a real vector it computes infinity norm as:$$amax \leftarrow max \mid x_i \mid$$else if x is a complex vector then it computes the infinity-norm as:$$amax \leftarrow max(\mid re(x_i) \mid + \mid im(x_i) \mid)$$|No ❌|
|**Generalized Infinity Norm**|`psb_geamaxs`|This subroutine computes a series of infinity norms on the columns of a dense matrix x:$$res(i) \leftarrow max_k \mid x(k,i) \mid$$| No ❌ |
| **1-Norm of Vector**| `psb_norm1` / `psb_geasums`|This function computes the 1-norm of a vector x. If x is a real vector it computes 1-norm as:$$asum \leftarrow \mid \mid x_i \mid \mid$$else if x is a complex vector then it computes 1-norm as:$$asum \leftarrow \mid \mid re(x) \mid \mid_1 + \mid \mid im(x) \mid \mid_1$$|No ❌|
|**Generalized 1-Norm of Vector**|`psb_geasums`|This subroutine computes a series of 1-norms on the columns of a dense matrix x:$$res(i) \leftarrow max_k \mid x(k,i) \mid$$This function computes the 1-norm of a vector x. If x is a real vector it computes 1-norm as:$$res(i) \leftarrow \mid \mid x_i \mid \mid$$else if x is a complex vector then it computes 1-norm as:$$res(i) \leftarrow \mid \mid re(x) \mid \mid_\ + \mid \mid im(x) \mid \mid_1$$|No ❌|
| **2-Norm of Vector**|`psb_norm2` / `psb_genrm2`| This function computes the 2-norm of a vector x. If x is a real vector it computes 2-norm as:$$nrm2 \leftarrow \sqrt{x^T x}$$else if x is a complex vector then it computes 2-norm as:$$nrm2 \leftarrow \sqrt{x^H x}$$|No ❌|
|**Generalized 2-Norm of Vector**|`psb_genrm2s` / `psb_spnrm1` |This subroutine computes a series of 2-norms on the columns of a dense matrix x:$$res(i) \leftarrow \mid \mid x(:,i) \mid \mid_2$$|No ❌|
|**1-Norm of Sparse Matrix**|`psb_norm1`|This function computes the 1-norm of a matrix A:$$nrm1 \leftarrow \mid \mid A \mid \mid_1$$where A represents the global matrix A|No ❌|
|**Infinity Norm of Sparse Matrix**|`psb_normi` / `psb_spnrmi`|This function computes the infinity-norm of a matrix A:$$nrmi \leftarrow \mid \mid A \mid \mid_{\infty}$$where: A represents the global matrix A|No ❌|
|**Sparse Matrix by Dense Matrix Product**| `psb_spmm`|This subroutine computes the Sparse Matrix by Dense Matrix Product:$$y \leftarrow \alpha A x + \beta y$$$$y \leftarrow \alpha A^T x + \beta y$$$$y \leftarrow \alpha A^H x + \beta y$$where: <br> x is the global dense matrix x_{:,:} <br> y is the global dense matrix y_{:,:} <br> A is the global sparse matrix A|Work in progress :hammer_and_wrench:|
|**Triangular System Solve**|`psb_spsm`|This subroutine computes the Triangular System Solve:$$y \leftarrow \alpha T^{-1} x + \beta y$$$$y \leftarrow \alpha D^{-1} x + \beta y$$$$y \leftarrow \alpha T^{-1} D x + \beta y$$$$y \leftarrow \alpha T^{-T} x + \beta y$$$$y \leftarrow \alpha D T^{-T} x + \beta y$$$$y \leftarrow \alpha T^{-T} D x + \beta y$$$$y \leftarrow \alpha T^{-H} x + \beta y$$$$y \leftarrow \alpha D T^{-H} x + \beta y$$$$y \leftarrow \alpha T^{-H} D x + \beta y$$where: <br> x is the global dense matrix x_{:,:} <br> y is the global dense matrix y_{:,:} <br> T is the global sparse block triangular submatrix T <br> D is the scaling diagonal matrix|No ❌|
|**Entrywise Product**|`psb_gemlt`|This function computes the entrywise product between two vectors x and y$$dot \leftarrow x(i)y(i)$$|No ❌|
|**Entrywise Division**|`psb_gediv`|This function computes the entrywise division between two vectors x and y$$div \leftarrow \frac{x(i)}{y(i)}$$|No ❌|
|**Entrywise Inversion**|`psb_geinv`|This function computes the entrywise inverse of a vector x and puts it into y$$inv \leftarrow \frac{1}{x(i)}$$|No ❌|
## References
<a id="testing">[1].</a> Higham, Nicholas J. Testing linear algebra software. Springer US, 1997
<a id="accuracy">[2].</a> Higham, Nicholas J. Accuracy and stability of numerical algorithms. Society for industrial and applied mathematics, 2002.
<a id="psblas">[3],</a> Filippone, Salvatore, and Michele Colajanni. "PSBLAS: A library for parallel linear algebra computation on sparse matrices." ACM Transactions on Mathematical Software (TOMS) 26.4 (2000): 527-550.
## TODO
- Make all kernel excecution centralized merging the output logs

@ -22,17 +22,28 @@ END_COLOUR=\033[0m
all: runsd psb_geaxpby_test
@printf "$(GREEN)[INFO]\tCompilation success!$(END_COLOUR)\n"
@printf "$(GREEN)[INFO]\t Compilation success!$(END_COLOUR)\n"
check_changes:
@echo "Checking for changes..."
@if [ "$(find . -name '*.f90' -o -name '*.h' -o -name '*.c' -newer build)" ]; then \
echo "Changes detected. Running make..."; \
$(MAKE) build; \
else \
echo "No changes detected."; \
fi
runsd:
@(if test ! -d runs ; then mkdir runs; fi)
@printf "$(BLUE)[INFO]\tBuild directory $(EXEDIR) correctly initialized$(END_COLOUR)\n"
@printf "$(BLUE)[INFO]\t Build directory $(EXEDIR) correctly initialized$(END_COLOUR)\n"
psb_geaxpby_test:
@$(FLINK) $(LOPT) psb_geaxpby_test.f90 geaxpby.f90 -o psb_geaxpby_test -I$(MODDIR) -I. $(PSBLAS_LIB) $(LDLIBS)
@mv psb_geaxpby_test $(EXEDIR)
@printf "$(BLUE)[INFO]\tTesting files generated correctly$(END_COLOUR)\n"
@printf "$(BLUE)[INFO]\t Testing files generated correctly$(END_COLOUR)\n"
clean:
@rm -f $(OBJS)\

@ -4,6 +4,56 @@ This is a directory developed by Luca Pepè Sciarria and Simone Staccone froma T
## Getting started
Steps to reproduce the tests:
- Compile the code using ``` make ```
- Launch the script autotest.sh (Still not done)
- Check the output log file psblas_geaxpby_test.log to collect results
- Compile the code using ``` make ``` (Optional)
- Launch the script ./autotest.sh or with source ./autotest.sh if you want to add modules to the .bashrc file permenently.
- Check the output log file psblas_geaxpby_test.log to collect results
NOTE: If the code is changed and a new compilation is needed to show the changes, the autotest.sh script isn't aware of this scenario, therefore it is necessary to manually recompile the code.
## Test Suite
### Overall Analysys
The ```psb_geaxpby```. The signature of the function is:
```fortran
call psb_geaxpby(alpha, x, beta, y, desc_a, info)
```
### Parameters Values
**x** vectors are located in the vectors/ directory. They are generated randomly using the same seed and then saved on different files based on their characteristics. The size of the vector is choosen accordingly to the size of the matrix column space considered for the single test instance.
|Vector|File Name|Coefficients|Coefficients Description|
|:-:|:-:|:-:|:-:|
|$x_1$|x1.txt|$x_i> 0, \forall i$|Positive coefficients|
|$x_2$|x2.txt|$x_i < 0, \forall i$|Negative coefficients
|$x_3$|x3.txt|$x_i \ne 0, \forall i$|Random coefficients
|$x_4$|x4.txt|$x_i = 0, \forall i$|Null coefficients
**y** vectors are located in the vectors/ directory. They are generated randomly using the same seed and then saved on different files based on their characteristics. The size of the vector is choosen accordingly to the size of the matrix rows space considered for the single test instance.
|Vector|File Name|Coefficients|Coefficients Description|
|:-:|:-:|:-:|:-:|
|$y_1$|y1.txt|$y_i> 0, \forall i$|Positive coefficients|
|$y_2$|y2.txt|$y_i < 0, \forall i$|Negative coefficients
|$y_3$|y3.txt|$y_i \ne 0, \forall i$|Random coefficients
|$y_4$|y4.txt|$y_i = 0, \forall i$|Null coefficients
**$\alpha$**
|$\alpha$|Value|Coefficients Description|
|:-:|:-:|:-:|
|$\alpha_1$|1.0|Positive value|
|$\alpha_2$|-1.0|Negative value|
|$\alpha_3$|0.0|Null value|
**$\beta$**
|$\alpha$|Value|Coefficients Description|
|:-:|:-:|:-:|
|$\beta_1$|1.0|Positive value|
|$\beta_2$|-1.0|Negative value|
|$\beta_3$|0.0|Null value|
## Output
The ouput files generated by the test are automatically compared by the autotest.sh script, but if it is needed to manually run the test here it is the naming convenction used.
The results of the computation will be saved on different files based on the instance of the test considered. In particular the naming conventiona format the output file as sol_x#_y#_a#_b#.mtx, where each # is a number choosen w.r.t. the test instance. (Ex. sol_x1_y1_a1_b1.mtx is the solution computed using the first x vector file , the first y vector file, alpha = 1.0 and beta = 1.0). Moreover, the files will be saved in the serial/ directory if the program is launched using 1 process or in parrallel/ directory if the program is launched with more than one process.
## TODO
- Add computation with broken descriptor and catch the errore result

@ -0,0 +1,120 @@
#!/bin/bash
GREEN="\033[0;32m"
RED="\033[0;31m"
BLUE="\033[0;34m"
YELLOW="\033[33m"
RESET="\033[0m"
# Directories to compare
dir1="serial"
dir2="parallel"
log_file_name="psblas_geaxpby_test.log"
flag=0
num_procs=$(nproc)
# Function to center text
center_text() {
local text="$1"
printf "\033[0;32m%*s\033[0m\n" $(((${#text} + terminal_width) / 2)) "$text"
}
# Welcome message
terminal_width=$(tput cols) # Get the terminal width
separator=$(printf "%0.s=" $(seq 1 $terminal_width)) # Generate separator of correct length
clear
echo -e "${GREEN}${separator}${RESET}"
center_text "PSBLAS Computational Routines Test Suite"
echo -e "${GREEN}${separator}${RESET}"
center_text "Welcome to the PSBLAS Computational Routines Test Suite!"
center_text "This script compares the results of serial and parallel computations"
center_text "for all the computational routines documented on the version 3.9 of PSBLAS."
echo -e "${GREEN}${separator}${RESET}"
echo -e "${BLUE}[INFO]\t Starting environment check for required modules...${RESET}"
# Check and load required modules
required_modules=("gnu/12.2.1-sys" "mpich/4.2.2" "cuda/12.5")
for module in "${required_modules[@]}"; do
if ! module list 2>&1 | grep -q "$module"; then
echo -e "${YELLOW}[WARNING] Module not found, loading $module${RESET}"
module load "$module"
flag=1
if ! grep -q "module load $module" "$HOME/.bashrc"; then
echo -e "[INFO]\t Adding 'module load $module' to $bashrc..."
echo "module load $module" >> "$HOME/.bashrc"
# else
# echo "'module load $module' is already present in $bashrc."
fi
else
echo -e "[INFO]\t Found module $module."
fi
done
# Update .bashrc if necessary
if [ $flag -eq 1 ]; then
echo -e "[INFO]\t Reloading $HOME/.bashrc..."
source ~/.bashrc
fi
# Inform the user about environment persistence
if [ "$$" -eq "$PPID" ]; then
echo -e "${YELLOW}[WARNING] Modules loaded in this script will not persist after the script finishes.${RESET}"
echo -e "${YELLOW}[WARNING] Run the script using 'source autotest.sh' to make the changes persist.${RESET}"
fi
echo -e "${BLUE}[INFO]\t Environment check for required modules completed.${RESET}"
# Check if the executable ELF file exists
if [ ! -f "./runs/psb_geaxpby_test" ]; then
echo -e "${YELLOW}[WARNING] Executable not found. Running make...${RESET}"
make
if [ ! -f "./runs/psb_geaxpby_test" ]; then
echo -e "${RED}[ERROR] Failed to create executable. Check make command.${RESET}"
fi
else
echo -e "${BLUE}[INFO]\t The executable already exists. Skipping the make process.${RESET}"
fi
# Excecute tests and save results
echo -e "${BLUE}[INFO]\t Running the PSBLAS psb_geaxpby test...${RESET}"
echo ""
echo -e "${BLUE}[INFO]\t Starting single process computation${RESET}"
mpirun -np 1 ./runs/psb_geaxpby_test
echo -e "${BLUE}[INFO]\t Single process computation terminated correctly${RESET}"
echo ""
echo -e "${BLUE}[INFO]\t Starting $num_procs processes computation${RESET}"
mpirun -np $num_procs ./runs/psb_geaxpby_test
echo -e "${BLUE}[INFO]\t Multiple processes computation terminated correctly${RESET}"
echo "" >> ${log_file_name}
# Iterate through files in the first directory
for file1 in "$dir1"/*; do
filename=$(basename "$file1") # Extract the filename
file2="$dir2/$filename" # Construct the path for the second directory
# Check if the file exists in the second directory
if [ -f "$file2" ]; then
diff_count=$(diff "$file1" "$file2" | wc -l) # Compare the files
echo "Comparison between $file1 and $file2: $diff_count differences" >> ${log_file_name}
# echo "Comparing $file1 and $file2: $diff_count"
else
echo -e "${RED}[ERROR] File $filename does not exist in $dir2${RESET}"
fi
done
echo -e "${BLUE}[INFO]\t PSBLAS psb_geaxpby test succesfully completed.${RESET}"
echo -e "${GREEN}[INFO]\t All tests completed successfully. Results are logged in ${log_file_name}.${RESET}"

@ -5,25 +5,35 @@ program main
implicit none
! MPI variables
integer(psb_ipk_) :: my_rank, np
integer(psb_ipk_) :: my_rank, np
! Communicator variable
type(psb_ctxt_type) :: ctxt
type(psb_ctxt_type) :: ctxt
! parameters array
character(len=64) :: x(4),y(4)
real(psb_dpk_) :: alpha(3), beta(3)
integer(psb_ipk_) :: arr_size
integer(psb_ipk_) :: tests_number, count
character(len=64) :: x(4),y(4)
real(psb_dpk_) :: alpha(3), beta(3)
integer(psb_ipk_) :: arr_size
integer(psb_ipk_) :: tests_number, count
! cycle indexes variables
integer(psb_ipk_) :: i,j,k,h,l
integer(psb_ipk_) :: info, ret, unit
integer(psb_ipk_) :: i,j,k,h,l
integer(psb_ipk_) :: info, ret, unit
! time stats variables
character(len=8) :: date ! YYYYMMDD
character(len=10) :: time ! HHMMSS.sss
character(len=5) :: zones ! Time zone
integer :: values(8)
! others
character(len=:), allocatable :: output_file_name
! Setup logger output
open(unit, file='psblas_geaxpby_test.log', status='replace', action='write', iostat=info)
open(newunit=unit, file='psblas_geaxpby_test.log', status='replace', action='write', iostat=info)
if (info /= 0) then
print *, 'Error opening output file.'
print *, "I/O Status Code:", info
stop
end if
@ -66,20 +76,36 @@ program main
call psb_barrier(ctxt)
if(my_rank == psb_root_) write(*,'(A)') "[INFO] Starting single precision computation..."
do i=1,size(x)
do j=1,size(y)
do k=1,size(alpha)
do h=1,size(beta)
call psb_geaxpby_kernel(x_file=x(i), y_file=y(j), alpha = real(alpha(k),psb_spk_),&
& beta = real(beta(h),psb_spk_), arr_size = arr_size, ctxt = ctxt, ret = ret)
& beta = real(beta(h),psb_spk_), arr_size = arr_size, ctxt = ctxt, ret = ret, &
& output_file_name = output_file_name)
if(my_rank == psb_root_) then
count = count + 1
call date_and_time(date, time, zones, values)
if(ret /= -1) then
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Generation geaxpby single precision result file ", count , "/", tests_number, CHAR(9), "[OK]"
! Success formatted output
write(psb_out_unit,'("[", I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2,":",I2.2,"] ",&
& A,A,A,I0,A,I0,T110,A)') &
& values(1), values(2), values(3), values(5), values(6), values(7), &
& "Generation geaxpby single precision result file ", &
& output_file_name , ' ', count , "/", tests_number, "[OK]"
else
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Generation geaxpby single precision result file ", count , "/", tests_number, CHAR(9), "[FAIL]"
! Fail formatted output
write(psb_out_unit,'("[", I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2,":",I2.2,"] ",&
& A,A,A,I0,A,I0,T110,A)') &
& values(1), values(2), values(3), values(5), values(6), values(7), &
& "Generation geaxpby single precision result file ", &
& output_file_name , ' ', count , "/", tests_number, "[FAIL]"
goto 9998
end if
end if
call psb_barrier(ctxt)
@ -88,11 +114,19 @@ program main
end do
end do
if(my_rank == psb_root_) write(*,'(A)') "[INFO] Single precision computation completed succesfully!"
if(my_rank == psb_root_) then
write(psb_out_unit, *) ''
count = 0
end if
if(my_rank == psb_root_) write(*,'(A)') "[INFO] Starting double precision check..."
call psb_barrier(ctxt)
! Here double precision comparison should be done
@ -101,15 +135,25 @@ program main
do k=1,size(alpha)
do h=1,size(beta)
call psb_geaxpby_check(x_file=x(i), y_file=y(j), alpha = alpha(k), beta = beta(h), &
& arr_size = arr_size, ctxt = ctxt, ret = ret)
& arr_size = arr_size, ctxt = ctxt, ret = ret, output_file_name = output_file_name)
if(my_rank == psb_root_) then
count = count + 1
if(ret == 0) then
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Double precision check ", count , "/", tests_number, CHAR(9), "[OK]"
call date_and_time(date, time, zones, values)
if(ret /= -1) then
! Success formatted output
write(psb_out_unit,'("[", I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2,":",I2.2,"] ",&
& A,A,A,I0,A,I0,T110,A)') &
& values(1), values(2), values(3), values(5), values(6), values(7), &
& "Double precision check on file ", &
& output_file_name , ' ', count , "/", tests_number, "[OK]"
else
write(psb_out_unit, '(A,I0,A,I0,A,A)') &
& "Double precision check ", count , "/", tests_number, CHAR(9), "[FAIL]"
! Fail formatted output
write(psb_out_unit,'("[", I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2,":",I2.2,"] ",&
& A,A,A,I0,A,I0,T110,A)') &
& values(1), values(2), values(3), values(5), values(6), values(7), &
& "Double precision check on file ", &
& output_file_name , ' ', count , "/", tests_number, "[FAIL]"
goto 9999
end if
end if
@ -119,8 +163,28 @@ program main
end do
end do
if(my_rank == psb_root_) then
write(*,'(A)') "[INFO] Duble precision check completed succesfully!"
close(unit)
end if
call psb_exit(ctxt)
return
9999 call psb_exit(ctxt)
9998 continue
if(my_rank == psb_root_) then
close(unit)
write(*,'(A,I0,A,I0,A)') "[ERROR] Error in geaxpby single precision computation ", &
& count, "/", tests_number, " see log file for details"
end if
9999 continue
if(my_rank == psb_root_) then
close(unit)
write(*,'(A,I0,A,I0,A)') "[ERROR] Error in geaxpby double precision check ", &
& count, "/", tests_number, " see log file for details"
end if
call psb_exit(ctxt)
return
end program main

@ -53,37 +53,37 @@ module psb_geaxpby_test
!> @brief Function to excecute psb_geaxpby in single precision and
!! save the results on file
!!
subroutine psb_geaxpby_kernel(x_file, y_file, alpha, beta, arr_size, ctxt, ret)
subroutine psb_geaxpby_kernel(x_file, y_file, alpha, beta, arr_size, ctxt, ret, output_file_name)
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len = *), intent(in) :: x_file, y_file
real(psb_spk_), intent(in) :: alpha, beta
integer(psb_ipk_), intent(in) :: arr_size
type(psb_ctxt_type), intent(in) :: ctxt
character(len = *), intent(in) :: x_file, y_file
real(psb_spk_), intent(in) :: alpha, beta
integer(psb_ipk_), intent(in) :: arr_size
type(psb_ctxt_type), intent(in) :: ctxt
! output parameters
integer(psb_ipk_), intent(out) :: ret
integer(psb_ipk_), intent(out) :: ret
character(len=:), allocatable, intent(out) :: output_file_name
! vectors
type(psb_s_vect_type) :: x, y
type(psb_s_vect_type) :: x, y
! matrix descriptor data structure
type(psb_desc_type) :: desc_a
type(psb_desc_type) :: desc_a
! communication context
integer(psb_ipk_) :: my_rank, np, info, err_act
integer(psb_ipk_) :: my_rank, np, info, err_act
! variables outside PSLBALS data structures
real(psb_spk_), allocatable :: x_global(:), y_global(:)
integer(psb_ipk_) :: i
real(psb_spk_), allocatable :: x_global(:), y_global(:)
integer(psb_ipk_) :: i
! others
logical :: exists
character(len=:), allocatable :: output_file_name
logical :: exists
@ -242,38 +242,38 @@ module psb_geaxpby_test
!> @brief Function to excecute psb_geaxpby in double precision and
!! compare the results with the ones on file
!!
subroutine psb_geaxpby_check(x_file, y_file, alpha, beta, arr_size, ctxt, ret)
subroutine psb_geaxpby_check(x_file, y_file, alpha, beta, arr_size, ctxt, ret, output_file_name)
use psb_base_mod
use psb_util_mod
implicit none
! input parameters
character(len = *), intent(in) :: x_file, y_file
real(psb_dpk_), intent(in) :: alpha, beta
integer(psb_ipk_), intent(in) :: arr_size
type(psb_ctxt_type), intent(in) :: ctxt
character(len = *), intent(in) :: x_file, y_file
real(psb_dpk_), intent(in) :: alpha, beta
integer(psb_ipk_), intent(in) :: arr_size
type(psb_ctxt_type), intent(in) :: ctxt
! output parameters
integer(psb_ipk_), intent(out) :: ret
integer(psb_ipk_), intent(out) :: ret
character(len=:), allocatable, intent(out) :: output_file_name
! vectors
type(psb_d_vect_type) :: x, y
type(psb_s_vect_type) :: y_check
type(psb_d_vect_type) :: x, y
type(psb_s_vect_type) :: y_check
! matrix descriptor data structure
type(psb_desc_type) :: desc_a
type(psb_desc_type) :: desc_a
! communication context
integer(psb_ipk_) :: my_rank, np, info, err_act
integer(psb_ipk_) :: my_rank, np, info, err_act
! variables outside PSLBALS data structures
real(psb_dpk_), allocatable :: x_global(:), y_global(:)
integer(psb_ipk_) :: i
real(psb_dpk_), allocatable :: x_global(:), y_global(:)
integer(psb_ipk_) :: i
! others
logical :: exists
character(len=:), allocatable :: output_file_name
logical :: exists

@ -1,292 +1,437 @@
Welcome to PSBLAS version: 3.9.0
This is the psb_geaxpby_test sample program
Generation geaxpby single precision result file 1/144 [OK]
Generation geaxpby single precision result file 2/144 [OK]
Generation geaxpby single precision result file 3/144 [OK]
Generation geaxpby single precision result file 4/144 [OK]
Generation geaxpby single precision result file 5/144 [OK]
Generation geaxpby single precision result file 6/144 [OK]
Generation geaxpby single precision result file 7/144 [OK]
Generation geaxpby single precision result file 8/144 [OK]
Generation geaxpby single precision result file 9/144 [OK]
Generation geaxpby single precision result file 10/144 [OK]
Generation geaxpby single precision result file 11/144 [OK]
Generation geaxpby single precision result file 12/144 [OK]
Generation geaxpby single precision result file 13/144 [OK]
Generation geaxpby single precision result file 14/144 [OK]
Generation geaxpby single precision result file 15/144 [OK]
Generation geaxpby single precision result file 16/144 [OK]
Generation geaxpby single precision result file 17/144 [OK]
Generation geaxpby single precision result file 18/144 [OK]
Generation geaxpby single precision result file 19/144 [OK]
Generation geaxpby single precision result file 20/144 [OK]
Generation geaxpby single precision result file 21/144 [OK]
Generation geaxpby single precision result file 22/144 [OK]
Generation geaxpby single precision result file 23/144 [OK]
Generation geaxpby single precision result file 24/144 [OK]
Generation geaxpby single precision result file 25/144 [OK]
Generation geaxpby single precision result file 26/144 [OK]
Generation geaxpby single precision result file 27/144 [OK]
Generation geaxpby single precision result file 28/144 [OK]
Generation geaxpby single precision result file 29/144 [OK]
Generation geaxpby single precision result file 30/144 [OK]
Generation geaxpby single precision result file 31/144 [OK]
Generation geaxpby single precision result file 32/144 [OK]
Generation geaxpby single precision result file 33/144 [OK]
Generation geaxpby single precision result file 34/144 [OK]
Generation geaxpby single precision result file 35/144 [OK]
Generation geaxpby single precision result file 36/144 [OK]
Generation geaxpby single precision result file 37/144 [OK]
Generation geaxpby single precision result file 38/144 [OK]
Generation geaxpby single precision result file 39/144 [OK]
Generation geaxpby single precision result file 40/144 [OK]
Generation geaxpby single precision result file 41/144 [OK]
Generation geaxpby single precision result file 42/144 [OK]
Generation geaxpby single precision result file 43/144 [OK]
Generation geaxpby single precision result file 44/144 [OK]
Generation geaxpby single precision result file 45/144 [OK]
Generation geaxpby single precision result file 46/144 [OK]
Generation geaxpby single precision result file 47/144 [OK]
Generation geaxpby single precision result file 48/144 [OK]
Generation geaxpby single precision result file 49/144 [OK]
Generation geaxpby single precision result file 50/144 [OK]
Generation geaxpby single precision result file 51/144 [OK]
Generation geaxpby single precision result file 52/144 [OK]
Generation geaxpby single precision result file 53/144 [OK]
Generation geaxpby single precision result file 54/144 [OK]
Generation geaxpby single precision result file 55/144 [OK]
Generation geaxpby single precision result file 56/144 [OK]
Generation geaxpby single precision result file 57/144 [OK]
Generation geaxpby single precision result file 58/144 [OK]
Generation geaxpby single precision result file 59/144 [OK]
Generation geaxpby single precision result file 60/144 [OK]
Generation geaxpby single precision result file 61/144 [OK]
Generation geaxpby single precision result file 62/144 [OK]
Generation geaxpby single precision result file 63/144 [OK]
Generation geaxpby single precision result file 64/144 [OK]
Generation geaxpby single precision result file 65/144 [OK]
Generation geaxpby single precision result file 66/144 [OK]
Generation geaxpby single precision result file 67/144 [OK]
Generation geaxpby single precision result file 68/144 [OK]
Generation geaxpby single precision result file 69/144 [OK]
Generation geaxpby single precision result file 70/144 [OK]
Generation geaxpby single precision result file 71/144 [OK]
Generation geaxpby single precision result file 72/144 [OK]
Generation geaxpby single precision result file 73/144 [OK]
Generation geaxpby single precision result file 74/144 [OK]
Generation geaxpby single precision result file 75/144 [OK]
Generation geaxpby single precision result file 76/144 [OK]
Generation geaxpby single precision result file 77/144 [OK]
Generation geaxpby single precision result file 78/144 [OK]
Generation geaxpby single precision result file 79/144 [OK]
Generation geaxpby single precision result file 80/144 [OK]
Generation geaxpby single precision result file 81/144 [OK]
Generation geaxpby single precision result file 82/144 [OK]
Generation geaxpby single precision result file 83/144 [OK]
Generation geaxpby single precision result file 84/144 [OK]
Generation geaxpby single precision result file 85/144 [OK]
Generation geaxpby single precision result file 86/144 [OK]
Generation geaxpby single precision result file 87/144 [OK]
Generation geaxpby single precision result file 88/144 [OK]
Generation geaxpby single precision result file 89/144 [OK]
Generation geaxpby single precision result file 90/144 [OK]
Generation geaxpby single precision result file 91/144 [OK]
Generation geaxpby single precision result file 92/144 [OK]
Generation geaxpby single precision result file 93/144 [OK]
Generation geaxpby single precision result file 94/144 [OK]
Generation geaxpby single precision result file 95/144 [OK]
Generation geaxpby single precision result file 96/144 [OK]
Generation geaxpby single precision result file 97/144 [OK]
Generation geaxpby single precision result file 98/144 [OK]
Generation geaxpby single precision result file 99/144 [OK]
Generation geaxpby single precision result file 100/144 [OK]
Generation geaxpby single precision result file 101/144 [OK]
Generation geaxpby single precision result file 102/144 [OK]
Generation geaxpby single precision result file 103/144 [OK]
Generation geaxpby single precision result file 104/144 [OK]
Generation geaxpby single precision result file 105/144 [OK]
Generation geaxpby single precision result file 106/144 [OK]
Generation geaxpby single precision result file 107/144 [OK]
Generation geaxpby single precision result file 108/144 [OK]
Generation geaxpby single precision result file 109/144 [OK]
Generation geaxpby single precision result file 110/144 [OK]
Generation geaxpby single precision result file 111/144 [OK]
Generation geaxpby single precision result file 112/144 [OK]
Generation geaxpby single precision result file 113/144 [OK]
Generation geaxpby single precision result file 114/144 [OK]
Generation geaxpby single precision result file 115/144 [OK]
Generation geaxpby single precision result file 116/144 [OK]
Generation geaxpby single precision result file 117/144 [OK]
Generation geaxpby single precision result file 118/144 [OK]
Generation geaxpby single precision result file 119/144 [OK]
Generation geaxpby single precision result file 120/144 [OK]
Generation geaxpby single precision result file 121/144 [OK]
Generation geaxpby single precision result file 122/144 [OK]
Generation geaxpby single precision result file 123/144 [OK]
Generation geaxpby single precision result file 124/144 [OK]
Generation geaxpby single precision result file 125/144 [OK]
Generation geaxpby single precision result file 126/144 [OK]
Generation geaxpby single precision result file 127/144 [OK]
Generation geaxpby single precision result file 128/144 [OK]
Generation geaxpby single precision result file 129/144 [OK]
Generation geaxpby single precision result file 130/144 [OK]
Generation geaxpby single precision result file 131/144 [OK]
Generation geaxpby single precision result file 132/144 [OK]
Generation geaxpby single precision result file 133/144 [OK]
Generation geaxpby single precision result file 134/144 [OK]
Generation geaxpby single precision result file 135/144 [OK]
Generation geaxpby single precision result file 136/144 [OK]
Generation geaxpby single precision result file 137/144 [OK]
Generation geaxpby single precision result file 138/144 [OK]
Generation geaxpby single precision result file 139/144 [OK]
Generation geaxpby single precision result file 140/144 [OK]
Generation geaxpby single precision result file 141/144 [OK]
Generation geaxpby single precision result file 142/144 [OK]
Generation geaxpby single precision result file 143/144 [OK]
Generation geaxpby single precision result file 144/144 [OK]
[2025-06-11 12:38:51] Generation geaxpby single precision result file parallel/sol_x1_y1_a1_b1.mtx 1/144[OK]
[2025-06-11 12:38:51] Generation geaxpby single precision result file parallel/sol_x1_y1_a1_b2.mtx 2/144[OK]
[2025-06-11 12:38:51] Generation geaxpby single precision result file parallel/sol_x1_y1_a1_b3.mtx 3/144[OK]
[2025-06-11 12:38:51] Generation geaxpby single precision result file parallel/sol_x1_y1_a2_b1.mtx 4/144[OK]
[2025-06-11 12:38:52] Generation geaxpby single precision result file parallel/sol_x1_y1_a2_b2.mtx 5/144[OK]
[2025-06-11 12:38:52] Generation geaxpby single precision result file parallel/sol_x1_y1_a2_b3.mtx 6/144[OK]
[2025-06-11 12:38:52] Generation geaxpby single precision result file parallel/sol_x1_y1_a3_b1.mtx 7/144[OK]
[2025-06-11 12:38:52] Generation geaxpby single precision result file parallel/sol_x1_y1_a3_b2.mtx 8/144[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y1_a3_b3.mtx 9/144[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a1_b1.mtx 10/14[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a1_b2.mtx 11/14[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a1_b3.mtx 12/14[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a2_b1.mtx 13/14[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a2_b2.mtx 14/14[OK]
[2025-06-11 12:38:53] Generation geaxpby single precision result file parallel/sol_x1_y2_a2_b3.mtx 15/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y2_a3_b1.mtx 16/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y2_a3_b2.mtx 17/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y2_a3_b3.mtx 18/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y3_a1_b1.mtx 19/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y3_a1_b2.mtx 20/14[OK]
[2025-06-11 12:38:54] Generation geaxpby single precision result file parallel/sol_x1_y3_a1_b3.mtx 21/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a2_b1.mtx 22/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a2_b2.mtx 23/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a2_b3.mtx 24/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a3_b1.mtx 25/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a3_b2.mtx 26/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y3_a3_b3.mtx 27/14[OK]
[2025-06-11 12:38:55] Generation geaxpby single precision result file parallel/sol_x1_y4_a1_b1.mtx 28/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a1_b2.mtx 29/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a1_b3.mtx 30/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a2_b1.mtx 31/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a2_b2.mtx 32/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a2_b3.mtx 33/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a3_b1.mtx 34/14[OK]
[2025-06-11 12:38:56] Generation geaxpby single precision result file parallel/sol_x1_y4_a3_b2.mtx 35/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x1_y4_a3_b3.mtx 36/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a1_b1.mtx 37/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a1_b2.mtx 38/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a1_b3.mtx 39/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a2_b1.mtx 40/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a2_b2.mtx 41/14[OK]
[2025-06-11 12:38:57] Generation geaxpby single precision result file parallel/sol_x2_y1_a2_b3.mtx 42/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y1_a3_b1.mtx 43/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y1_a3_b2.mtx 44/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y1_a3_b3.mtx 45/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y2_a1_b1.mtx 46/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y2_a1_b2.mtx 47/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y2_a1_b3.mtx 48/14[OK]
[2025-06-11 12:38:58] Generation geaxpby single precision result file parallel/sol_x2_y2_a2_b1.mtx 49/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y2_a2_b2.mtx 50/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y2_a2_b3.mtx 51/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y2_a3_b1.mtx 52/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y2_a3_b2.mtx 53/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y2_a3_b3.mtx 54/14[OK]
[2025-06-11 12:38:59] Generation geaxpby single precision result file parallel/sol_x2_y3_a1_b1.mtx 55/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a1_b2.mtx 56/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a1_b3.mtx 57/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a2_b1.mtx 58/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a2_b2.mtx 59/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a2_b3.mtx 60/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a3_b1.mtx 61/14[OK]
[2025-06-11 12:39:00] Generation geaxpby single precision result file parallel/sol_x2_y3_a3_b2.mtx 62/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y3_a3_b3.mtx 63/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a1_b1.mtx 64/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a1_b2.mtx 65/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a1_b3.mtx 66/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a2_b1.mtx 67/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a2_b2.mtx 68/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a2_b3.mtx 69/14[OK]
[2025-06-11 12:39:01] Generation geaxpby single precision result file parallel/sol_x2_y4_a3_b1.mtx 70/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x2_y4_a3_b2.mtx 71/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x2_y4_a3_b3.mtx 72/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x3_y1_a1_b1.mtx 73/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x3_y1_a1_b2.mtx 74/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x3_y1_a1_b3.mtx 75/14[OK]
[2025-06-11 12:39:02] Generation geaxpby single precision result file parallel/sol_x3_y1_a2_b1.mtx 76/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y1_a2_b2.mtx 77/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y1_a2_b3.mtx 78/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y1_a3_b1.mtx 79/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y1_a3_b2.mtx 80/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y1_a3_b3.mtx 81/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y2_a1_b1.mtx 82/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y2_a1_b2.mtx 83/14[OK]
[2025-06-11 12:39:03] Generation geaxpby single precision result file parallel/sol_x3_y2_a1_b3.mtx 84/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a2_b1.mtx 85/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a2_b2.mtx 86/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a2_b3.mtx 87/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a3_b1.mtx 88/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a3_b2.mtx 89/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y2_a3_b3.mtx 90/14[OK]
[2025-06-11 12:39:04] Generation geaxpby single precision result file parallel/sol_x3_y3_a1_b1.mtx 91/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a1_b2.mtx 92/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a1_b3.mtx 93/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a2_b1.mtx 94/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a2_b2.mtx 95/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a2_b3.mtx 96/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a3_b1.mtx 97/14[OK]
[2025-06-11 12:39:05] Generation geaxpby single precision result file parallel/sol_x3_y3_a3_b2.mtx 98/14[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y3_a3_b3.mtx 99/14[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a1_b1.mtx 100/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a1_b2.mtx 101/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a1_b3.mtx 102/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a2_b1.mtx 103/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a2_b2.mtx 104/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a2_b3.mtx 105/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a3_b1.mtx 106/1[OK]
[2025-06-11 12:39:06] Generation geaxpby single precision result file parallel/sol_x3_y4_a3_b2.mtx 107/1[OK]
[2025-06-11 12:39:07] Generation geaxpby single precision result file parallel/sol_x3_y4_a3_b3.mtx 108/1[OK]
[2025-06-11 12:39:07] Generation geaxpby single precision result file parallel/sol_x4_y1_a1_b1.mtx 109/1[OK]
[2025-06-11 12:39:07] Generation geaxpby single precision result file parallel/sol_x4_y1_a1_b2.mtx 110/1[OK]
[2025-06-11 12:39:07] Generation geaxpby single precision result file parallel/sol_x4_y1_a1_b3.mtx 111/1[OK]
[2025-06-11 12:39:07] Generation geaxpby single precision result file parallel/sol_x4_y1_a2_b1.mtx 112/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y1_a2_b2.mtx 113/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y1_a2_b3.mtx 114/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y1_a3_b1.mtx 115/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y1_a3_b2.mtx 116/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y1_a3_b3.mtx 117/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y2_a1_b1.mtx 118/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y2_a1_b2.mtx 119/1[OK]
[2025-06-11 12:39:08] Generation geaxpby single precision result file parallel/sol_x4_y2_a1_b3.mtx 120/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a2_b1.mtx 121/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a2_b2.mtx 122/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a2_b3.mtx 123/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a3_b1.mtx 124/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a3_b2.mtx 125/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y2_a3_b3.mtx 126/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y3_a1_b1.mtx 127/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y3_a1_b2.mtx 128/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y3_a1_b3.mtx 129/1[OK]
[2025-06-11 12:39:09] Generation geaxpby single precision result file parallel/sol_x4_y3_a2_b1.mtx 130/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y3_a2_b2.mtx 131/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y3_a2_b3.mtx 132/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y3_a3_b1.mtx 133/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y3_a3_b2.mtx 134/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y3_a3_b3.mtx 135/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y4_a1_b1.mtx 136/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y4_a1_b2.mtx 137/1[OK]
[2025-06-11 12:39:10] Generation geaxpby single precision result file parallel/sol_x4_y4_a1_b3.mtx 138/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a2_b1.mtx 139/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a2_b2.mtx 140/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a2_b3.mtx 141/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a3_b1.mtx 142/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a3_b2.mtx 143/1[OK]
[2025-06-11 12:39:11] Generation geaxpby single precision result file parallel/sol_x4_y4_a3_b3.mtx 144/1[OK]
Double precision check 1/144 [OK]
Double precision check 2/144 [OK]
Double precision check 3/144 [OK]
Double precision check 4/144 [OK]
Double precision check 5/144 [OK]
Double precision check 6/144 [OK]
Double precision check 7/144 [OK]
Double precision check 8/144 [OK]
Double precision check 9/144 [OK]
Double precision check 10/144 [OK]
Double precision check 11/144 [OK]
Double precision check 12/144 [OK]
Double precision check 13/144 [OK]
Double precision check 14/144 [OK]
Double precision check 15/144 [OK]
Double precision check 16/144 [OK]
Double precision check 17/144 [OK]
Double precision check 18/144 [OK]
Double precision check 19/144 [OK]
Double precision check 20/144 [OK]
Double precision check 21/144 [OK]
Double precision check 22/144 [OK]
Double precision check 23/144 [OK]
Double precision check 24/144 [OK]
Double precision check 25/144 [OK]
Double precision check 26/144 [OK]
Double precision check 27/144 [OK]
Double precision check 28/144 [OK]
Double precision check 29/144 [OK]
Double precision check 30/144 [OK]
Double precision check 31/144 [OK]
Double precision check 32/144 [OK]
Double precision check 33/144 [OK]
Double precision check 34/144 [OK]
Double precision check 35/144 [OK]
Double precision check 36/144 [OK]
Double precision check 37/144 [OK]
Double precision check 38/144 [OK]
Double precision check 39/144 [OK]
Double precision check 40/144 [OK]
Double precision check 41/144 [OK]
Double precision check 42/144 [OK]
Double precision check 43/144 [OK]
Double precision check 44/144 [OK]
Double precision check 45/144 [OK]
Double precision check 46/144 [OK]
Double precision check 47/144 [OK]
Double precision check 48/144 [OK]
Double precision check 49/144 [OK]
Double precision check 50/144 [OK]
Double precision check 51/144 [OK]
Double precision check 52/144 [OK]
Double precision check 53/144 [OK]
Double precision check 54/144 [OK]
Double precision check 55/144 [OK]
Double precision check 56/144 [OK]
Double precision check 57/144 [OK]
Double precision check 58/144 [OK]
Double precision check 59/144 [OK]
Double precision check 60/144 [OK]
Double precision check 61/144 [OK]
Double precision check 62/144 [OK]
Double precision check 63/144 [OK]
Double precision check 64/144 [OK]
Double precision check 65/144 [OK]
Double precision check 66/144 [OK]
Double precision check 67/144 [OK]
Double precision check 68/144 [OK]
Double precision check 69/144 [OK]
Double precision check 70/144 [OK]
Double precision check 71/144 [OK]
Double precision check 72/144 [OK]
Double precision check 73/144 [OK]
Double precision check 74/144 [OK]
Double precision check 75/144 [OK]
Double precision check 76/144 [OK]
Double precision check 77/144 [OK]
Double precision check 78/144 [OK]
Double precision check 79/144 [OK]
Double precision check 80/144 [OK]
Double precision check 81/144 [OK]
Double precision check 82/144 [OK]
Double precision check 83/144 [OK]
Double precision check 84/144 [OK]
Double precision check 85/144 [OK]
Double precision check 86/144 [OK]
Double precision check 87/144 [OK]
Double precision check 88/144 [OK]
Double precision check 89/144 [OK]
Double precision check 90/144 [OK]
Double precision check 91/144 [OK]
Double precision check 92/144 [OK]
Double precision check 93/144 [OK]
Double precision check 94/144 [OK]
Double precision check 95/144 [OK]
Double precision check 96/144 [OK]
Double precision check 97/144 [OK]
Double precision check 98/144 [OK]
Double precision check 99/144 [OK]
Double precision check 100/144 [OK]
Double precision check 101/144 [OK]
Double precision check 102/144 [OK]
Double precision check 103/144 [OK]
Double precision check 104/144 [OK]
Double precision check 105/144 [OK]
Double precision check 106/144 [OK]
Double precision check 107/144 [OK]
Double precision check 108/144 [OK]
Double precision check 109/144 [OK]
Double precision check 110/144 [OK]
Double precision check 111/144 [OK]
Double precision check 112/144 [OK]
Double precision check 113/144 [OK]
Double precision check 114/144 [OK]
Double precision check 115/144 [OK]
Double precision check 116/144 [OK]
Double precision check 117/144 [OK]
Double precision check 118/144 [OK]
Double precision check 119/144 [OK]
Double precision check 120/144 [OK]
Double precision check 121/144 [OK]
Double precision check 122/144 [OK]
Double precision check 123/144 [OK]
Double precision check 124/144 [OK]
Double precision check 125/144 [OK]
Double precision check 126/144 [OK]
Double precision check 127/144 [OK]
Double precision check 128/144 [OK]
Double precision check 129/144 [OK]
Double precision check 130/144 [OK]
Double precision check 131/144 [OK]
Double precision check 132/144 [OK]
Double precision check 133/144 [OK]
Double precision check 134/144 [OK]
Double precision check 135/144 [OK]
Double precision check 136/144 [OK]
Double precision check 137/144 [OK]
Double precision check 138/144 [OK]
Double precision check 139/144 [OK]
Double precision check 140/144 [OK]
Double precision check 141/144 [OK]
Double precision check 142/144 [OK]
Double precision check 143/144 [OK]
Double precision check 144/144 [OK]
[2025-06-11 12:39:11] Double precision check on file parallel/sol_x1_y1_a1_b1.mtx 1/144 [OK]
[2025-06-11 12:39:11] Double precision check on file parallel/sol_x1_y1_a1_b2.mtx 2/144 [OK]
[2025-06-11 12:39:11] Double precision check on file parallel/sol_x1_y1_a1_b3.mtx 3/144 [OK]
[2025-06-11 12:39:11] Double precision check on file parallel/sol_x1_y1_a2_b1.mtx 4/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y1_a2_b2.mtx 5/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y1_a2_b3.mtx 6/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y1_a3_b1.mtx 7/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y1_a3_b2.mtx 8/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y1_a3_b3.mtx 9/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y2_a1_b1.mtx 10/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y2_a1_b2.mtx 11/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y2_a1_b3.mtx 12/144 [OK]
[2025-06-11 12:39:12] Double precision check on file parallel/sol_x1_y2_a2_b1.mtx 13/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y2_a2_b2.mtx 14/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y2_a2_b3.mtx 15/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y2_a3_b1.mtx 16/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y2_a3_b2.mtx 17/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y2_a3_b3.mtx 18/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a1_b1.mtx 19/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a1_b2.mtx 20/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a1_b3.mtx 21/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a2_b1.mtx 22/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a2_b2.mtx 23/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a2_b3.mtx 24/144 [OK]
[2025-06-11 12:39:13] Double precision check on file parallel/sol_x1_y3_a3_b1.mtx 25/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y3_a3_b2.mtx 26/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y3_a3_b3.mtx 27/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a1_b1.mtx 28/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a1_b2.mtx 29/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a1_b3.mtx 30/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a2_b1.mtx 31/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a2_b2.mtx 32/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a2_b3.mtx 33/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a3_b1.mtx 34/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a3_b2.mtx 35/144 [OK]
[2025-06-11 12:39:14] Double precision check on file parallel/sol_x1_y4_a3_b3.mtx 36/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a1_b1.mtx 37/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a1_b2.mtx 38/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a1_b3.mtx 39/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a2_b1.mtx 40/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a2_b2.mtx 41/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a2_b3.mtx 42/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a3_b1.mtx 43/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a3_b2.mtx 44/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y1_a3_b3.mtx 45/144 [OK]
[2025-06-11 12:39:15] Double precision check on file parallel/sol_x2_y2_a1_b1.mtx 46/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a1_b2.mtx 47/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a1_b3.mtx 48/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a2_b1.mtx 49/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a2_b2.mtx 50/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a2_b3.mtx 51/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a3_b1.mtx 52/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a3_b2.mtx 53/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y2_a3_b3.mtx 54/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y3_a1_b1.mtx 55/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y3_a1_b2.mtx 56/144 [OK]
[2025-06-11 12:39:16] Double precision check on file parallel/sol_x2_y3_a1_b3.mtx 57/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a2_b1.mtx 58/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a2_b2.mtx 59/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a2_b3.mtx 60/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a3_b1.mtx 61/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a3_b2.mtx 62/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y3_a3_b3.mtx 63/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y4_a1_b1.mtx 64/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y4_a1_b2.mtx 65/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y4_a1_b3.mtx 66/144 [OK]
[2025-06-11 12:39:17] Double precision check on file parallel/sol_x2_y4_a2_b1.mtx 67/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x2_y4_a2_b2.mtx 68/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x2_y4_a2_b3.mtx 69/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x2_y4_a3_b1.mtx 70/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x2_y4_a3_b2.mtx 71/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x2_y4_a3_b3.mtx 72/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a1_b1.mtx 73/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a1_b2.mtx 74/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a1_b3.mtx 75/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a2_b1.mtx 76/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a2_b2.mtx 77/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a2_b3.mtx 78/144 [OK]
[2025-06-11 12:39:18] Double precision check on file parallel/sol_x3_y1_a3_b1.mtx 79/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y1_a3_b2.mtx 80/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y1_a3_b3.mtx 81/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a1_b1.mtx 82/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a1_b2.mtx 83/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a1_b3.mtx 84/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a2_b1.mtx 85/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a2_b2.mtx 86/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a2_b3.mtx 87/144 [OK]
[2025-06-11 12:39:19] Double precision check on file parallel/sol_x3_y2_a3_b1.mtx 88/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y2_a3_b2.mtx 89/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y2_a3_b3.mtx 90/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a1_b1.mtx 91/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a1_b2.mtx 92/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a1_b3.mtx 93/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a2_b1.mtx 94/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a2_b2.mtx 95/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a2_b3.mtx 96/144 [OK]
[2025-06-11 12:39:20] Double precision check on file parallel/sol_x3_y3_a3_b1.mtx 97/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y3_a3_b2.mtx 98/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y3_a3_b3.mtx 99/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a1_b1.mtx 100/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a1_b2.mtx 101/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a1_b3.mtx 102/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a2_b1.mtx 103/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a2_b2.mtx 104/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a2_b3.mtx 105/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a3_b1.mtx 106/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a3_b2.mtx 107/144 [OK]
[2025-06-11 12:39:21] Double precision check on file parallel/sol_x3_y4_a3_b3.mtx 108/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a1_b1.mtx 109/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a1_b2.mtx 110/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a1_b3.mtx 111/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a2_b1.mtx 112/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a2_b2.mtx 113/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a2_b3.mtx 114/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a3_b1.mtx 115/144 [OK]
[2025-06-11 12:39:22] Double precision check on file parallel/sol_x4_y1_a3_b2.mtx 116/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y1_a3_b3.mtx 117/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a1_b1.mtx 118/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a1_b2.mtx 119/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a1_b3.mtx 120/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a2_b1.mtx 121/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a2_b2.mtx 122/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a2_b3.mtx 123/144 [OK]
[2025-06-11 12:39:23] Double precision check on file parallel/sol_x4_y2_a3_b1.mtx 124/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y2_a3_b2.mtx 125/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y2_a3_b3.mtx 126/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a1_b1.mtx 127/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a1_b2.mtx 128/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a1_b3.mtx 129/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a2_b1.mtx 130/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a2_b2.mtx 131/144 [OK]
[2025-06-11 12:39:24] Double precision check on file parallel/sol_x4_y3_a2_b3.mtx 132/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y3_a3_b1.mtx 133/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y3_a3_b2.mtx 134/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y3_a3_b3.mtx 135/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y4_a1_b1.mtx 136/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y4_a1_b2.mtx 137/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y4_a1_b3.mtx 138/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y4_a2_b1.mtx 139/144 [OK]
[2025-06-11 12:39:25] Double precision check on file parallel/sol_x4_y4_a2_b2.mtx 140/144 [OK]
[2025-06-11 12:39:26] Double precision check on file parallel/sol_x4_y4_a2_b3.mtx 141/144 [OK]
[2025-06-11 12:39:26] Double precision check on file parallel/sol_x4_y4_a3_b1.mtx 142/144 [OK]
[2025-06-11 12:39:26] Double precision check on file parallel/sol_x4_y4_a3_b2.mtx 143/144 [OK]
[2025-06-11 12:39:26] Double precision check on file parallel/sol_x4_y4_a3_b3.mtx 144/144 [OK]
Comparison between serial/sol_x1_y1_a1_b1.mtx and parallel/sol_x1_y1_a1_b1.mtx: 0 differences
Comparison between serial/sol_x1_y1_a1_b2.mtx and parallel/sol_x1_y1_a1_b2.mtx: 0 differences
Comparison between serial/sol_x1_y1_a1_b3.mtx and parallel/sol_x1_y1_a1_b3.mtx: 0 differences
Comparison between serial/sol_x1_y1_a2_b1.mtx and parallel/sol_x1_y1_a2_b1.mtx: 0 differences
Comparison between serial/sol_x1_y1_a2_b2.mtx and parallel/sol_x1_y1_a2_b2.mtx: 0 differences
Comparison between serial/sol_x1_y1_a2_b3.mtx and parallel/sol_x1_y1_a2_b3.mtx: 0 differences
Comparison between serial/sol_x1_y1_a3_b1.mtx and parallel/sol_x1_y1_a3_b1.mtx: 0 differences
Comparison between serial/sol_x1_y1_a3_b2.mtx and parallel/sol_x1_y1_a3_b2.mtx: 0 differences
Comparison between serial/sol_x1_y1_a3_b3.mtx and parallel/sol_x1_y1_a3_b3.mtx: 0 differences
Comparison between serial/sol_x1_y2_a1_b1.mtx and parallel/sol_x1_y2_a1_b1.mtx: 0 differences
Comparison between serial/sol_x1_y2_a1_b2.mtx and parallel/sol_x1_y2_a1_b2.mtx: 0 differences
Comparison between serial/sol_x1_y2_a1_b3.mtx and parallel/sol_x1_y2_a1_b3.mtx: 0 differences
Comparison between serial/sol_x1_y2_a2_b1.mtx and parallel/sol_x1_y2_a2_b1.mtx: 0 differences
Comparison between serial/sol_x1_y2_a2_b2.mtx and parallel/sol_x1_y2_a2_b2.mtx: 0 differences
Comparison between serial/sol_x1_y2_a2_b3.mtx and parallel/sol_x1_y2_a2_b3.mtx: 0 differences
Comparison between serial/sol_x1_y2_a3_b1.mtx and parallel/sol_x1_y2_a3_b1.mtx: 0 differences
Comparison between serial/sol_x1_y2_a3_b2.mtx and parallel/sol_x1_y2_a3_b2.mtx: 0 differences
Comparison between serial/sol_x1_y2_a3_b3.mtx and parallel/sol_x1_y2_a3_b3.mtx: 0 differences
Comparison between serial/sol_x1_y3_a1_b1.mtx and parallel/sol_x1_y3_a1_b1.mtx: 0 differences
Comparison between serial/sol_x1_y3_a1_b2.mtx and parallel/sol_x1_y3_a1_b2.mtx: 0 differences
Comparison between serial/sol_x1_y3_a1_b3.mtx and parallel/sol_x1_y3_a1_b3.mtx: 0 differences
Comparison between serial/sol_x1_y3_a2_b1.mtx and parallel/sol_x1_y3_a2_b1.mtx: 0 differences
Comparison between serial/sol_x1_y3_a2_b2.mtx and parallel/sol_x1_y3_a2_b2.mtx: 0 differences
Comparison between serial/sol_x1_y3_a2_b3.mtx and parallel/sol_x1_y3_a2_b3.mtx: 0 differences
Comparison between serial/sol_x1_y3_a3_b1.mtx and parallel/sol_x1_y3_a3_b1.mtx: 0 differences
Comparison between serial/sol_x1_y3_a3_b2.mtx and parallel/sol_x1_y3_a3_b2.mtx: 0 differences
Comparison between serial/sol_x1_y3_a3_b3.mtx and parallel/sol_x1_y3_a3_b3.mtx: 0 differences
Comparison between serial/sol_x1_y4_a1_b1.mtx and parallel/sol_x1_y4_a1_b1.mtx: 0 differences
Comparison between serial/sol_x1_y4_a1_b2.mtx and parallel/sol_x1_y4_a1_b2.mtx: 0 differences
Comparison between serial/sol_x1_y4_a1_b3.mtx and parallel/sol_x1_y4_a1_b3.mtx: 0 differences
Comparison between serial/sol_x1_y4_a2_b1.mtx and parallel/sol_x1_y4_a2_b1.mtx: 0 differences
Comparison between serial/sol_x1_y4_a2_b2.mtx and parallel/sol_x1_y4_a2_b2.mtx: 0 differences
Comparison between serial/sol_x1_y4_a2_b3.mtx and parallel/sol_x1_y4_a2_b3.mtx: 0 differences
Comparison between serial/sol_x1_y4_a3_b1.mtx and parallel/sol_x1_y4_a3_b1.mtx: 0 differences
Comparison between serial/sol_x1_y4_a3_b2.mtx and parallel/sol_x1_y4_a3_b2.mtx: 0 differences
Comparison between serial/sol_x1_y4_a3_b3.mtx and parallel/sol_x1_y4_a3_b3.mtx: 0 differences
Comparison between serial/sol_x2_y1_a1_b1.mtx and parallel/sol_x2_y1_a1_b1.mtx: 0 differences
Comparison between serial/sol_x2_y1_a1_b2.mtx and parallel/sol_x2_y1_a1_b2.mtx: 0 differences
Comparison between serial/sol_x2_y1_a1_b3.mtx and parallel/sol_x2_y1_a1_b3.mtx: 0 differences
Comparison between serial/sol_x2_y1_a2_b1.mtx and parallel/sol_x2_y1_a2_b1.mtx: 0 differences
Comparison between serial/sol_x2_y1_a2_b2.mtx and parallel/sol_x2_y1_a2_b2.mtx: 0 differences
Comparison between serial/sol_x2_y1_a2_b3.mtx and parallel/sol_x2_y1_a2_b3.mtx: 0 differences
Comparison between serial/sol_x2_y1_a3_b1.mtx and parallel/sol_x2_y1_a3_b1.mtx: 0 differences
Comparison between serial/sol_x2_y1_a3_b2.mtx and parallel/sol_x2_y1_a3_b2.mtx: 0 differences
Comparison between serial/sol_x2_y1_a3_b3.mtx and parallel/sol_x2_y1_a3_b3.mtx: 0 differences
Comparison between serial/sol_x2_y2_a1_b1.mtx and parallel/sol_x2_y2_a1_b1.mtx: 0 differences
Comparison between serial/sol_x2_y2_a1_b2.mtx and parallel/sol_x2_y2_a1_b2.mtx: 0 differences
Comparison between serial/sol_x2_y2_a1_b3.mtx and parallel/sol_x2_y2_a1_b3.mtx: 0 differences
Comparison between serial/sol_x2_y2_a2_b1.mtx and parallel/sol_x2_y2_a2_b1.mtx: 0 differences
Comparison between serial/sol_x2_y2_a2_b2.mtx and parallel/sol_x2_y2_a2_b2.mtx: 0 differences
Comparison between serial/sol_x2_y2_a2_b3.mtx and parallel/sol_x2_y2_a2_b3.mtx: 0 differences
Comparison between serial/sol_x2_y2_a3_b1.mtx and parallel/sol_x2_y2_a3_b1.mtx: 0 differences
Comparison between serial/sol_x2_y2_a3_b2.mtx and parallel/sol_x2_y2_a3_b2.mtx: 0 differences
Comparison between serial/sol_x2_y2_a3_b3.mtx and parallel/sol_x2_y2_a3_b3.mtx: 0 differences
Comparison between serial/sol_x2_y3_a1_b1.mtx and parallel/sol_x2_y3_a1_b1.mtx: 0 differences
Comparison between serial/sol_x2_y3_a1_b2.mtx and parallel/sol_x2_y3_a1_b2.mtx: 0 differences
Comparison between serial/sol_x2_y3_a1_b3.mtx and parallel/sol_x2_y3_a1_b3.mtx: 0 differences
Comparison between serial/sol_x2_y3_a2_b1.mtx and parallel/sol_x2_y3_a2_b1.mtx: 0 differences
Comparison between serial/sol_x2_y3_a2_b2.mtx and parallel/sol_x2_y3_a2_b2.mtx: 0 differences
Comparison between serial/sol_x2_y3_a2_b3.mtx and parallel/sol_x2_y3_a2_b3.mtx: 0 differences
Comparison between serial/sol_x2_y3_a3_b1.mtx and parallel/sol_x2_y3_a3_b1.mtx: 0 differences
Comparison between serial/sol_x2_y3_a3_b2.mtx and parallel/sol_x2_y3_a3_b2.mtx: 0 differences
Comparison between serial/sol_x2_y3_a3_b3.mtx and parallel/sol_x2_y3_a3_b3.mtx: 0 differences
Comparison between serial/sol_x2_y4_a1_b1.mtx and parallel/sol_x2_y4_a1_b1.mtx: 0 differences
Comparison between serial/sol_x2_y4_a1_b2.mtx and parallel/sol_x2_y4_a1_b2.mtx: 0 differences
Comparison between serial/sol_x2_y4_a1_b3.mtx and parallel/sol_x2_y4_a1_b3.mtx: 0 differences
Comparison between serial/sol_x2_y4_a2_b1.mtx and parallel/sol_x2_y4_a2_b1.mtx: 0 differences
Comparison between serial/sol_x2_y4_a2_b2.mtx and parallel/sol_x2_y4_a2_b2.mtx: 0 differences
Comparison between serial/sol_x2_y4_a2_b3.mtx and parallel/sol_x2_y4_a2_b3.mtx: 0 differences
Comparison between serial/sol_x2_y4_a3_b1.mtx and parallel/sol_x2_y4_a3_b1.mtx: 0 differences
Comparison between serial/sol_x2_y4_a3_b2.mtx and parallel/sol_x2_y4_a3_b2.mtx: 0 differences
Comparison between serial/sol_x2_y4_a3_b3.mtx and parallel/sol_x2_y4_a3_b3.mtx: 0 differences
Comparison between serial/sol_x3_y1_a1_b1.mtx and parallel/sol_x3_y1_a1_b1.mtx: 0 differences
Comparison between serial/sol_x3_y1_a1_b2.mtx and parallel/sol_x3_y1_a1_b2.mtx: 0 differences
Comparison between serial/sol_x3_y1_a1_b3.mtx and parallel/sol_x3_y1_a1_b3.mtx: 0 differences
Comparison between serial/sol_x3_y1_a2_b1.mtx and parallel/sol_x3_y1_a2_b1.mtx: 0 differences
Comparison between serial/sol_x3_y1_a2_b2.mtx and parallel/sol_x3_y1_a2_b2.mtx: 0 differences
Comparison between serial/sol_x3_y1_a2_b3.mtx and parallel/sol_x3_y1_a2_b3.mtx: 0 differences
Comparison between serial/sol_x3_y1_a3_b1.mtx and parallel/sol_x3_y1_a3_b1.mtx: 0 differences
Comparison between serial/sol_x3_y1_a3_b2.mtx and parallel/sol_x3_y1_a3_b2.mtx: 0 differences
Comparison between serial/sol_x3_y1_a3_b3.mtx and parallel/sol_x3_y1_a3_b3.mtx: 0 differences
Comparison between serial/sol_x3_y2_a1_b1.mtx and parallel/sol_x3_y2_a1_b1.mtx: 0 differences
Comparison between serial/sol_x3_y2_a1_b2.mtx and parallel/sol_x3_y2_a1_b2.mtx: 0 differences
Comparison between serial/sol_x3_y2_a1_b3.mtx and parallel/sol_x3_y2_a1_b3.mtx: 0 differences
Comparison between serial/sol_x3_y2_a2_b1.mtx and parallel/sol_x3_y2_a2_b1.mtx: 0 differences
Comparison between serial/sol_x3_y2_a2_b2.mtx and parallel/sol_x3_y2_a2_b2.mtx: 0 differences
Comparison between serial/sol_x3_y2_a2_b3.mtx and parallel/sol_x3_y2_a2_b3.mtx: 0 differences
Comparison between serial/sol_x3_y2_a3_b1.mtx and parallel/sol_x3_y2_a3_b1.mtx: 0 differences
Comparison between serial/sol_x3_y2_a3_b2.mtx and parallel/sol_x3_y2_a3_b2.mtx: 0 differences
Comparison between serial/sol_x3_y2_a3_b3.mtx and parallel/sol_x3_y2_a3_b3.mtx: 0 differences
Comparison between serial/sol_x3_y3_a1_b1.mtx and parallel/sol_x3_y3_a1_b1.mtx: 0 differences
Comparison between serial/sol_x3_y3_a1_b2.mtx and parallel/sol_x3_y3_a1_b2.mtx: 0 differences
Comparison between serial/sol_x3_y3_a1_b3.mtx and parallel/sol_x3_y3_a1_b3.mtx: 0 differences
Comparison between serial/sol_x3_y3_a2_b1.mtx and parallel/sol_x3_y3_a2_b1.mtx: 0 differences
Comparison between serial/sol_x3_y3_a2_b2.mtx and parallel/sol_x3_y3_a2_b2.mtx: 0 differences
Comparison between serial/sol_x3_y3_a2_b3.mtx and parallel/sol_x3_y3_a2_b3.mtx: 0 differences
Comparison between serial/sol_x3_y3_a3_b1.mtx and parallel/sol_x3_y3_a3_b1.mtx: 0 differences
Comparison between serial/sol_x3_y3_a3_b2.mtx and parallel/sol_x3_y3_a3_b2.mtx: 0 differences
Comparison between serial/sol_x3_y3_a3_b3.mtx and parallel/sol_x3_y3_a3_b3.mtx: 0 differences
Comparison between serial/sol_x3_y4_a1_b1.mtx and parallel/sol_x3_y4_a1_b1.mtx: 0 differences
Comparison between serial/sol_x3_y4_a1_b2.mtx and parallel/sol_x3_y4_a1_b2.mtx: 0 differences
Comparison between serial/sol_x3_y4_a1_b3.mtx and parallel/sol_x3_y4_a1_b3.mtx: 0 differences
Comparison between serial/sol_x3_y4_a2_b1.mtx and parallel/sol_x3_y4_a2_b1.mtx: 0 differences
Comparison between serial/sol_x3_y4_a2_b2.mtx and parallel/sol_x3_y4_a2_b2.mtx: 0 differences
Comparison between serial/sol_x3_y4_a2_b3.mtx and parallel/sol_x3_y4_a2_b3.mtx: 0 differences
Comparison between serial/sol_x3_y4_a3_b1.mtx and parallel/sol_x3_y4_a3_b1.mtx: 0 differences
Comparison between serial/sol_x3_y4_a3_b2.mtx and parallel/sol_x3_y4_a3_b2.mtx: 0 differences
Comparison between serial/sol_x3_y4_a3_b3.mtx and parallel/sol_x3_y4_a3_b3.mtx: 0 differences
Comparison between serial/sol_x4_y1_a1_b1.mtx and parallel/sol_x4_y1_a1_b1.mtx: 0 differences
Comparison between serial/sol_x4_y1_a1_b2.mtx and parallel/sol_x4_y1_a1_b2.mtx: 0 differences
Comparison between serial/sol_x4_y1_a1_b3.mtx and parallel/sol_x4_y1_a1_b3.mtx: 0 differences
Comparison between serial/sol_x4_y1_a2_b1.mtx and parallel/sol_x4_y1_a2_b1.mtx: 0 differences
Comparison between serial/sol_x4_y1_a2_b2.mtx and parallel/sol_x4_y1_a2_b2.mtx: 0 differences
Comparison between serial/sol_x4_y1_a2_b3.mtx and parallel/sol_x4_y1_a2_b3.mtx: 0 differences
Comparison between serial/sol_x4_y1_a3_b1.mtx and parallel/sol_x4_y1_a3_b1.mtx: 0 differences
Comparison between serial/sol_x4_y1_a3_b2.mtx and parallel/sol_x4_y1_a3_b2.mtx: 0 differences
Comparison between serial/sol_x4_y1_a3_b3.mtx and parallel/sol_x4_y1_a3_b3.mtx: 0 differences
Comparison between serial/sol_x4_y2_a1_b1.mtx and parallel/sol_x4_y2_a1_b1.mtx: 0 differences
Comparison between serial/sol_x4_y2_a1_b2.mtx and parallel/sol_x4_y2_a1_b2.mtx: 0 differences
Comparison between serial/sol_x4_y2_a1_b3.mtx and parallel/sol_x4_y2_a1_b3.mtx: 0 differences
Comparison between serial/sol_x4_y2_a2_b1.mtx and parallel/sol_x4_y2_a2_b1.mtx: 0 differences
Comparison between serial/sol_x4_y2_a2_b2.mtx and parallel/sol_x4_y2_a2_b2.mtx: 0 differences
Comparison between serial/sol_x4_y2_a2_b3.mtx and parallel/sol_x4_y2_a2_b3.mtx: 0 differences
Comparison between serial/sol_x4_y2_a3_b1.mtx and parallel/sol_x4_y2_a3_b1.mtx: 0 differences
Comparison between serial/sol_x4_y2_a3_b2.mtx and parallel/sol_x4_y2_a3_b2.mtx: 0 differences
Comparison between serial/sol_x4_y2_a3_b3.mtx and parallel/sol_x4_y2_a3_b3.mtx: 0 differences
Comparison between serial/sol_x4_y3_a1_b1.mtx and parallel/sol_x4_y3_a1_b1.mtx: 0 differences
Comparison between serial/sol_x4_y3_a1_b2.mtx and parallel/sol_x4_y3_a1_b2.mtx: 0 differences
Comparison between serial/sol_x4_y3_a1_b3.mtx and parallel/sol_x4_y3_a1_b3.mtx: 0 differences
Comparison between serial/sol_x4_y3_a2_b1.mtx and parallel/sol_x4_y3_a2_b1.mtx: 0 differences
Comparison between serial/sol_x4_y3_a2_b2.mtx and parallel/sol_x4_y3_a2_b2.mtx: 0 differences
Comparison between serial/sol_x4_y3_a2_b3.mtx and parallel/sol_x4_y3_a2_b3.mtx: 0 differences
Comparison between serial/sol_x4_y3_a3_b1.mtx and parallel/sol_x4_y3_a3_b1.mtx: 0 differences
Comparison between serial/sol_x4_y3_a3_b2.mtx and parallel/sol_x4_y3_a3_b2.mtx: 0 differences
Comparison between serial/sol_x4_y3_a3_b3.mtx and parallel/sol_x4_y3_a3_b3.mtx: 0 differences
Comparison between serial/sol_x4_y4_a1_b1.mtx and parallel/sol_x4_y4_a1_b1.mtx: 0 differences
Comparison between serial/sol_x4_y4_a1_b2.mtx and parallel/sol_x4_y4_a1_b2.mtx: 0 differences
Comparison between serial/sol_x4_y4_a1_b3.mtx and parallel/sol_x4_y4_a1_b3.mtx: 0 differences
Comparison between serial/sol_x4_y4_a2_b1.mtx and parallel/sol_x4_y4_a2_b1.mtx: 0 differences
Comparison between serial/sol_x4_y4_a2_b2.mtx and parallel/sol_x4_y4_a2_b2.mtx: 0 differences
Comparison between serial/sol_x4_y4_a2_b3.mtx and parallel/sol_x4_y4_a2_b3.mtx: 0 differences
Comparison between serial/sol_x4_y4_a3_b1.mtx and parallel/sol_x4_y4_a3_b1.mtx: 0 differences
Comparison between serial/sol_x4_y4_a3_b2.mtx and parallel/sol_x4_y4_a3_b2.mtx: 0 differences
Comparison between serial/sol_x4_y4_a3_b3.mtx and parallel/sol_x4_y4_a3_b3.mtx: 0 differences

@ -26,7 +26,7 @@ Check the correctness of the matrix-vector multiplication $y = Ax$ using the **p
## Test Suite
### Overall Analysys
THe subroutine psb_spmm materialize in three different procedures:
The subroutine psb_spmm materialize in three different procedures:
```psb_sspmm```, ```psb_sspmv```, ```psb_sspmv_vect```. The focus is on testing the ```psb_sspmv``` one, so as first step let's analyze the signature of the function to study a satisfyng input parameter space. The signature of the function is:
```fortran
psb_sspmv(alpha, a, x, beta, y,&

@ -118,6 +118,7 @@ module psb_spmm_test
output_file_name = "parallel/"
end if
! Insert matrix number in output file naming convention
output_file_name = output_file_name // "sol_" // x_file(9:10) // "_" // y_file(9:10)
if(alpha == sone) then

Loading…
Cancel
Save