用OpenMP求二维矩阵最大值
时间: 2023-09-27 12:06:01 浏览: 187
可以使用OpenMP的并行for循环来遍历矩阵中的元素,然后使用一个变量来存储最大值。具体实现如下:
```c++
#include <iostream>
#include <omp.h>
#define ROWS 100
#define COLS 100
int main() {
int matrix[ROWS][COLS];
int max_val = matrix[0][0];
// 初始化矩阵
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
matrix[i][j] = i * 100 + j;
}
}
#pragma omp parallel for
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
#pragma omp critical
{
if (matrix[i][j] > max_val) {
max_val = matrix[i][j];
}
}
}
}
std::cout << "Max value: " << max_val << std::endl;
return 0;
}
```
这里使用了 `#pragma omp parallel for` 来并行化外层的for循环,同时使用 `#pragma omp critical` 来保证在并行情况下 `max_val` 变量的正确性。
阅读全文