你好。
我正在使用mali—T720做opencl开发。
正如mali opencl developer guide中描述的,使用ALLOC_HOST_PTR可以避免CPU和GPU间的内存拷贝。通过map和unmap,CPU和GPU访问同一块内存区域。
我在使用的时候发现,map和unmap操作会产生额外的时间消耗和性能消耗(CPU测量结果)。如果map/unmap调用过于频繁,mali—renderer的CPU占用率会上升,并且相对于kernel的执行时间,map/unmap操作也会消耗一部分时间。
我开始理解CPU和GPU使用的内存是同一个,所以map/unmap操作应该会很快,或者可以忽略不计的。但实际使用并不是这样,请问是我使用的方式有问题吗?还是有其他更高效的同步方式?
这个等一下请Sheri大美女帮忙回答一下
我们还有其他的方式可以来让CPU和GPU访问同一块内存区,比如cl_arm_import_memory extension。具体如何使用可以参考如下spec,顺便我想问一下你测试的Mai driver的版本是什么?
www.khronos.org/.../cl_arm_import_memory.txt
很感谢~
我用的Mali Device信息是:
[Device] INDEX: 1 [Device] TYPE: GPU [Device] NAME: Mali-T720 [Device] VENDOR: ARM [Device] VENDOR_ID: 0x7201000>>> [Device] DRIVER_VERSION: 1.1 [Device] PROFILE: FULL_PROFILE [Device] VERSION: OpenCL 1.1 [Device] MAX_CLOCK_FREQUENCY: 5 MHz [Device] MAX_COMPUTE_UNITS: 2 [Device] AVAILABLE: true [Device] COMPILER_AVAILABLE: true [Device] EXTENSIONS: cl_khr_global_int32_base_atomics; cl_khr_global_int32_extended_atomics; cl_khr_local_int32_base_atomics; cl_khr_local_int32_extended_atomics; cl_khr_byte_addressable_store;cl_khr_fp64; cl_khr_int64_base_atomics;cl_khr_int64_extended_atomics; cl_khr_fp16;cl_khr_gl_sharing;cl_khr_icd; cl_khr_egl_event;cl_khr_egl_image; cl_arm_core_id;cl_arm_printf
在支持的扩展中没有cl_arm_import_memory
看起来你的driver版本比较旧了,dma_buf的support比较早之前就支持了,malloc的system memory是最近才加进去的。你有办法升级一下吗?
好的,我尝试升级一下,十分感谢~
多谢Sheri帮忙 :)