20 return StatusCode::FAILURE;
24 return StatusCode::SUCCESS;
33 std::size_t slotIdx = 0;
41 const std::size_t device_idx = slotIdx %
m_devices.size();
42 ATH_MSG_DEBUG(
"Using device " << device_idx <<
" for slot " << slotIdx);
47 slot.m_kernel = std::make_unique<xrt::kernel>(
48 *slot.m_device, slot.m_device->get_xclbin_uuid(),
s_krnl_name);
50 std::exception_ptr
p = std::current_exception();
52 "Could not create XRT kernel '"
54 <<
"', check that correct XCLBIN is programmed by AthXRT service");
55 return StatusCode::FAILURE;
67 slot.m_bo_in1 = std::make_unique<xrt::bo>(
68 *slot.m_device, size_in_bytes, xrt::bo::flags::normal, bank_grp_in1);
69 slot.m_bo_in2 = std::make_unique<xrt::bo>(
70 *slot.m_device, size_in_bytes, xrt::bo::flags::normal, bank_grp_in2);
71 slot.m_bo_out = std::make_unique<xrt::bo>(
72 *slot.m_device, size_in_bytes, xrt::bo::flags::normal, bank_grp_out);
75 slot.m_run = std::make_unique<xrt::run>(*slot.m_kernel);
84 return StatusCode::SUCCESS;
104 slot.
m_bo_in1->sync(XCL_BO_SYNC_BO_TO_DEVICE);
105 slot.
m_bo_in2->sync(XCL_BO_SYNC_BO_TO_DEVICE);
112 slot.
m_bo_out->sync(XCL_BO_SYNC_BO_FROM_DEVICE);
117 uint32_t cpu_result = buffer_in1[
i] + buffer_in2[
i];
118 if (buffer_out[
i] != cpu_result) {
120 <<
i <<
": CPU result = " << cpu_result
121 <<
" Device result = " << buffer_out[
i]);
130 return StatusCode::FAILURE;
133 return StatusCode::SUCCESS;