Toybrick

RKNN 使用 CMA 分配的物理连续内存速度非常慢

jefferyzhang

版主

积分
12966
楼主
发表于 2020-11-28 17:20:12 | 显示全部楼层
1. CMA是物理内存,没有cache,cpu读写肯定慢
2. 异构运算是两个独立系统,就像pc的gpu有自己显存,cpu用内存,这里有一步内存传输动作,NPU也一样。
3. 这个CPU->NPU内存拷贝是用CPU进行的,你CMA内存没有cache读写肯定没有直接malloc的虚拟内存快。
回复

使用道具 举报

jefferyzhang

版主

积分
12966
沙发
发表于 2020-11-29 13:10:50 | 显示全部楼层
seanx 发表于 2020-11-29 10:43
多谢版主大佬,基本明白了。

想再请问一下,如果我想要尽可能用上 RGA 的硬件加速(连续内存),又需要 ...

提前mmap出虚拟地址后,直接用虚拟地址给rga
回复

使用道具 举报

jefferyzhang

版主

积分
12966
板凳
发表于 2020-11-30 08:25:41 | 显示全部楼层
luxiaofei 发表于 2020-11-29 17:35
请问RockchipCmaAlloc 分配的cma内存怎么mmap出虚拟地址呢?这一步没有实现,版主能不能指点一下?谢谢啦 ...

我没用过这个alloc接口,不知道你说的意思。。
mmap这个c标准函数你难道没用过么?
回复

使用道具 举报

jefferyzhang

版主

积分
12966
地板
发表于 2020-11-30 10:50:35 | 显示全部楼层
seanx 发表于 2020-11-30 10:05
RockchipCmaAlloc 返回的 buffer 里面有一个 ptr 字段,我理解应该是 mmap 映射出来的地址。把这个 ptr  ...

那就没有办法了,只能在程序上做一些异步处理。
如果走ptr不可能每次都很慢,后面cache进来就快了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表