在将值存储在数组中时出现问题。我知道问题来自我的计数器,该计数器不像在OpenMP中那样计数。我想知道是否有人对如何将值存储在创建的数组中有任何提示。我的函数用c编写。我也知道这样一个事实,即对于相同的Newi_element和Newj_element,这些乘法可以具有多个值,必须将它们彼此相加。
#define N 1138 //Matrix size
void matrixmultiplication(void){
int *Newi_element = malloc(sizeof(int)*N *N);
int *Newj_element = malloc(sizeof(int)*N *N);
float *Newvalues = malloc(sizeof(float)*N *N);
int Newniterate = 0;
int i,j;
omp_set_num_threads(4);
#pragma omp parallel
{
#pragma omp for private(i,j)
for(i=0;i<niterate;i++){
for(j=0;j<niterate2;j++){
if((j_element[i] == i_element2[j])){
*(Newi_element+Newniterate) = i_element[i];
*(Newj_element+Newniterate) = j_element2[j];
*(Newvalues+Newniterate) = values[i] * values2[j];
Newniterate++;
}
}
}
}
free(Newi_element);
free(Newj_element);
free(Newvalues);
}