完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-5-25 16:04 编辑
您好~最近需要用6678实现一个工程,将一块大数据直接均分成8块,由8个核分别处理一块数据,核间不进行通信,数据是由EDMA从DDR3中传输到L2中进行处理,处理完重新传到DDR3中储存。单核跑这段程序时,时间可以满足要求,但是让8个核同时运行时,所需的时间却是单核跑这段时间的好几倍,完全满足不了要求。EDMA设置为8个通道,每个QUEUE进行处理了。我将处理的数据缩小一些后,八个核同时跑的加速比却是能接近8倍的。不知道是由什么原因引起的?希望专家们能指点下~ |
|
相关推荐
6个回答
|
|
您好,
请问你的EDMA与core的处理是如何同步的,是采用查询还是中断的方式?有可能是由于你每个核需要等EDMA搬运完成才处理导致,建议可以先使用EDMA搬运数据到一个核上处理,看看一个核处理1/8的数据时的性能提升度。 |
|
|
|
zbb9612 发表于 2018-5-25 06:01 您好~谢谢~我是通过查询IPR的对应位置进行判断EDMA是否传输完的,每个核都等数据传输完后,再进行数据的处理。我是这样子测的:假如需要处理8192个数据,我先测好一个核处理1024个数据的时间,然后一起8个核均跑1024个数据,测出来的结果就如我上面所说的差别很大!但假如,我需要处理1024个数据,每个核跑128的数据的话,测出来的加速比接近8倍。谢谢~不知道什么原因,困扰有段时间了,一直在找原因。谢谢~ |
|
|
|
fuwu1245 发表于 2018-5-25 06:17 你所谓的1024个数据是指1024bytes吗?数据处理是否放在DDR3中的,L2cache有没有开? L2 CACHE LINE SIZE 刚好是128 bytes,如果你开了L2 cache,那么每个core处理的128bytes 数据全都会map进L2 cache,这样8个core的处理 互不影响。如果你的处理数据大于一个cache line,那么每次读取实际内容都需要从DDR3中读取,这样8个core 并行处理,如果访问的目标数据在一个bank中,由于bank confliction,对整体性能就会有较大的影响 |
|
|
|
liuqin123 发表于 2018-5-25 06:27 您好~谢谢~我的数据是从DDR3通过EDMA传输到L2中进行处理,L2没开CACHE,我指的1024只是个例子,我实际上要处理的数据每次基本是32768个float型,也就是128KBytes。数据的处理都是在自己核的L2中进行的,应该不会有冲突的吧?谢谢~ |
|
|
|
fuwu1245 发表于 2018-5-25 06:40 如果在各自的L2中不会有什么冲突。数据处理如果有共享的,需加上cache 一致性维护 |
|
|
|
谢谢 不是冲突的问题,已经找到原因了 谢谢~
|
|
|
|
只有小组成员才能发言,加入小组>>
348 浏览 1 评论
543 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
787 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
658 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
77浏览 29评论
262浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
209浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
67浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 23:13 , Processed in 0.953517 second(s), Total 58, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号