Skip to content

Commit

Permalink
feat(symmetric): rename FrontalMatrixGPUSymmetric to FrontalMatrixGPU…
Browse files Browse the repository at this point in the history
…SymmetricPositiveDefinite
  • Loading branch information
GitHubbeer committed Jan 12, 2024
1 parent 4e3fcb4 commit 31d3a13
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 56 deletions.
12 changes: 6 additions & 6 deletions examples/sparse/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ add_executable(testPoisson2d EXCLUDE_FROM_ALL testPoisson2d.cpp)
add_executable(testMMdouble EXCLUDE_FROM_ALL testMMdouble.cpp)
add_executable(testPoisson3d EXCLUDE_FROM_ALL testPoisson3d.cpp)
add_executable(testMixedPrecision EXCLUDE_FROM_ALL testMixedPrecision.cpp)
add_executable(testMixedPrecisionSymmetric EXCLUDE_FROM_ALL testMixedPrecisionSymmetric.cpp)
add_executable(testSymmetric EXCLUDE_FROM_ALL testSymmetric.cpp)
add_executable(testMixedPrecisionSymmetricPositiveDefinite EXCLUDE_FROM_ALL testMixedPrecisionSymmetricPositiveDefinite.cpp)
add_executable(testSymmetricPositiveDefinite EXCLUDE_FROM_ALL testSymmetricPositiveDefinite.cpp)
add_executable(sexample EXCLUDE_FROM_ALL sexample.c)
add_executable(dexample EXCLUDE_FROM_ALL dexample.c)
add_executable(cexample EXCLUDE_FROM_ALL cexample.c)
Expand All @@ -15,8 +15,8 @@ target_link_libraries(testPoisson2d strumpack)
target_link_libraries(testMMdouble strumpack)
target_link_libraries(testPoisson3d strumpack)
target_link_libraries(testMixedPrecision strumpack)
target_link_libraries(testMixedPrecisionSymmetric strumpack)
target_link_libraries(testSymmetric strumpack)
target_link_libraries(testMixedPrecisionSymmetricPositiveDefinite strumpack)
target_link_libraries(testSymmetricPositiveDefinite strumpack)
target_link_libraries(sexample strumpack)
target_link_libraries(dexample strumpack)
target_link_libraries(cexample strumpack)
Expand All @@ -28,8 +28,8 @@ add_dependencies(examples
testMMdouble
testPoisson3d
testMixedPrecision
testMixedPrecisionSymmetric
testSymmetric
testMixedPrecisionSymmetricPositiveDefinite
testSymmetricPositiveDefinite
sexample
dexample
cexample
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,17 @@ void test(CSRMatrix<working_t,int>& A,

int main(int argc, char* argv[]) {

std::cout << "long double size in bytes: "
<< sizeof(long double) << " "
<< std::endl;

std::string f="/home/tingxuan/CLionProjects/nd6k/matrix.mtx";
if (argc > 1) f = std::string(argv[1]);

CSRMatrix<double,int> A_d;
A_d.read_matrix_market(f);
// auto A_f = cast_matrix<double,int,float>(A_d);
if(argc > 1){
A_d.read_matrix_market(argv[1]);
}else{
int n =3;
int ptr[4] = {0,2,3,5};
int Index[5] = {0,2,1,0,2};
double val[5] = {2.1,1,3.5,1,5.2};
A_d = CSRMatrix<double,int>(n, ptr, Index, val);
}


int N = A_d.size();
int m = 1; // nr of RHSs
Expand Down
6 changes: 3 additions & 3 deletions src/sparse/fronts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ if(STRUMPACK_USE_CUDA OR STRUMPACK_USE_HIP OR STRUMPACK_USE_SYCL)
PRIVATE
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPU.cpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPU.hpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetric.cpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetric.hpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetricPositiveDefinite.cpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetricPositiveDefinite.hpp
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUKernels.hpp)

endif()
Expand All @@ -51,7 +51,7 @@ endif()
if(STRUMPACK_USE_CUDA)
target_sources(strumpack PRIVATE
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixCUDA.cu
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetric.cu)
${CMAKE_CURRENT_LIST_DIR}/FrontalMatrixGPUSymmetricPositiveDefinite.cu)
endif()

if(STRUMPACK_USE_SYCL)
Expand Down
4 changes: 2 additions & 2 deletions src/sparse/fronts/FrontFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
#endif
#if defined(STRUMPACK_USE_GPU)
#include "FrontalMatrixGPU.hpp"
#include "FrontalMatrixGPUSymmetric.hpp"
#include "FrontalMatrixGPUSymmetricPositiveDefinite.hpp"
#endif
#if defined(STRUMPACK_USE_ZFP)
#include "FrontalMatrixLossy.hpp"
Expand Down Expand Up @@ -146,7 +146,7 @@ namespace strumpack {
#if defined(STRUMPACK_USE_GPU)
if (is_symmetric(opts) && is_positive_definite(opts)){
front.reset
(new FrontalMatrixGPUSymmetric<scalar_t,integer_t>(s, sbegin, send, upd));
(new FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>(s, sbegin, send, upd));
} else {
front.reset
(new FrontalMatrixGPU<scalar_t,integer_t>(s, sbegin, send, upd));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
*/
#include <array>

#include "FrontalMatrixGPUSymmetric.hpp"
#include "FrontalMatrixGPUSymmetricPositiveDefinite.hpp"
#include "FrontalMatrixGPUKernels.hpp"

#if defined(STRUMPACK_USE_MPI)
Expand All @@ -43,7 +43,7 @@ namespace strumpack {

template<typename scalar_t, typename integer_t> class LevelInfoUnified {
using F_t = FrontalMatrix<scalar_t,integer_t>;
using FG_t = FrontalMatrixGPUSymmetric<scalar_t,integer_t>;
using FG_t = FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>;
using DenseMW_t = DenseMatrixWrapper<scalar_t>;
using SpMat_t = CompressedSparseMatrix<scalar_t,integer_t>;

Expand Down Expand Up @@ -310,13 +310,13 @@ namespace strumpack {


template<typename scalar_t,typename integer_t>
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::FrontalMatrixGPUSymmetric
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::FrontalMatrixGPUSymmetricPositiveDefinite
(integer_t sep, integer_t sep_begin, integer_t sep_end,
std::vector<integer_t>& upd)
: F_t(nullptr, nullptr, sep, sep_begin, sep_end, upd) {}

template<typename scalar_t,typename integer_t>
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::~FrontalMatrixGPUSymmetric() {
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::~FrontalMatrixGPUSymmetricPositiveDefinite() {
#if defined(STRUMPACK_COUNT_FLOPS)
const std::size_t dupd = dim_upd();
const std::size_t dsep = dim_sep();
Expand All @@ -325,14 +325,14 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::release_work_memory() {
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::release_work_memory() {
F22_.clear();
host_Schur_.reset(nullptr);
}

#if defined(STRUMPACK_USE_MPI)
template<typename scalar_t,typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::extend_add_copy_to_buffers
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::extend_add_copy_to_buffers
(std::vector<std::vector<scalar_t>>& sbuf,
const FrontalMatrixMPI<scalar_t,integer_t>* pa) const {
ExtendAdd<scalar_t,integer_t>::extend_add_seq_copy_to_buffers
Expand All @@ -342,7 +342,7 @@ namespace strumpack {


template<typename scalar_t,typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::extend_add_to_dense
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::extend_add_to_dense
(DenseM_t& paF11, DenseM_t& paF21, DenseM_t& paF22,
const F_t* p, int task_depth) {
const std::size_t pdsep = paF11.rows();
Expand Down Expand Up @@ -390,7 +390,7 @@ namespace strumpack {
}

template<typename scalar_t, typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::front_assembly
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::front_assembly
(const SpMat_t& A, LInfo_t& L, char* hea_mem, char* dea_mem) {
using Trip_t = Triplet<scalar_t>;
auto N = L.f.size();
Expand Down Expand Up @@ -436,13 +436,13 @@ namespace strumpack {

// TODO(Jie): fix for un-symmetric
template<typename scalar_t, typename integer_t> long long
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::dense_node_factor_nonzeros() const {
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::dense_node_factor_nonzeros() const {
long long dsep = dim_sep(), dupd = dim_upd();
return dsep * (dsep + dupd);
}

template<typename scalar_t, typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::factor_small_fronts
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::factor_small_fronts
(LInfo_t& L, gpu::FrontData<scalar_t>* fdata, int* dinfo,
const SPOptions<scalar_t>& opts) {
if (!L.small_fronts) return;
Expand All @@ -468,7 +468,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> ReturnCode
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::split_smaller
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::split_smaller
(const SpMat_t& A, const SPOptions<scalar_t>& opts,
int etree_level, int task_depth) {
if (opts.verbose())
Expand Down Expand Up @@ -566,7 +566,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t>
ReturnCode FrontalMatrixGPUSymmetric<scalar_t, integer_t>::multifrontal_factorization_symmetric(
ReturnCode FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t, integer_t>::multifrontal_factorization_symmetric(
const SpMat_t& A,
const SPOptions<scalar_t>& opts,
int etree_level, int task_depth) {
Expand Down Expand Up @@ -858,7 +858,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> ReturnCode
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::multifrontal_factorization
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::multifrontal_factorization
(const SpMat_t& A, const SPOptions<scalar_t>& opts,
int etree_level, int task_depth) {
if (!A.symm_sparse()) {
Expand All @@ -870,7 +870,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::fwd_solve_phase2
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::fwd_solve_phase2
(DenseM_t& b, DenseM_t& bupd, int etree_level, int task_depth) const {
if (dim_sep()) {
DenseMW_t bloc(dim_sep(), b.cols(), b, this->sep_begin_, 0);
Expand All @@ -888,7 +888,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> void
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::bwd_solve_phase1
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::bwd_solve_phase1
(DenseM_t& y, DenseM_t& yupd, int etree_level, int task_depth) const {
if (dim_sep()) {
DenseMW_t yloc(dim_sep(), y.cols(), y, this->sep_begin_, 0);
Expand All @@ -906,7 +906,7 @@ namespace strumpack {
}

template<typename scalar_t,typename integer_t> ReturnCode
FrontalMatrixGPUSymmetric<scalar_t,integer_t>::node_inertia
FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>::node_inertia
(integer_t& neg, integer_t& zero, integer_t& pos) const {
using real_t = typename RealType<scalar_t>::value_type;
for (std::size_t i=0; i<F11_.rows(); i++) {
Expand Down Expand Up @@ -1076,19 +1076,19 @@ namespace strumpack {
};

// explicit template instantiations
template class FrontalMatrixGPUSymmetric<float,int>;
template class FrontalMatrixGPUSymmetric<double,int>;
template class FrontalMatrixGPUSymmetric<std::complex<float>,int>;
template class FrontalMatrixGPUSymmetric<std::complex<double>,int>;

template class FrontalMatrixGPUSymmetric<float,long int>;
template class FrontalMatrixGPUSymmetric<double,long int>;
template class FrontalMatrixGPUSymmetric<std::complex<float>,long int>;
template class FrontalMatrixGPUSymmetric<std::complex<double>,long int>;

template class FrontalMatrixGPUSymmetric<float,long long int>;
template class FrontalMatrixGPUSymmetric<double,long long int>;
template class FrontalMatrixGPUSymmetric<std::complex<float>,long long int>;
template class FrontalMatrixGPUSymmetric<std::complex<double>,long long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<float,int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<double,int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<float>,int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<double>,int>;

template class FrontalMatrixGPUSymmetricPositiveDefinite<float,long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<double,long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<float>,long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<double>,long int>;

template class FrontalMatrixGPUSymmetricPositiveDefinite<float,long long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<double,long long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<float>,long long int>;
template class FrontalMatrixGPUSymmetricPositiveDefinite<std::complex<double>,long long int>;

} // end namespace strumpack
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ namespace strumpack {
}


template<typename scalar_t,typename integer_t> class FrontalMatrixGPUSymmetric
template<typename scalar_t,typename integer_t> class FrontalMatrixGPUSymmetricPositiveDefinite
: public FrontalMatrix<scalar_t,integer_t> {
using F_t = FrontalMatrix<scalar_t,integer_t>;
using FG_t = FrontalMatrixGPUSymmetric<scalar_t,integer_t>;
using FG_t = FrontalMatrixGPUSymmetricPositiveDefinite<scalar_t,integer_t>;
using DenseM_t = DenseMatrix<scalar_t>;
using DenseMW_t = DenseMatrixWrapper<scalar_t>;
using SpMat_t = CompressedSparseMatrix<scalar_t,integer_t>;
using LInfo_t = LevelInfoUnified<scalar_t,integer_t>;

public:
FrontalMatrixGPUSymmetric(integer_t sep, integer_t sep_begin, integer_t sep_end,
FrontalMatrixGPUSymmetricPositiveDefinite(integer_t sep, integer_t sep_begin, integer_t sep_end,
std::vector<integer_t>& upd);
~FrontalMatrixGPUSymmetric();
~FrontalMatrixGPUSymmetricPositiveDefinite();

long long dense_node_factor_nonzeros() const override;

Expand Down Expand Up @@ -78,8 +78,8 @@ namespace strumpack {
std::vector<int> pivot_mem_;
int* piv_ = nullptr;

FrontalMatrixGPUSymmetric(const FrontalMatrixGPUSymmetric&) = delete;
FrontalMatrixGPUSymmetric& operator=(FrontalMatrixGPUSymmetric const&) = delete;
FrontalMatrixGPUSymmetricPositiveDefinite(const FrontalMatrixGPUSymmetricPositiveDefinite&) = delete;
FrontalMatrixGPUSymmetricPositiveDefinite& operator=(FrontalMatrixGPUSymmetricPositiveDefinite const&) = delete;

void front_assembly(const SpMat_t& A, LInfo_t& L,
char* hea_mem, char* dea_mem);
Expand Down

0 comments on commit 31d3a13

Please sign in to comment.