我工作的一个视频编为OMAP3430.我已经有代码用C++编写的,我尝试修改/口的某些部分,它利用DSP(SDK(,ZOOM3430SDK)我已经有一个额外的DSP)。

我想口小于循环,是运行一个非常小量的数据(~250字节),但有关2M次在不同的数据。但载有从通信之间的CPU和DSP是更多的收益(如果我有的话)。

我承担这个任务是多样化的一个代码GPU是在正常的计算机。我的问题是移植什么样的零部件将是有益的?怎么GPU程序员照顾的这样的任务?

编辑:

  1. GPP应用程序分配的缓冲区的大小0x1000字节。
  2. GPP应用程序援引DSPProcessor_ReserveMemory订DSP地址的虚拟空间为每个配的缓冲区使用的尺寸,是4K高于所分配的缓冲,占自动页准。总的保留的大小,也必须沿着4K页边界。
  3. GPP应用程序援引DSPProcessor_Map到映每个配的缓冲区的DSP地址的虚拟空间,保留在以前的步骤。
  4. GPP应用程序准备的消息通知DSP执行阶段的基址的地址的虚拟空间,其中已映射到缓冲器上分配GPP.GPP应用程序使用DSPNode_PutMessage要发送信息到DSP。
  5. GPP调用memcpy复制的数据进行处理成本的共享内存。
  6. GPP应用程序援引DSPProcessor_FlushMemory,以确保数据高速缓冲存已经刷新。
  7. GPP应用程序准备的消息通知DSP执行阶段,它已完成写入缓冲区和DSP现在可以访问的缓冲区。消息还包含数据的数量写入缓冲区,以便DSP会知道是多少数据的副本。GPP使用DSPNode_PutMessage要发送信息到DSP然后将调用DSPNode_GetMessage等待听到消息后从DSP。

经过这些执行DSP程序开始,并DSP通知GPP的消息时,它完成的处理。只是尝试我不把任何处理内部DSP程序。我只是发出一个"处理完成之后"的消息回GPP.和这个还会消耗大量的时间。可能是因为内部/外部存储器的使用,或者它仅仅是因为通过载?

有帮助吗?

解决方案 3

从测量我的一个消息周期之间的CPU和DSP大约需要160us.我不知道这是否是因为核心我的使用,或者桥驱动程序;但是,这是一个很长的时间用于一个简单的来回的消息。

它似乎是唯一合理的港口的一个算法DSP如果计算总负荷的相当于所需时间的通讯;如果算法适合于同时运算上的CPU和DSP。

其他提示

该OMAP3430没有在董事会DSP,它有一个IVA2+视频/音频码发动机挂钩的系统总和的皮层的核心的有DSP-喜欢单指令的指令。GPU在OMAP3430是新加坡证券交易所的基础单元。同时它也有可编程的着色和我不相信有任何支助的一般用程序阿拉CUDA或例子我可能是错的但我从没听说过这样的支持

如果您使用的IVA2+编/解码发动机是在船上,你需要用适当的图书馆为本单位及它只支持具体的编解码器,我知道。是你想写自己的图书馆,以此模块?

如果你用皮质的建DSPish(单指令的指令),后一些代码。

如果开发局有一些额外的DSP在这,什么是DSP及它是如何接到,?

至于桌面GPU的问题,在视频的情况下解您使用供应商提供的功能的图书馆以调用的硬件、有几个,VDAPU为选在linux上,类似的图书馆on windows(PureViewHD我认为其所谓的).ATI还有linux和windows图书馆为他们的船上解码发动机,我不知道的名称。

我不知道是什么时候是基于你的传输的数据中,但我知道TMS32064x上列出specsheet SDK有一个非常强大的DMA引擎。(我假设这是原缩小OMAP34X结.它说它有一个64xx.) 我希望,有的东西simalar,使用他们自己的最大优势。我会建议设立"乒乓"缓冲区的内部ram的64xx和使用迟作为共存与转让处理通过DMA。外部RAM将是一个瓶颈上的任何6xxx系列的部分,以便保持任何你能锁定内部存储器,以改善性能。通常这些部将有能力对旅8 32位字到处理的核心,一旦它是在内部存储器,但是不同部分的一部分基于什么水平高速缓存这可以让你的地图作为直接访问ram。成本敏感的部分从TI移动"制图记忆"远比一些其他的筹码。还有所有的手册,用于部分都可以从TI免费下载PDF。他们甚至给我的印刷版免费的TMS320C6000CPU和指示设置的手册和许多其他书籍。

远程感到关切的是,你可能需要使用一些"处理内部函数"或内联大会,以优化的任何数学你正在做的事情。为64xx有利于整数时的操作可能的,因为它没有一个内置于浮点的核心。(这些都是在67xx系列。) 如果看起来在执行单位和可以计算这样,不同部分的目标不同的操作方式可能发生在单个周期后,你将能够实现的最佳性能的那些部分。该指示设置的手册清单的种类型的行动是由每个执行单元。如果你可以打破你的计算了在双数据流动设置和设施的循环的一位编译器,将"更好的"你的时候全optimizaiton。这是由于这样的事实,处理被分成一个左一个右侧有几乎完全相同,执行单位在任何一方。

希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top