10 const std::string&
name,
11 ISvcLocator* pSvcLocator
25 const std::vector<std::shared_ptr<xrt::device>> devices =
31 m_kernels[kernelName] = std::make_unique<xrt::kernel>(
33 (devices[0])->get_xclbin_uuid(),
35 xrt::kernel::cu_access_mode::exclusive
40 m_inputBuffers.emplace_back(
43 xrt::bo::flags::normal,
44 m_kernels[kernelName]->group_id(argumentIndex)
47 if (!
m_runs.contains(kernelName)) {
48 m_runs[kernelName] = std::make_unique<xrt::run>(*
m_kernels[kernelName]);
52 m_runs[kernelName]->set_arg(argumentIndex, m_inputBuffers.back());
56 const std::vector<std::shared_ptr<xrt::device>> devices =
62 m_kernels[kernelName] = std::make_unique<xrt::kernel>(
64 (devices[0])->get_xclbin_uuid(),
66 xrt::kernel::cu_access_mode::exclusive
72 if (!
m_runs.contains(kernelName)) {
73 m_runs[kernelName] = std::make_unique<xrt::run>(*
m_kernels[kernelName]);
80 const std::vector<std::shared_ptr<xrt::device>> devices =
86 m_kernels[kernelName] = std::make_unique<xrt::kernel>(
88 devices[0]->get_xclbin_uuid(),
90 xrt::kernel::cu_access_mode::exclusive
94 m_outputBuffers.emplace_back(
97 xrt::bo::flags::normal,
98 m_kernels[kernelName]->group_id(argumentIndex)
101 if (!
m_runs.contains(kernelName)) {
102 m_runs[kernelName] = std::make_unique<xrt::run>(*
m_kernels[kernelName]);
106 m_runs[kernelName]->set_arg(argumentIndex, m_outputBuffers.back());
109 return StatusCode::SUCCESS;
115 std::size_t inputHandleIndex = 0;
122 unsigned long* inputMap = m_inputBuffers.at(inputHandleIndex).map<
unsigned long*>();
145 m_inputBuffers.at(inputHandleIndex).sync(XCL_BO_SYNC_BO_TO_DEVICE);
152 std::size_t vSizeHandleIndex = 0;
159 const auto& [kernelName, storeGateKey, argumentIndex] =
m_vSizeInterfaces[vSizeHandleIndex];
161 m_runs.at(kernelName)->set_arg(argumentIndex, vSizeDataStream->size());
177 std::size_t outputHandleIndex = 0;
192 m_outputBuffers.at(outputHandleIndex).sync(XCL_BO_SYNC_BO_FROM_DEVICE);
195 const unsigned long* outputMap = m_outputBuffers.at(outputHandleIndex).map<
unsigned long*>();
211 return StatusCode::SUCCESS;