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

Kynema API: /home/runner/work/kynema/kynema/kynema/src/solver/linear_solver/dss_solve_cusolversp.hpp Source File
Kynema API
A flexible multibody structural dynamics code for wind turbines
Loading...
Searching...
No Matches
dss_solve_cusolversp.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Kokkos_Core.hpp>
4#include <cusolverSp.h>
5#include <cusolverSp_LOWLEVEL_PREVIEW.h>
6
7#include "dss_algorithm.hpp"
9
10namespace kynema::dss {
11template <typename CrsMatrixType, typename MultiVectorType>
12struct SolveFunction<Handle<Algorithm::CUSOLVER_SP>, CrsMatrixType, MultiVectorType> {
13 static void solve(
14 Handle<Algorithm::CUSOLVER_SP>& dss_handle, CrsMatrixType& A, MultiVectorType& b,
15 MultiVectorType& x
16 ) {
17 const auto num_rows = A.numRows();
18 const auto num_cols = A.numCols();
19 const auto num_non_zero = static_cast<int>(A.nnz());
20
21 auto* values = A.values.data();
22 auto* row_ptrs = A.graph.row_map.data();
23 auto* col_inds = A.graph.entries.data();
24
25 auto* b_values = b.data();
26 auto* x_values = x.data();
27
28 auto& handle = dss_handle.get_handle();
29 auto& info = dss_handle.get_info();
30 auto& buffer = dss_handle.get_buffer();
31
32 cusolverSpDcsrqrSolve(handle, num_rows, num_cols, b_values, x_values, info, buffer.data());
33 }
34};
35
36} // namespace kynema::dss
Definition dss_handle.hpp:10
Definition dss_algorithm.hpp:4
Algorithm
Definition dss_algorithm.hpp:6
static void solve(Handle< Algorithm::CUSOLVER_SP > &dss_handle, CrsMatrixType &A, MultiVectorType &b, MultiVectorType &x)
Definition dss_solve_cusolversp.hpp:13
Definition dss_solve.hpp:8