Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
CombineProfiledMatrixBuilderT.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7
8#pragma once
9
10#include <arccore/base/Span.h>
11
12#include <alien/handlers/scalar/sycl/ProfiledMatrixBuilderT.h>
13
14namespace Alien
15{
16
17 template <typename Scalar>
18 class HCSRMatrix;
19
20 namespace SYCL
21 {
22 template<typename ValueT>
24 {
25 public:
26 static ValueT apply(ValueT a, ValueT b) {
27 return a+b ;
28 }
29
30 static ValueT init_value() {
31 return ValueT() ;
32 }
33 };
34
35 template<typename ValueT>
37 {
38 public:
39 static ValueT apply(ValueT a, ValueT b) {
40 return a*b ;
41 }
42
43 static ValueT init_value() {
44 return ValueT(1) ;
45 }
46 };
47
48
49 template <typename ValueT, typename IndexT, typename CombineOpT=CombineAdd<ValueT> >
50 class ALIEN_EXPORT CombineProfiledMatrixBuilderT
51 : public ProfiledMatrixBuilderT<ValueT,IndexT>
52 {
53
54 public:
55
56 class Impl ;
57
58
59 typedef ProfiledMatrixBuilderT<ValueT,IndexT> BaseType ;
60
61 CombineProfiledMatrixBuilderT(IMatrix& matrix, ProfiledMatrixOptions::ResetFlag reset_values);
62
63 virtual ~CombineProfiledMatrixBuilderT();
64
65 CombineProfiledMatrixBuilderT(const CombineProfiledMatrixBuilderT&) = delete;
66 CombineProfiledMatrixBuilderT(CombineProfiledMatrixBuilderT&&) = delete;
67 CombineProfiledMatrixBuilderT& operator=(const CombineProfiledMatrixBuilderT&) = delete;
68 CombineProfiledMatrixBuilderT& operator=(CombineProfiledMatrixBuilderT&&) = delete;
69
70 public:
71 void setParallelAssembleStencil(std::size_t max_nb_contributors,
72 Arccore::ConstArrayView<IndexT> stencil_offsets,
73 Arccore::ConstArrayView<IndexT> stencil_indexes) ;
74
75 std::size_t combineSize() const {
76 return m_combine_size ;
77 }
78
79 class View ;
80
81 View view(SYCLControlGroupHandler& cgh) ;
82
83 class HostView ;
84
85 HostView hostView() ;
86
87 void combine();
88
89 private:
90 std::unique_ptr<Impl> m_impl;
91 std::size_t m_nnz = 0 ;
92 std::size_t m_combine_size = 0 ;
93
94 std::size_t m_max_nb_contributors = 0 ;
95 std::vector<IndexT> m_contributor_indexes ;
96
97 };
98
99
100 /*---------------------------------------------------------------------------*/
101 /*---------------------------------------------------------------------------*/
102
103 typedef CombineProfiledMatrixBuilderT<Real,Integer,CombineAdd<Real>> CombineAddProfiledMatrixBuilder ;
104 typedef CombineProfiledMatrixBuilderT<Real,Integer,CombineMult<Real>> CombineMultProfiledMatrixBuilder ;
105
106 } // namespace SYCL
107
108}
109
Interface for all matrices.
Definition IMatrix.h:51
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17