Skip to content

Commit

Permalink
Add reordering function.
Browse files Browse the repository at this point in the history
  • Loading branch information
ypodlesov committed May 19, 2024
1 parent f8ddea6 commit 4e9025c
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 24 deletions.
6 changes: 3 additions & 3 deletions matrix_powers_mv/matrix_powers_mv.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#include "matrix_powers_mv.h"

int ReorderMatrix(const SparseMatrix<double>& sp_matrix) {
int ReorderMatrix(const SparseMatrix<double>& sp_matrix, idx_t* perm, idx_t* iperm) {
SparseMatrix<double> a_no_diag;
sp_matrix.RemoveDiag(a_no_diag);
idx_t* perm = new idx_t[a_no_diag.row_cnt_];
idx_t* iperm = new idx_t[a_no_diag.row_cnt_];
perm = new idx_t[a_no_diag.row_cnt_];
iperm = new idx_t[a_no_diag.row_cnt_];
idx_t options[METIS_NOPTIONS];
METIS_SetDefaultOptions(options);
options[METIS_OPTION_NUMBERING] = 0;
Expand Down
2 changes: 1 addition & 1 deletion matrix_powers_mv/matrix_powers_mv.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
#include <sparse_matrix.h>
#include <vector.h>

int ReorderMatrix(const SparseMatrix<double>& sp_matrix);
int ReorderMatrix(const SparseMatrix<double>& sp_matrix, idx_t* perm, idx_t* iperm);
void MatrixPowersMV(const SparseMatrix<double>& sp_matrix, const Vector<double>& x, const Vector<Vector<double>*>& res);
42 changes: 22 additions & 20 deletions matrix_powers_mv/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
static void Test(const uint32_t n) {
SparseMatrix<double> a_no_diag;
SparseMatrix<double> a;
idx_t* perm{nullptr};
idx_t* iperm{nullptr};
{
std::stringstream file_name;
file_name << std::filesystem::current_path().string() << "/../" << "matrix_examples/sparse_spd/" << n;
Expand All @@ -21,29 +23,29 @@ static void Test(const uint32_t n) {
fstream >> a;
fstream.close();
REQUIRE(a.data_);
SparseMatrix<double> a_no_diag;
a.RemoveDiag(a_no_diag);
idx_t* perm = new idx_t[a_no_diag.row_cnt_];
idx_t* iperm = new idx_t[a_no_diag.row_cnt_];
idx_t options[METIS_NOPTIONS];
METIS_SetDefaultOptions(options);
options[METIS_OPTION_NUMBERING] = 0;
// int METIS_NodeND(idx_t *nvtxs, idx_t *xadj, idx_t *adjncy, idx_t *vwgt,
// idx_t *options, idx_t *perm, idx_t *iperm);
// SparseMatrix<double> a_no_diag;
// a.RemoveDiag(a_no_diag);
// idx_t* perm = new idx_t[a_no_diag.row_cnt_];
// idx_t* iperm = new idx_t[a_no_diag.row_cnt_];
// idx_t options[METIS_NOPTIONS];
// METIS_SetDefaultOptions(options);
// options[METIS_OPTION_NUMBERING] = 0;
// // int METIS_NodeND(idx_t *nvtxs, idx_t *xadj, idx_t *adjncy, idx_t *vwgt,
// // idx_t *options, idx_t *perm, idx_t *iperm);

int result = METIS_NodeND(
&a_no_diag.row_cnt_
, a_no_diag.i_a_
, a_no_diag.j_a_
, nullptr
, options
, perm
, iperm
);
REQUIRE(result == METIS_OK);
// int result = METIS_NodeND(
// &a_no_diag.row_cnt_
// , a_no_diag.i_a_
// , a_no_diag.j_a_
// , nullptr
// , options
// , perm
// , iperm
// );
// REQUIRE(result == METIS_OK);
}

// REQUIRE(ReorderMatrix(a_no_diag) == METIS_OK);
REQUIRE(ReorderMatrix(a, perm, iperm) == METIS_OK);
}

TEST_CASE("Size 128") {
Expand Down

0 comments on commit 4e9025c

Please sign in to comment.