7#ifndef KERNEL_LAFEM_ARCH_LUMPING_HPP
8#define KERNEL_LAFEM_ARCH_LUMPING_HPP 1
12#include <kernel/backend.hpp>
23 template <
typename DT_,
typename IT_>
24 static void csr(DT_ * lump,
const DT_ *
const val,
const IT_ *
const col_ind,
const IT_ *
const row_ptr,
const Index rows)
26 csr_generic(lump, val, col_ind, row_ptr, rows);
29 static void csr(
float * lump,
const float *
const val,
const std::uint64_t *
const col_ind,
const std::uint64_t *
const row_ptr,
const Index rows)
31 BACKEND_SKELETON_VOID(csr_cuda, csr_generic, csr_generic, lump, val, col_ind, row_ptr, rows)
34 static void csr(
double * lump,
const double *
const val,
const std::uint64_t *
const col_ind,
const std::uint64_t *
const row_ptr,
const Index rows)
36 BACKEND_SKELETON_VOID(csr_cuda, csr_generic, csr_generic, lump, val, col_ind, row_ptr, rows)
39 static void csr(
float * lump,
const float *
const val,
const std::uint32_t *
const col_ind,
const std::uint32_t *
const row_ptr,
const Index rows)
41 BACKEND_SKELETON_VOID(csr_cuda, csr_generic, csr_generic, lump, val, col_ind, row_ptr, rows)
44 static void csr(
double * lump,
const double *
const val,
const std::uint32_t *
const col_ind,
const std::uint32_t *
const row_ptr,
const Index rows)
46 BACKEND_SKELETON_VOID(csr_cuda, csr_generic, csr_generic, lump, val, col_ind, row_ptr, rows)
49 template <
typename DT_,
typename IT_>
50 static void csr_generic(DT_ * lump,
const DT_ *
const val,
const IT_ *
const col_ind,
const IT_ *
const row_ptr,
const Index rows);
52 template <
typename DT_,
typename IT_>
53 static void bcsr(DT_ * lump,
const DT_ *
const val,
const IT_ *
const col_ind,
const IT_ *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth)
55 bcsr_generic(lump, val, col_ind, row_ptr, rows, BlockHeight, BlockWidth);
58 static void bcsr(
float * lump,
const float *
const val,
const std::uint64_t *
const col_ind,
const std::uint64_t *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth)
60 BACKEND_SKELETON_VOID(bcsr_cuda, bcsr_generic, bcsr_generic, lump, val, col_ind, row_ptr, rows, BlockHeight, BlockWidth)
63 static void bcsr(
double * lump,
const double *
const val,
const std::uint64_t *
const col_ind,
const std::uint64_t *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth)
65 BACKEND_SKELETON_VOID(bcsr_cuda, bcsr_generic, bcsr_generic, lump, val, col_ind, row_ptr, rows, BlockHeight, BlockWidth)
68 static void bcsr(
float * lump,
const float *
const val,
const std::uint32_t *
const col_ind,
const std::uint32_t *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth)
70 BACKEND_SKELETON_VOID(bcsr_cuda, bcsr_generic, bcsr_generic, lump, val, col_ind, row_ptr, rows, BlockHeight, BlockWidth)
73 static void bcsr(
double * lump,
const double *
const val,
const std::uint32_t *
const col_ind,
const std::uint32_t *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth)
75 BACKEND_SKELETON_VOID(bcsr_cuda, bcsr_generic, bcsr_generic, lump, val, col_ind, row_ptr, rows, BlockHeight, BlockWidth)
78 template <
typename DT_,
typename IT_>
79 static void bcsr_generic(DT_* lump,
const DT_*
const val,
const IT_*
const col_ind,
const IT_ *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth);
81 template <
typename DT_,
typename IT_>
82 static void csr_cuda(DT_ * lump,
const DT_ *
const val,
const IT_ *
const col_ind,
const IT_ *
const row_ptr,
const Index rows);
84 template <
typename DT_,
typename IT_>
85 static void bcsr_cuda(DT_ * lump,
const DT_ *
const val,
const IT_ *
const col_ind,
const IT_ *
const row_ptr,
const Index rows,
const int BlockHeight,
const int BlockWidth);
89 extern template void Lumping::csr_generic(
float *,
const float *
const,
const Index *
const,
const Index *
const,
const Index);
90 extern template void Lumping::csr_generic(
double *,
const double *
const,
const Index *
const,
const Index *
const,
const Index);
92 extern template void Lumping::bcsr_generic(
float *,
const float *
const,
const Index *
const,
const Index *
const,
const Index,
const int,
const int);
93 extern template void Lumping::bcsr_generic(
double *,
const double *
const,
const Index *
const,
const Index *
const,
const Index,
const int,
const int);
101#include <kernel/lafem/arch/lumping_generic.hpp>
std::uint64_t Index
Index data type.