将 uint8_t 向量类型转换为 ap_uint<128> openCL
Typecasting uint8_t vector to ap_uint<128> openCL
我正在 Xilinx Vitis 上开发一个项目,我用
创建了一个 arrayA
std::vector<uint8_t,aligned_allocator<uint8_t>> arrayA(size);
然后我用一些随机值填充它。
我需要将它传递给接受 ( ap_uint<128>* arrayA)
的内核
我如何link这些正确?
我试过创建一个
ap_uint<128>* temp_A = arrayA.data()
但它也给我一个错误。
当我 运行 代码时,它会向我发出 XRT XILINX
Vitis
的未对齐主机分配器警告
我该如何解决这个问题?
编辑:uint8_t 是无符号字符
您只能 reinterpret_cast
char
、signed char
、unsigned char
和 std::byte
的数组,并且 uint8_t
可能不是别名其中之一。
您还需要确保数据正确对齐以将其视为 ap_uint<128>
。
using raw_vec_t = std::vector<unsigned char, boost::aligned_allocator<unsigned char, alignof(ap_uint<128>)>>;
raw_vec_t arrayA(size);
ap_uint<128>* temp_A = reinterpret_cast<ap_uint<128>>(arrayA.data());
我正在 Xilinx Vitis 上开发一个项目,我用
创建了一个arrayA
std::vector<uint8_t,aligned_allocator<uint8_t>> arrayA(size);
然后我用一些随机值填充它。
我需要将它传递给接受 ( ap_uint<128>* arrayA)
我如何link这些正确?
我试过创建一个
ap_uint<128>* temp_A = arrayA.data()
但它也给我一个错误。
当我 运行 代码时,它会向我发出 XRT XILINX
Vitis
我该如何解决这个问题?
编辑:uint8_t 是无符号字符
您只能 reinterpret_cast
char
、signed char
、unsigned char
和 std::byte
的数组,并且 uint8_t
可能不是别名其中之一。
您还需要确保数据正确对齐以将其视为 ap_uint<128>
。
using raw_vec_t = std::vector<unsigned char, boost::aligned_allocator<unsigned char, alignof(ap_uint<128>)>>;
raw_vec_t arrayA(size);
ap_uint<128>* temp_A = reinterpret_cast<ap_uint<128>>(arrayA.data());