如何解决通过 Map/unmap 将数据从 cpu 传输到 gpu 时,Android mali G 内存泄漏
我分析了我的应用程序并获得了有趣的结果。有两种类型的gpu,用于三星S9。 Adreno 和 ARM MaliG。所以我在这两个上分析了我的应用程序。在 samsung s9 (adreno) 上,我获得了良好的性能并且没有内存泄漏,但我不能对 ARM MaliG 版本说同样的情况。 GPU 分析器显示使用的内存在增加。当我开始逐行注释代码时,我发现了 clEnqueueMapbuffer\UnmapMemObject 中的一个漏洞。我曾尝试在调用后使用 clFinish(queue) 和 clFlush(queue)。此外,建议的解决方案之一是将阻塞操作设置为 CL_TRUE。对结果没有影响。内存泄漏仍然发生。您有什么建议吗?
我附上代码,也许可以给点提示
cl_uchar *affine_in_map = (cl_uchar *) clEnqueueMapBuffer(
commandQueue,gpu->affine_in_buff->mem,CL_FALSE,CL_MAP_WRITE,result_bytes,gpu.affine_in_buff->size,NULL,&affine_in_map_event,&err);
checkError(err,"Error with enqueueMapBuffer for affine transform input mem");
clWaitForEvents(1,&affine_in_map_event);
std::memcpy(affine_in_map,src,result_bytes);
err = clEnqueueUnmapMemObject(
commandQueue,(void *) affine_in_map,1,&affine_in_unmap_event);
checkError(err,"Error with enqueueUnmapMemObject for affine transform input mem");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。