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.

区分coreID能否实现多核并行化编程



c语言编程一般都是以串行的方式一步一步执行。

我想知道对于多核编程(C6657,双核),要实现其并行处理,

1、如果不使用SYS/BIOS,通过判断coreID(if...else)区分执行不同操作。由于if...else是串行的一步一步执行,那么如何改变程序结构才能使两个核同时执行,核间还有通讯,共享一个工作,以提高执行效率呢

2、如果用SYS/BIOS,是不是通过两个task,一个task管理一个核,给它们设置相同的优先级,就能实行其并行执行

新手,求指教,由于对SYS/BIOS不熟,我偏向于不使用SYS/BIOS

  • 您好,BOIS只能在一个核上运行,多核需要建多个BIOS工程。

    目前常用的方法是每个核都独立编程,编程者来考虑多核之间的共享和同步问题。

    如果需要多核并行编程,可以看一下openMP的相关资料,TI 7.4.x版本的编译器是支持openMP的。

  • Jane Lu :

    您好!

    我看过C6678,VLFFT这个例程,他有vlfft_master和vlfft_slave两个task,vlfft_master中主核(core0)管理和控制从核,vlfft_slave中从核(core1-core7)执行相应程序。它们是建立在一个BIOS工程中的。

    openMP支持C6657吗?我看例程里面只有C6670和6678的。

    谢谢你的解答!

  • 抱歉,VLFFT的工程我不了解。

    openMP支持C66系列DSP,应该也包括C6657

  • 从通用角度上说,程序从单核向多核迁移,打个比方原来干一件事儿是一个人干(单核程序),现在同样一件事情是两个人干(多核),那么就需要对这个事情进行分工,给两个人分配各自具体的工作,给每个人干的事情做好预先定义。

    Jane说的没错,因为DSP硬件条件限制,只能实现AMP模式,可以理解为每个核上运行的系统都是独立的,这种模式下你可以理解为多核DSP就是多个单个DSP的组合,即使使用了OpenMP,在DSP上也不是SMP模式,只是AMP模式。

    还有即使DSP能支持SMP模式,还是需要用户对原有的应用程序任务进行分工,不然还是跑在一个核上。

    Best Regards

    William

    William.dong@enea.com