ROL
ROL_BatchManager.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Rapid Optimization Library (ROL) Package
4//
5// Copyright 2014 NTESS and the ROL contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef ROL_BATCHMANAGER_HPP
11#define ROL_BATCHMANAGER_HPP
12
13#include "ROL_Vector.hpp"
14#include "ROL_Elementwise_Function.hpp"
15
16namespace ROL {
17
18template<class Real>
20public:
21 virtual ~BatchManager() {}
22
23 virtual int batchID() {
24 return 0;
25 }
26
27 virtual int numBatches() {
28 return 1;
29 }
30
31 virtual void sumAll(Real* input, Real* output, int dim) {
32 for (int i=0; i<dim; ++i) output[i] = input[i];
33 }
34
35 virtual void sumAll(Vector<Real> &input, Vector<Real> &output) {
36 output.set(input);
37 }
38
39 virtual void reduceAll(Real *input, Real* output, int dim,
40 const Elementwise::ReductionOp<Real> &r) {
41 for (int i = 0; i < dim; ++i) output[i] = input[i];
42 }
43
44 virtual void gatherAll(const Real *send, const int ssize, Real *receive, int const rsize) const {
45 for (int i = 0; i < rsize; ++i) receive[i] = send[i];
46 }
47
48 virtual void broadcast(Real *input, int cnt, int root) {}
49
50 virtual void barrier() {}
51};
52
53}
54
55#endif
virtual void sumAll(Real *input, Real *output, int dim)
virtual void sumAll(Vector< Real > &input, Vector< Real > &output)
virtual void broadcast(Real *input, int cnt, int root)
virtual void barrier()
virtual void reduceAll(Real *input, Real *output, int dim, const Elementwise::ReductionOp< Real > &r)
virtual int numBatches()
virtual void gatherAll(const Real *send, const int ssize, Real *receive, int const rsize) const
Defines the linear algebra or vector space interface.
virtual void set(const Vector &x)
Set where .
constexpr auto dim