实验2构建于SoCLib的MPSoC.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验2构建于SoCLib的MPSoC

Logo Add Your Company Slogan PowerPoint Company Logo 实验2 构建基于SoCLib的MPSoC 报告人:颜晓星 杨奇 MJPEG解码程序 Contents 1 实验结果及性能分析 2 Logo MJPEG解码程序 1. FETCH:创建fetch线程:主要用于哈弗曼解码,反锯齿,反量化处理。 pthread_create ( fetchThread, NULL, fetch_process, fetch_channel); 2. Compute:创建compute线程,主要是处理MJPEG中最费时间的任务,反离散余弦变换。 for (uint32_t i = 0; i NB_IDCT; i++) pthread_create ( idctThread[i], NULL, idct_process, idct_channel[i]); 3. DISPATCH:(创建dispatch线程,负责接收从不同的compute任务计算完成的块,并且对这些块重新排列,最终生成图像帧并传送到帧缓存Framebuffer里面) pthread_create ( dispatchThread, NULL, dispatch_process, dispatch_channel); 4.挂起主线程的函数:各个线程的处理时间不一致,当IDCT的各个线程都处理完毕后,DIPATCH线程全部接收过来进行整合并存储,此时的,主进程一直处于阻塞等待状态。一直到IDCT都计算完,且DIPATCH把收来的东西都处理发送好,主线程的阻塞状态才解除,这个时候所有的主从线程在时间都在同一个起点,然后再次处理下一帧数据,依次循环下去。 pthread_join(dispatchThread, NULL);显然这个函数是阻塞的。 Logo MJPEG解码程序 5 . 任务分配过程: Logo MJPEG解码程序 6 . 线程间通信: fetch_channel[0] = channel[0]; dispatch_channel[0] = channel[0]; for (uint32_t i = 0; i NB_IDCT; i++) { fetch_channel[i + 1] = channel[2 * i + 1]; dispatch_channel[i + 1] = channel[2 * i + 2]; idct_channel[i][0] = channel[2 * i + 1]; idct_channel[i][1] = channel[2 * i + 2]; } idct_channel[0][0] idct_channel[i][0] idct_channel[0][1] dct_channel[0i[1] dispatch_channel[0] dispatch_channel[1] dispatch_channel[i] fetch_channel[0] fetch_channel[1] fetch_channel[i] 通过赋值,channel上的奇数块共享给了fetch和idct二维数组参数里的0号位,channel上的偶数块共享给了dispatch和idct二维数组参数里的1号位。 Logo MJPEG解码程序 整个并行的过程:主线程创建一个子线程fetchThread运行fetch_process处理程序,参数是fetch_channel,即把fetch的处理结果分块后放到fetch_channel上;创建N个子线程idctThread,并行运行idct_process计算程序,参数是idct_channel[i],即第i个子线程运行idct_process程序,从dict_channel[i][0]上取出fetch的某块运行结果,然后将自己处理后的结果放到dict_channel[i][1]上;创建子线程dispatchThread运行dispatch_process程序,参数为dispatch_channel,即从disptch_channel上取出idct的结果,重新组合后,等待diptch_process运行结束后得出最后结果进行输出。 Logo 注意:top.cpp soclib::caba::Vci

文档评论(0)

181****7127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档