13#include <ucp/api/ucp.h>
15#include <ucxx/address.h>
16#include <ucxx/component.h>
17#include <ucxx/endpoint_builder.h>
18#include <ucxx/exception.h>
19#include <ucxx/inflight_requests.h>
20#include <ucxx/listener.h>
21#include <ucxx/remote_key_builder.h>
22#include <ucxx/request.h>
23#include <ucxx/request_am_builder.h>
24#include <ucxx/request_endpoint_close_builder.h>
25#include <ucxx/request_flush_builder.h>
26#include <ucxx/request_mem_builder.h>
27#include <ucxx/request_stream_builder.h>
28#include <ucxx/request_tag_builder.h>
29#include <ucxx/request_tag_multi_builder.h>
30#include <ucxx/typedefs.h>
31#include <ucxx/utils/sockaddr.h>
32#include <ucxx/worker.h>
43void registerInflightRequest(std::shared_ptr<Component> component, std::shared_ptr<Request> req);
71 ucp_ep_h _handle{
nullptr};
72 ucp_ep_h _originalHandle{
nullptr};
74 bool _endpointErrorHandling{
true};
75 std::unique_ptr<InflightRequests> _inflightRequests{
76 std::make_unique<InflightRequests>()};
80 ucs_status_t _status{UCS_INPROGRESS};
81 std::atomic<bool> _closing{
false};
107 Endpoint(std::shared_ptr<Component> workerOrListener,
bool endpointErrorHandling);
118 void create(ucp_ep_params_t* params);
131 [[nodiscard]] std::shared_ptr<Request> registerInflightRequest(std::shared_ptr<Request> request);
148 [[nodiscard]] std::shared_ptr<RequestEndpointClose> closeRequest(
150 const bool enablePythonFuture,
174 friend void detail::registerInflightRequest(std::shared_ptr<Component> component,
175 std::shared_ptr<Request> req);
179 Endpoint(
const Endpoint&) =
delete;
180 Endpoint& operator=(Endpoint
const&) =
delete;
181 Endpoint(Endpoint&& o) =
delete;
182 Endpoint& operator=(Endpoint&& o) =
delete;
187 friend class detail::ConstructorFactory;
321 const ucs_memory_type_t memoryType);
398 std::shared_ptr<ucxx::RemoteKey> remoteKey);
434 std::shared_ptr<ucxx::RemoteKey> remoteKey);
516 const std::vector<size_t>& size,
517 const std::vector<int>& isCUDA,
A UCXX component class to prevent early destruction of parent object.
Definition component.h:21
RequestAmBuilder amRecvBuilder()
Create a builder for an active message receive operation.
RequestEndpointCloseBuilder closeBuilder()
Create a builder for a non-blocking endpoint close operation.
RequestMemBuilder memGetBuilder(void *buffer, size_t length, uint64_t remoteAddr, ucp_rkey_h rkey)
Create a builder for a memory get operation.
std::shared_ptr< Worker > getWorker()
Get ucxx::Worker component from a worker or listener object.
void removeInflightRequest(std::shared_ptr< Request > request)
Remove reference to request from internal container.
RequestTagBuilder tagSendBuilder(const void *const buffer, size_t length, Tag tag)
Create a builder for a tag send operation.
RequestMemBuilder memPutBuilder(const void *const buffer, size_t length, std::shared_ptr< ucxx::RemoteKey > remoteKey)
Create a builder for a memory put operation.
bool isAlive() const
Check whether the endpoint is still alive.
RemoteKeyBuilder remoteKeyBuilder(SerializedRemoteKey serializedRemoteKey)
Create a builder for a remote key from serialized data.
RequestTagMultiBuilder tagMultiSendBuilder(const std::vector< const void * > &buffer, const std::vector< size_t > &size, const std::vector< int > &isCUDA, const Tag tag)
Create a builder for a multi-buffer tag send operation.
RequestMemBuilder memGetBuilder(void *buffer, size_t length, std::shared_ptr< ucxx::RemoteKey > remoteKey)
Create a builder for a memory get operation.
RequestStreamBuilder streamRecvBuilder(void *buffer, size_t length)
Create a builder for a stream receive operation.
size_t cancelInflightRequests()
Cancel inflight requests.
RequestFlushBuilder flushBuilder()
Create a builder for a flush operation.
size_t cancelInflightRequestsBlocking(uint64_t period=0, uint64_t maxAttempts=1)
Cancel inflight requests.
void setCloseCallback(EndpointCloseCallbackUserFunction closeCallback, EndpointCloseCallbackUserData closeCallbackArg)
Register a user-defined callback to call when endpoint closes.
RequestAmBuilder amSendBuilder(std::vector< ucp_dt_iov_t > iov, const AmSendParams ¶ms)
Create a builder for an active message send operation with IOV datatype.
friend void endpointErrorCallback(void *arg, ucp_ep_h ep, ucs_status_t status)
The error callback registered at endpoint creation time.
ucp_ep_h getHandle()
Get the underlying ucp_ep_h handle.
RequestStreamBuilder streamSendBuilder(const void *const buffer, size_t length)
Create a builder for a stream send operation.
size_t getCancelingSize() const
Check the number of inflight requests being canceled.
void raiseOnError()
Raises an exception if an error occurred.
RequestMemBuilder memPutBuilder(const void *const buffer, size_t length, uint64_t remoteAddr, ucp_rkey_h rkey)
Create a builder for a memory put operation.
void closeBlocking(uint64_t period=0, uint64_t maxAttempts=1)
Close the endpoint while keeping the object alive.
RequestAmBuilder amSendBuilder(const void *const buffer, const size_t length, const AmSendParams ¶ms)
Create a builder for an active message send operation with explicit policy parameters.
RequestTagMultiBuilder tagMultiRecvBuilder(const Tag tag, const TagMask tagMask)
Create a builder for a multi-buffer tag receive operation.
RequestAmBuilder amSendBuilder(const void *const buffer, const size_t length, const ucs_memory_type_t memoryType)
Create a builder for an active message send operation.
RequestTagBuilder tagRecvBuilder(void *buffer, size_t length, Tag tag, TagMask tagMask)
Create a builder for a tag receive operation.
friend class RequestEndpointCloseBuilder
Allow the endpoint close builder to preserve endpoint close state.
Definition endpoint.h:169
Builder class for constructing std::shared_ptr<ucxx::RemoteKey> objects.
Definition remote_key_builder.h:25
Builder class for constructing std::shared_ptr<ucxx::RequestAm> objects.
Definition request_am_builder.h:41
Builder class for constructing std::shared_ptr<ucxx::RequestEndpointClose> objects.
Definition request_endpoint_close_builder.h:41
Send or receive a message with the UCX Tag API.
Definition request_endpoint_close.h:24
Builder class for constructing std::shared_ptr<ucxx::RequestFlush> objects.
Definition request_flush_builder.h:39
Builder class for constructing std::shared_ptr<ucxx::RequestMem> objects.
Definition request_mem_builder.h:40
Builder class for constructing std::shared_ptr<ucxx::RequestStream> objects.
Definition request_stream_builder.h:38
Builder class for constructing std::shared_ptr<ucxx::RequestTag> objects.
Definition request_tag_builder.h:40
Builder class for constructing std::shared_ptr<ucxx::RequestTagMulti> objects.
Definition request_tag_multi_builder.h:38
Base type for a UCXX transfer request.
Definition request.h:39
RequestCallbackUserData EndpointCloseCallbackUserData
Data for the user-defined function provided to endpoint close callback.
Definition typedefs.h:121
const std::string SerializedRemoteKey
Serialized form of a remote key.
Definition typedefs.h:304
RequestCallbackUserFunction EndpointCloseCallbackUserFunction
A user-defined function to execute after an endpoint closes.
Definition typedefs.h:113
TagMask
Strong type for a UCP tag mask.
Definition typedefs.h:74
Tag
Strong type for a UCP tag.
Definition typedefs.h:66
Parameters controlling Active Message send behavior.
Definition typedefs.h:257
Deleter for a endpoint parameters object.
Definition endpoint.h:52
void operator()(ucp_ep_params_t *ptr)
Execute the deletion.