最近一个任务,要求将一个算法利用8个核进行运行,测试8个核的算法处理性能。在Windows下,CCS5.0.3,TMS320C6678l,本人是DSP初学者,现在主要任务是测试6678的性能。
对于6678的多核处理是不是要用到IPC和中断的问题?
如何实现程序的多核运行(例如将(for(i=0;i<64;i++)a[i]=2*a[i];)这个循环分配到8个核中进行)?能否就那个for循环建立个简单的实例工程,能够将循环内的乘法分配到8个核上?
在哪可以找到多核处理的例程?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最近一个任务,要求将一个算法利用8个核进行运行,测试8个核的算法处理性能。在Windows下,CCS5.0.3,TMS320C6678l,本人是DSP初学者,现在主要任务是测试6678的性能。
对于6678的多核处理是不是要用到IPC和中断的问题?
如何实现程序的多核运行(例如将(for(i=0;i<64;i++)a[i]=2*a[i];)这个循环分配到8个核中进行)?能否就那个for循环建立个简单的实例工程,能够将循环内的乘法分配到8个核上?
在哪可以找到多核处理的例程?
conghu 你好:
是否涉及到多核是根据用户来设定的,IPC只是提供多核之间的中断问题。
从你的算法角度来说,可以使用IPC,也可以不使用IPC。
比如你固定将 0-7 的循环分配给核0,结果写到 a[0]-a[7],将 8-15 的循环分配给核1,结果写到 a[8]-a[15]。这种方法核之间并没有冲突,因此不需要使用IPC进行核间通信。
而如果你想做动态分配任务到多核,这种往往涉及到操作系统OS,比较复杂。简单的方法是同一份代码,不同的核处理不同的分支,依据宏DNUM来区分核。
多核编程的例子也有的,请参考置顶页面,谢谢!
“比如你固定将 0-7 的循环分配给核0,结果写到 a[0]-a[7],将 8-15 的循环分配给核1,结果写到 a[8]-a[15]。这种方法核之间并没有冲突,因此不需要使用IPC进行核间通信。”
请问核的分配是DSP自动分配的,还是需要人为指定分配?
比如以下代码:
#include "c6x.h"
if (0 == DNUM)
{
Funca();
}
else if(1 == DNUM)
{
Funcb();
}
这样就把Funca()放在核0执行,Funcb()放在Core1执行。
这种方式最简单,即所有core共用同一份代码。
上面的方式好像是每个核各自将程序运行一次,但是如何将任务分配到8个核中并行处理呢?
所有核都运行这段代码,那么core0就会处理funcA,core1就处理funcB。
funcA的功能: 0-7 的循环计算,结果写到 a[0]-a[7],
funcB的功能:8-15 的循环计算,结果写到 a[8]-a[15]。
不知这样处理是否能够达到你的要求。谢谢