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.

C6678多核共享数据处理问题



我想利用8个核并行协同处理一段共享数据,代码如下:

#include<c6x.h>

#include<stdio.h>

int main()

{

      int i=0;

      int Num=16;

      int a[16]={0};

      for(i=0;i<Num;i++)

              a[i]=i;    //对数组赋初值

  switch(DNUM)

      {

       case 0:

                for(i=0;i<2;i++)

                {

                         a[i]=a[i]*2;

                         printf("a[%d]=%d \n",i,a[i]);

                }

                break;

       case 1:

               for(i=2;i<4;i++)

               {

                       a[i]=a[i]*2;

                       printf("a[%d]=%d \n",i,a[i]);

                }

                break;

       case 2:

                for(i=4;i<6;i++)

               {

                      a[i]=a[i]*2;

                      printf("a[%d]=%d \n",i,a[i]);

                }

              break;

       case 3:

                for(i=6;i<8;i++)

                {

                          a[i]=a[i]*2;

                          printf("a[%d]=%d \n",i,a[i]);

                 }

               break;

       case 4:

                 for(i=8;i<10;i++)

                 {

                          a[i]=a[i]*2;

                           printf("a[%d]=%d \n",i,a[i]);

                  }

                break;

         case 5:

                   for(i=10;i<12;i++)

                   {

                              a[i]=a[i]*2;

                               printf("a[%d]=%d \n",i,a[i]);

                    }

                   break;

          case 6:

                  for(i=12;i<14;i++)

                  {

                          a[i]=a[i]*2;

                          printf("a[%d]=%d \n",i,a[i]);

                  }

                 break;

        case 7:

                   for(i=14;i<16;i++)

                   {

                          a[i]=a[i]*2;

                          printf("a[%d]=%d \n",i,a[i]);

                    }

                   break;

           default:

                    break;

         }

        for(i=0;i<Num;i++)

        {

                 printf("a[%d]=%d \n",i,a[i]);

         }

        return 0;

}

以上程序在CSS5.0.3上编译,C6678上8个核运行,其结果如下:

[C66xx_6] a[12]=24;

[C66xx_6] a[13]=26;

[C66xx_6] a[0]=0;

[C66xx_6] a[1]=1;

[C66xx_6] a[2]=2;

. . .

[C66xx_6] a[15]=15;

...

但是程序运行情况是8个核对8份数组a各自进行处理,例如core0对属于core0的数组a的前两个元素进行乘2处理,core1对属于core1的数组a的第3、4个元素进行处理,...。但是我想实现8个核对一个数组a进行协同处理,使数组a每个元素都乘以2,应该怎么修改程序?