OpenCL enqueuMapBuffer是用MMIO还是DMA?

问题描述 投票:0回答:0

我正在使用 OpenCL 在 FPGA 上进行加速,我对 OpenCL 的工作原理感到非常困惑。我的意思是数据传输是如何通过 enqueueMapBuffer 完成的。通过 MMIO 或 DMA?

考虑如下所示的 OpenCL enqueueMapBuffer 调用:

void* Ptr = q.enqueueMapBuffer(inputBuffer, CL_TRUE, CL_MAP_READ,0,vector_size_bytes,nullptr, nullptr, &err);

这样,如果我向 Ptr 写入一些数据,它就会映射到设备内存。这是由 MMIO 还是 DMA 完成的?我看到一个与此相关的链接 OpenCL 内存传输函数如何工作?。但是 MMIO 对我来说似乎更合理,因为主机程序正在写入一个内存地址 Ptr,该地址映射到设备内存中的区域。我的猜测是设备内存映射到主机物理内存空间?

DMA 可能是正确答案,但我无法说服自己。

memory operating-system opencl fpga dma
© www.soinside.com 2019 - 2024. All rights reserved.