Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
SimpleCSRVectorRedistributor.h
1/*
2 * Copyright 2020 IFPEN-CEA
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * SPDX-License-Identifier: Apache-2.0
17 */
18
19#pragma once
20
21#include <alien/kernels/redistributor/Utils.h>
22#include <alien/kernels/simple_csr/SimpleCSRVector.h>
23#include <alien/utils/Precomp.h>
24
25namespace Alien
26{
27
29
30class SimpleCSRVectorRedistributor
31{
32 public:
33 SimpleCSRVectorRedistributor(
34 const RedistributorCommPlan* commPlan, const VectorDistribution& src_dist);
35 virtual ~SimpleCSRVectorRedistributor();
36
37 void distribute(const SimpleCSRVector<Real>& src, SimpleCSRVector<Real>& tgt);
38 void distributeBack(const SimpleCSRVector<Real>& src, SimpleCSRVector<Real>& tgt);
39
40 Int32 rcvSize() const { return m_rcv_offset[m_rcv_offset.size() - 1]; }
41
42 Int32 rcvBackSize() const { return m_snd_offset[m_snd_offset.size() - 1]; }
43
44 private:
45 void _computeCommPlan(const VectorDistribution& src_dist);
46
47 private:
48 const RedistributorCommPlan* m_comm_plan;
49 IMessagePassingMng* m_pm_super;
50 IMessagePassingMng* m_pm_dst;
51
52 // Prepare communication buffer
53 UniqueArray<Int32> m_snd_offset;
54 UniqueArray<Int32> m_rcv_offset;
55};
56
57} // namespace Alien
Computes a vector distribution.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17