From d3141c6b4c471db00eaed627caa58878dc88936c Mon Sep 17 00:00:00 2001 From: Joachim Wolff Date: Wed, 26 Jun 2019 16:51:20 +0000 Subject: [PATCH] Fixing 64-bit issue --- src/krbalancing.cpp | 30 +++++++++++++++--------------- src/krbalancing.hpp | 22 +++++++++++----------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/krbalancing.cpp b/src/krbalancing.cpp index ab95b34..e6f4fc6 100644 --- a/src/krbalancing.cpp +++ b/src/krbalancing.cpp @@ -13,10 +13,10 @@ // rescaled = false; // } -kr_balancing::kr_balancing(const size_t &input_rows, const size_t &input_cols, - const size_t &input_nnz, - const Eigen::Ref input_indptr, - const Eigen::Ref input_indices, +kr_balancing::kr_balancing(const int64_t &input_rows, const int64_t &input_cols, + const int64_t &input_nnz, + const Eigen::Ref input_indptr, + const Eigen::Ref input_indices, const Eigen::Ref input_values) { @@ -26,9 +26,9 @@ kr_balancing::kr_balancing(const size_t &input_rows, const size_t &input_cols, std::vector triplets; triplets.reserve(input_nnz); - size_t i = 0; - size_t j_start = 0; - size_t j_end = 0; + int64_t i = 0; + int64_t j_start = 0; + int64_t j_end = 0; while (i < input_indptr.size() - 1) { j_start = input_indptr(i); @@ -36,7 +36,7 @@ kr_balancing::kr_balancing(const size_t &input_rows, const size_t &input_cols, while (j_start < j_end) { - triplets.push_back(T(i, size_t(input_indices(j_start)), + triplets.push_back(T(i, int64_t(input_indices(j_start)), float(input_values(j_start)))); j_start++; } @@ -75,7 +75,7 @@ void kr_balancing::computeKR() void kr_balancing::outer_loop() { - size_t outer_loop_count = 0; + int64_t outer_loop_count = 0; double stop_tol = tol * 0.5; double eta = etamax; double rt = tol * tol; @@ -83,7 +83,7 @@ void kr_balancing::outer_loop() double rold = rout; if (fl == 1) std::cout << "intermediate convergence statistics is off" << std::endl; - size_t nochange = 0; + int64_t nochange = 0; while (rout > rt) { //outer itteration outer_loop_count++; @@ -168,7 +168,7 @@ void kr_balancing::inner_loop() if (delta == 0) break; Eigen::Matrix ind_helper = (ap.array() < 0); - VectorXsize_t ind = VectorXsize_t::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1); + VectorXint64 ind = VectorXint64::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1); ind.conservativeResize(std::stable_partition( ind.data(), ind.data() + ind.size(), [&ind_helper](int i) { return ind_helper(i); }) - ind.data()); @@ -185,7 +185,7 @@ void kr_balancing::inner_loop() if (ynew.maxCoeff() >= Delta) { Eigen::Matrix ind_helper = (ynew.array() > Delta); - VectorXsize_t ind = VectorXsize_t::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1); + VectorXint64 ind = VectorXint64::LinSpaced(ind_helper.size(), 0, ind_helper.size() - 1); ind.conservativeResize(std::stable_partition( ind.data(), ind.data() + ind.size(), [&ind_helper](size_t i) { return ind_helper(i); }) - ind.data()); @@ -284,9 +284,9 @@ const SparseMatrixCol *kr_balancing::get_normalisation_vector(bool &rescale) PYBIND11_MODULE(krbalancing, m) { py::class_(m, "kr_balancing") - .def(py::init, - const Eigen::Ref, + .def(py::init, + const Eigen::Ref, const Eigen::Ref>()) .def("computeKR", &kr_balancing::computeKR) .def("get_normalisation_vector", &kr_balancing::get_normalisation_vector, diff --git a/src/krbalancing.hpp b/src/krbalancing.hpp index 98f9128..1db0273 100644 --- a/src/krbalancing.hpp +++ b/src/krbalancing.hpp @@ -23,18 +23,18 @@ #include namespace py = pybind11; -typedef Eigen::Matrix VectorXsize_t; +typedef Eigen::Matrix VectorXint64; -using SparseMatrixCol = Eigen::SparseMatrix; +using SparseMatrixCol = Eigen::SparseMatrix; size_t num_threads = 10; //TODO add it as an argument to be set by user class kr_balancing { public: - kr_balancing(const size_t &input_rows, const size_t &input_cols, - const size_t &input_nnz, - const Eigen::Ref input_outer, - const Eigen::Ref input_inner, + kr_balancing(const int64_t &input_rows, const int64_t &input_cols, + const int64_t &input_nnz, + const Eigen::Ref input_outer, + const Eigen::Ref input_inner, const Eigen::Ref input_values); ~kr_balancing() {} void computeKR(); @@ -47,8 +47,8 @@ class kr_balancing private: std::vector res; - unsigned int fl = 0; //0 = on , 1 = off - unsigned int Delta = 3; + int fl = 0; //0 = on , 1 = off + int Delta = 3; double delta = 0.1; double tol = 1e-6; double g = 0.9; @@ -57,13 +57,13 @@ class kr_balancing SparseMatrixCol A; SparseMatrixCol rho_km1; SparseMatrixCol rho_km2; - unsigned int k; + int k; Eigen::VectorXd y; SparseMatrixCol p; SparseMatrixCol Z; double innertol; - unsigned int i = 0; //Outer itteration count - unsigned int MVP = 0; + int i = 0; //Outer itteration count + int MVP = 0; SparseMatrixCol v; SparseMatrixCol x; Eigen::SparseVector rk;