/home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_symbolic_cudss.hpp Source File

Kynema API: /home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_symbolic_cudss.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
dss_symbolic_cudss.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Kokkos_Core.hpp>
4#include <cudss.h>
5
6#include "dss_algorithm.hpp"
8
9namespace kynema::dss {
10template <typename CrsMatrixType>
11struct SymbolicFunction<Handle<Algorithm::CUDSS>, CrsMatrixType> {
12 static void symbolic(Handle<Algorithm::CUDSS>& dss_handle, CrsMatrixType& A) {
13 const auto num_rows = A.numRows();
14 const auto num_cols = A.numCols();
15 const auto num_non_zero = A.nnz();
16
17 auto* values = A.values.data();
18 auto* row_ptrs = A.graph.row_map.data();
19 auto* col_inds = A.graph.entries.data();
20
21 auto& handle = dss_handle.get_handle();
22 auto& config = dss_handle.get_config();
23 auto& data = dss_handle.get_data();
24
25 cudssMatrix_t A_cudss;
26 cudssMatrix_t x_cudss;
27 cudssMatrix_t b_cudss;
28
29 cudssMatrixCreateCsr(
30 &A_cudss, num_rows, num_cols, num_non_zero, const_cast<int*>(row_ptrs), nullptr,
31 col_inds, values, CUDA_R_32I, CUDA_R_64F, CUDSS_MTYPE_GENERAL, CUDSS_MVIEW_FULL,
32 CUDSS_BASE_ZERO
33 );
34 cudssMatrixCreateDn(
35 &b_cudss, num_cols, 1, num_cols, nullptr, CUDA_R_64F, CUDSS_LAYOUT_COL_MAJOR
36 );
37 cudssMatrixCreateDn(
38 &x_cudss, num_rows, 1, num_rows, nullptr, CUDA_R_64F, CUDSS_LAYOUT_COL_MAJOR
39 );
40
41 cudssExecute(handle, CUDSS_PHASE_ANALYSIS, config, data, A_cudss, x_cudss, b_cudss);
42 dss_handle.set_initial_factorization(true);
43
44 cudssMatrixDestroy(A_cudss);
45 cudssMatrixDestroy(b_cudss);
46 cudssMatrixDestroy(x_cudss);
47 }
48};
49
50} // namespace kynema::dss
Definition dss_handle.hpp:10
Definition dss_algorithm.hpp:4
Algorithm
Definition dss_algorithm.hpp:6
static void symbolic(Handle< Algorithm::CUDSS > &dss_handle, CrsMatrixType &A)
Definition dss_symbolic_cudss.hpp:12
Definition dss_symbolic.hpp:8