OpenMP矩阵优化

时间:2014-10-18 11:25:44

标签: performance optimization matrix openmp parallels

我有一个二维矩阵,需要通过OpenMP

来提高其性能
#pragma omp parallel private(i, j, k) num_threads(4)
{
    for(i=0; i<N; i++) {
        #pragma omp for schedule(dynamic, 2) // this line cannot be put before the first loop (i) cause of algorithm
        for(j=i+1; j<N; j++) {
            for(k=i+1; k<N; k++) {
                A[j][k] -= A[i][k]*A[j][i];
            }
        }
    }
}

我想知道我能否提高缓存一致性或使用任务加速?

谢谢!

注意:上面的代码是LU分解算法的一部分。我想简化我的问题。以下代码是我使用的真实代码:

#pragma omp parallel private(i, j, k) num_threads(4)
{
    for(i=0; i<N; i++) {
        #pragma omp for schedule(dynamic, 2) nowait
        for(j=i+1; j<N; j++) {
            A[j][i] = A[j][i]/A[i][i];
        }

        #pragma omp barrier

        #pragma omp for schedule(dynamic, 2) nowait
        for(j=i+1; j<N; j++) {
            for(k=i+1; k<N; k++) {
                A[j][k] -= A[i][k]*A[j][i];
            }
        }

        #pragma omp barrier
    }
}

0 个答案:

没有答案