TI中文支持网
TI专业的中文技术问题搜集分享网站

6678使用omp的问题

TI工程师老师,您好!

我在使用6678的OMP功能时遇到了一些问题,请帮忙解答一下!

我定义了两个变量,一个是accum数组另一个是array数组,其中accum定义在main函数外,如下所示:

#pragma DATA_SECTION(accum, ".testimage")

Uint16 accum [m*n];

 .testimage对应外部DDR3的0x81000000地址段,该段可以进行cache。

array定义在main函数内,如下所示:

Uint16 array[10];

在main函数中启用omp功能,对array和accum数组进行赋值操作,并打印输出:

#pragma omp parallel for private(k) shared(array)  

 for ( k=0; k < 10; k++)

  {    

array[k]=k * 2;  

 }  

 for ( k=0; k < 10; k++)  

 {   

 printf("array[%d]=%d\n", k, array[k]);  

 }

  #pragma omp parallel for private(k) shared(accum)   

for ( k=0; k < 10; k++)  

 {    

accum[k]=k;  

 }   

for ( k=0; k < 10; k++)

  {   

 printf("accum[%d]=%d\n", k, accum[k]);

  }

输出结果是这样的:

 array[0]=0

array[1]=2

array[2]=4

array[3]=6

array[4]=8

array[5]=10

array[6]=12

array[7]=14

array[8]=16

array[9]=18

 

accum[0]=0

accum[1]=1

accum[2]=0

 accum[3]=0

accum[4]=0

accum[5]=0

accum[6]=0

accum[7]=0

accum[8]=0

accum[9]=0

 

array正常赋值了,但是accum只给前两个地址赋了值,后面的并没有赋值,不知为何?

victorlzm:

好失望,居然还没有回复!

xinxin lai:

回复 victorlzm:

你用的是几个核

victorlzm:

回复 xinxin lai:

7个

Zhan Xiang:

把accum的地址放到非cache区呢,我印象中omp并不能生成cache 一致性维护代码

赞(0)
未经允许不得转载:TI中文支持网 » 6678使用omp的问题
分享到: 更多 (0)