OpenCL在SoC集成设备(如Mali GPU)与CPU间的内存缓冲区设置疑问
关于SoC集成GPU(如Mali)与OpenCL内存传输的DMA疑问
背景
外部设备通常拥有独立内存,需通过DMA内存区域在系统DRAM与设备内部DRAM间拷贝数据,因此OpenCL需要为这些区域配置DMA,相关资料也显示OpenCL会设置DMA缓冲区用于数据传输。
核心疑问
对于SoC中与CPU共享DRAM的集成设备(比如Mali GPU),情况是怎样的?我原本认为,即便集成GPU可以访问任意内存区域,仍需要DMA内存区域来保证与CPU通信的一致性。
排查尝试与困惑
我给Linux内核的dma_alloc_attrs函数打了补丁,让它在驱动设置DMA区域时打印日志,但运行OpenCL应用后,通过dmesg查看内核日志却没有看到相关输出。目前不确定原因是以下哪一种:
- 仍在使用DMA,但采用预分配区域,运行时不会频繁分配;
- OpenCL使用了其他DMA分配函数或内核API。
恳请了解OpenCL实现细节的人士解答!
内容的提问来源于stack exchange,提问作者ruach
相关产品推荐
相关产品推荐

