1#ifndef included_AMP_AsynchronousOperator
2#define included_AMP_AsynchronousOperator
4#include "AMP/operators/AsynchronousOperatorParameters.h"
5#include "AMP/operators/Operator.h"
6#include "AMP/utils/AMP_MPI.h"
88 std::string
type()
const override {
return "AsynchronousOperator"; }
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
A class that allows for overlapped communication.
virtual ~AsynchronousOperator()
virtual void apply(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
Apply operation.
T * getBufferToAvoidDebugVectorCrashing(std::vector< T > &in)
Functions to allow std::vector to be used in MPI communications when empty.
AsynchronousOperator(std::shared_ptr< const OperatorParameters > params)
AMP_MPI::Request & getRequest(size_t i)
Return a specific MPI_Request.
std::vector< AMP_MPI::Request >::iterator beginRequests()
Return an iterator to the first MPI_Request.
virtual void applyFinish(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f)=0
Finish a communicative apply operation.
const T * getBufferToAvoidDebugVectorCrashing(const std::vector< T > &in)
Functions to allow std::vector to be used in MPI communications when empty.
std::vector< AMP_MPI::Request > d_RequestList
A list of MPI_Requests for use in derived classes.
std::vector< AMP_MPI::Request >::iterator endRequests()
Return an iterator to one past the end of the list of requests.
std::string type() const override
Return the name of the operator.
virtual void applyStart(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f)=0
Start a communicative apply operation.
void waitForAllRequests()
Wait for all requests to complete.
void clearRequests()
Clear requests.
void reserveRequests(size_t i)
Reserve a number of MPI_Requests for use.
std::shared_ptr< AMP::Operator::Operator > shared_ptr