给我一个需要大量计算但是程序不是很长的程序,实现 OMP 的多线程并行计算
时间: 2024-05-15 09:18:58 浏览: 11
很高兴为您解答问题!以下是一个简单的需要大量计算且可进行多线程并行计算的示例程序:
```
#include <iostream>
#include <omp.h>
using namespace std;
const int ARRAY_SIZE = 100000000; // 数组大小
int main() {
// 初始化数组
int* arr = new int[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = i;
}
// 声明变量并行计算结果
int sum = 0;
// 开始并行计算
#pragma omp parallel for reduction(+:sum)
for (int i = 0; i < ARRAY_SIZE; i++) {
sum += arr[i];
}
// 输出结果
cout << "结果为:" << sum << endl;
return 0;
}
```
这个程序通过并行计算数组的元素之和来展示如何使用 OpenMP 进行多线程并行计算。其中,`#pragma omp parallel for` 表示使用多个线程并行计算循环中的代码,`reduction(+:sum)` 则表示将每个线程计算出的 `sum` 的值累计到一个变量中,最终得到总和。通过这种方式,该程序可以利用多个 CPU 核心同时计算,大大加快了计算速度。
希望这个示例程序可以对您有所帮助!