CIRCT
19.0.0git
|
Abstract class representing a connection to an accelerator. More...
#include <Accelerator.h>
Public Types | |
using | Service = services::Service |
Public Member Functions | |
AcceleratorConnection (Context &ctxt) | |
virtual | ~AcceleratorConnection ()=default |
Context & | getCtxt () const |
void | disconnect () |
Disconnect from the accelerator cleanly. More... | |
virtual std::map< std::string, ChannelPort & > | requestChannelsFor (AppIDPath, const BundleType *)=0 |
Request the host side channel ports for a particular instance (identified by the AppID path). More... | |
AcceleratorServiceThread * | getServiceThread () |
template<typename ServiceClass > | |
ServiceClass * | getService (AppIDPath id={}, std::string implName={}, ServiceImplDetails details={}, HWClientDetails clients={}) |
Get a typed reference to a particular service type. More... | |
virtual Service * | getService (Service::Type service, AppIDPath id={}, std::string implName={}, ServiceImplDetails details={}, HWClientDetails clients={}) |
Calls createService and caches the result. More... | |
Protected Member Functions | |
virtual Service * | createService (Service::Type service, AppIDPath idPath, std::string implName, const ServiceImplDetails &details, const HWClientDetails &clients)=0 |
Called by getServiceImpl exclusively. More... | |
Private Types | |
using | ServiceCacheKey = std::tuple< const std::type_info *, AppIDPath > |
Cache services via a unique_ptr so they get free'd automatically when Accelerator objects get deconstructed. More... | |
Private Attributes | |
Context & | ctxt |
ESI accelerator context. More... | |
std::map< ServiceCacheKey, std::unique_ptr< Service > > | serviceCache |
std::unique_ptr< AcceleratorServiceThread > | serviceThread |
Abstract class representing a connection to an accelerator.
Actual connections (e.g. to a co-simulation or actual device) are implemented by subclasses.
Definition at line 78 of file Accelerator.h.
Definition at line 94 of file Accelerator.h.
|
private |
Cache services via a unique_ptr so they get free'd automatically when Accelerator objects get deconstructed.
Definition at line 127 of file Accelerator.h.
esi::AcceleratorConnection::AcceleratorConnection | ( | Context & | ctxt | ) |
Definition at line 36 of file Accelerator.cpp.
|
virtualdefault |
|
protectedpure virtual |
Called by getServiceImpl
exclusively.
It wraps the pointer returned by this in a unique_ptr and caches it. Separate this from the wrapping/caching since wrapping/caching is an implementation detail.
Implemented in esi::backends::xrt::XrtAccelerator, esi::backends::cosim::CosimAccelerator, and esi::backends::trace::TraceAccelerator.
Referenced by getService().
void AcceleratorConnection::disconnect | ( | ) |
Disconnect from the accelerator cleanly.
Definition at line 302 of file Accelerator.cpp.
References serviceThread.
|
inline |
Definition at line 82 of file Accelerator.h.
References ctxt.
Referenced by esi::backends::cosim::CosimAccelerator::createService(), printHier(), and printInfo().
|
inline |
Get a typed reference to a particular service type.
Caller does not take ownership of the returned pointer – the Accelerator object owns it. Pointer lifetime ends with the Accelerator lifetime.
Definition at line 99 of file Accelerator.h.
Referenced by esi::Manifest::Impl::getService(), printHier(), printInfo(), PYBIND11_MODULE(), and esi::Manifest::Impl::scanServiceDecls().
|
virtual |
Calls createService
and caches the result.
Subclasses can override if they want to use their own caching mechanism.
Definition at line 39 of file Accelerator.cpp.
References createService(), and serviceCache.
|
inline |
Definition at line 92 of file Accelerator.h.
References serviceThread.
|
pure virtual |
Request the host side channel ports for a particular instance (identified by the AppID path).
For convenience, provide the bundle type.
Implemented in esi::backends::xrt::XrtAccelerator, esi::backends::trace::TraceAccelerator, and esi::backends::cosim::CosimAccelerator.
Referenced by esi::Manifest::Impl::getBundlePorts().
|
private |
|
private |
Definition at line 128 of file Accelerator.h.
Referenced by getService().
|
private |
Definition at line 130 of file Accelerator.h.
Referenced by disconnect(), and getServiceThread().