sách gpt4 ai đã đi

openmp - OpenMP 中的高斯消除

In lại 作者:行者123 更新时间:2023-12-04 18:29:03 28 4
mua khóa gpt4 Nike

OpenMP 中的高斯消除。我是 openmp 的新手,想知道我是否在正确的地方使用了我的编译指示和屏障。我的 x 值每次都不同。他们应该是一样的吗??

#include 

int num;
double mm[6][7];

void gaussElimination();

int chính() {
int i, j;

int k, s;

FILE *f = fopen("matrix.in", "r");
fscanf(f, "%d", &num);
for (i=0; i
for (j=0; j
fscanf(f, "%f", &mm[i][j]);
fclose(f);


for (i=0; i < num; i++)
for(j=0; j

gaussElimination();

for(k=0; k < num; ++k) {
for(s = 0; s < num+1; ++s)
printf("%3.2f\t", mm[k][s]);
printf("\n");
}
trả về 0;
}
void gaussElimination() {
int i, j, k, max;
double R;
// #pragma omp parallel for private (i, j)
for( i=0; i < num; ++i) {
max = i;
for(j= i+1; j < num; ++j)
if(mm[j][i] > mm[max][i])
max =j;

for(j=0; j < num+1; ++j) {
R = mm[max][j];
mm[max][j] = mm[i][j];
mm[i][j] = R;
}

#pragma omp parallel for private ( i, j)
for(j=num; j>= i; --j)
for(k=i+1; k
mm[k][j] -= mm[k][i]/mm[i][i] * mm[i][j];
}
#pragma omp barrier

for(i = num-1; i >=0; --i) {
mm[i][num] = mm[i][num] / mm[i][i];
mm[i][i] = 1;
#pragma omp barrier
for(j= i - 1; j >= 0; --j) {
mm[j][num] -= mm[j][i] * mm[i][num];
mm[j][i] = 0;
}

#pragma omp barrier

}
}

1 Câu trả lời

使用当前代码,您已将 OpenMP pragam 放置在 j 和 k 循环上。但是,您有一个 private(i,j),它使变量 i 和 j 成为私有(private)的(没有初始值)。这应该是私有(private)的(j,k),因为 j 和 k 循环变量需要是私有(private)的并且 i 需要共享(因为它是 j 循环的循环边界)。 OpenMP 屏障没有做任何事情。

关于openmp - OpenMP 中的高斯消除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828822/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com