使用OpenMP并行化Sparsematrix

时间:2018-10-25 09:20:01

标签: c matrix count openmp sparse-matrix

在将值存储在数组中时出现问题。我知道问题来自我的计数器,该计数器不像在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);

}

0 个答案:

没有答案