22#include <boost/scope_exit.hpp>
24#include "arccore/alina/BuiltinBackend.h"
25#include "arccore/alina/Adapters.h"
26#include "arccore/alina/DistributedMatrix.h"
27#include "arccore/alina/IO.h"
28#include "arccore/alina/Profiler.h"
32int main(
int argc,
char* argv[])
34 MPI_Init(&argc, &argv);
35 BOOST_SCOPE_EXIT(
void)
44 int chunk_len = (n + comm.size - 1) / comm.size;
45 int chunk_beg = std::min(n, chunk_len * comm.rank);
46 int chunk_end = std::min(n, chunk_len * (comm.rank + 1));
47 int chunk = chunk_end - chunk_beg;
50 ptr.reserve(chunk + 1);
53 col.reserve(chunk * 4);
54 std::vector<double> val;
55 val.reserve(chunk * 4);
57 for (
int i = 0, j = chunk_beg; i < chunk; ++i, ++j) {
76 ptr.push_back(col.size());
82 Matrix A(comm, std::tie(chunk, ptr, col, val), chunk);
85 std::ostringstream fname;
86 fname <<
"A_loc_" << comm.rank <<
".mtx";
87 Alina::IO::mm_write(fname.str(), *A.local());
91 std::ostringstream fname;
92 fname <<
"A_rem_" << comm.rank <<
".mtx";
93 Alina::IO::mm_write(fname.str(), *A.remote());
99 std::ostringstream fname;
100 fname <<
"B_loc_" << comm.rank <<
".mtx";
101 Alina::IO::mm_write(fname.str(), *B->local());
105 std::ostringstream fname;
106 fname <<
"B_rem_" << comm.rank <<
".mtx";
107 Alina::IO::mm_write(fname.str(), *B->remote());
Distributed Matrix using message passing.
Matrix class, to be used by user.
__host__ __device__ Real3x3 transpose(const Real3x3 &t)
Transpose la matrice.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Convenience wrapper around MPI_Comm.