c语言编程一般都是以串行的方式一步一步执行。
我想知道对于多核编程(C6657,双核),要实现其并行处理,
1、如果不使用SYS/BIOS,通过判断coreID(if…else)区分执行不同操作。由于if…else是串行的一步一步执行,那么如何改变程序结构才能使两个核同时执行,核间还有通讯,共享一个工作,以提高执行效率呢
2、如果用SYS/BIOS,是不是通过两个task,一个task管理一个核,给它们设置相同的优先级,就能实行其并行执行
新手,求指教,由于对SYS/BIOS不熟,我偏向于不使用SYS/BIOS
Jane Lu:
您好,BOIS只能在一个核上运行,多核需要建多个BIOS工程。
目前常用的方法是每个核都独立编程,编程者来考虑多核之间的共享和同步问题。
如果需要多核并行编程,可以看一下openMP的相关资料,TI 7.4.x版本的编译器是支持openMP的。
April April:
回复 Jane Lu:
Jane Lu :
您好!
我看过C6678,VLFFT这个例程,他有vlfft_master和vlfft_slave两个task,vlfft_master中主核(core0)管理和控制从核,vlfft_slave中从核(core1-core7)执行相应程序。它们是建立在一个BIOS工程中的。
openMP支持C6657吗?我看例程里面只有C6670和6678的。
谢谢你的解答!
Jane Lu:
回复 April April:
抱歉,VLFFT的工程我不了解。
openMP支持C66系列DSP,应该也包括C6657
yuanwen dong:
从通用角度上说,程序从单核向多核迁移,打个比方原来干一件事儿是一个人干(单核程序),现在同样一件事情是两个人干(多核),那么就需要对这个事情进行分工,给两个人分配各自具体的工作,给每个人干的事情做好预先定义。
Jane说的没错,因为DSP硬件条件限制,只能实现AMP模式,可以理解为每个核上运行的系统都是独立的,这种模式下你可以理解为多核DSP就是多个单个DSP的组合,即使使用了OpenMP,在DSP上也不是SMP模式,只是AMP模式。
还有即使DSP能支持SMP模式,还是需要用户对原有的应用程序任务进行分工,不然还是跑在一个核上。
Best Regards
William
William.dong@enea.com