Files
TheRock/rocm-libraries/projects/rocsolver/scripts/spdata/print_mat.m
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

170 lines
3.4 KiB
Matlab

% ********************************************************************
% Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
% ********************************************************************
function isok = print_mat(matname,A)
%{
-----------------------------------------------------------
This function prints into files ptr, ind and val the
arrays corresponding to the sparse matrix A.
isok = print_mat(matname, A)
Inputs:
matname The common suffix added to the generated files names
A Sparse matrix to be printed
Outputs:
isok This will be -1 if any of the file operations failed
The resulting files
ptr{matname}
ind{matname}
val{matname}
are created in the working directory.
(This script is for internal use only. It is not part of
rocSOLVER library interface and could change or be removed
without any notice)
-----------------------------------------------------------
%}
% -----------------------
% open files
% -----------------------
[ptr,msg] = fopen(strcat("ptr",matname),'w');
isok = (ptr >= 0);
if (!isok),
error(sprintf('print_mat: fopen returns %s', msg));
return;
end
[ind,msg] = fopen(strcat("ind",matname),'w');
isok = (ind >= 0);
if (!isok),
error( sprintf('print_mat: fopen returns %s', msg));
return;
end
[val,msg] = fopen( strcat("val",matname) , 'w');
isok = (val >= 0);
if (!isok),
error( sprintf('print_mat: fopen returns %s', msg));
return;
end
nrows = size(A,1);
ncols = size(A,2);
nnzA = nnz(A);
[ii,jj,aij] = find(A);
% -----------------------
% sort sparse matrix by rows and colums
% -----------------------
ipos = ii * ncols + jj;
[dummy, idx ] = sort( ipos);
clear dummy
ii = ii(idx);
jj = jj(idx);
aij = aij(idx);
% ----------------------
% print ptr
% ----------------------
cc = 0;
istat = fprintf(ptr,'%d ',cc);
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end
for i=1:nrows-1,
cc = cc + sum(ii == i);
istat = fprintf(ptr,'%d ',cc);
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
end;
cc = cc + sum(ii == nrows);
if (cc != nnzA),
sprintf('error calculating ptr');
end;
istat = fprintf(ptr,'%d',cc);
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
istat = fclose(ptr);
isok = (istat == 0);
if (!isok),
error(sprintf('print_mat: fclose returns istat=%d',istat));
return;
end;
% ----------------------
% print ind and val
% ----------------------
for i=1:nnzA-1,
istat = fprintf(ind,'%d ',jj(i)-1);
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
istat = fprintf(val,'%1.17g ',aij(i));
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
end;
istat = fprintf(ind,'%d',jj(nnzA)-1);
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
istat = fprintf(val,'%1.17g',aij(nnzA));
isok = (istat >= 0);
if (!isok),
error(sprintf('print_mat: fprintf returns istat=%d',istat));
return;
end;
istat = fclose(ind);
isok = (istat == 0);
if (!isok),
error(sprintf('print_mat: fclose returns istat=%d',istat));
return;
end;
istat = fclose(val);
isok = (istat == 0);
if (!isok),
error(sprintf('print_mat: fclose returns istat=%d',istat));
return;
end;
end