OpenMP并行实现向量加法
时间: 2023-10-11 18:05:31 浏览: 185
山东大学软件学院2022-2023第二学期多核平台上的并行计算期末考试
OpenMP是一种基于共享内存的并行编程模型,可以很方便地实现向量加法并行化。以下是一个简单的示例代码:
```c++
#include <iostream>
#include <omp.h>
using namespace std;
void add_vectors(int *v1, int *v2, int n, int *result) {
#pragma omp parallel for
for (int i = 0; i < n; ++i) {
result[i] = v1[i] + v2[i];
}
}
int main() {
int n = 3;
int v1[n] = {1, 2, 3};
int v2[n] = {4, 5, 6};
int result[n];
add_vectors(v1, v2, n, result);
for (int i = 0; i < n; ++i) {
cout << result[i] << " ";
}
return 0;
}
```
在上面的示例中,我们使用OpenMP的`parallel for`指令并行地遍历向量的每一个元素,并使用`private`关键字确保每个线程都拥有自己的`i`变量,避免了数据竞争。最后输出结果`5 7 9`。
需要注意的是,OpenMP需要在编译时指定相关选项才能够生效。例如,使用gcc编译上面的代码可以使用如下命令:
```
g++ -fopenmp vector_addition.cpp -o vector_addition
```
其中,`-fopenmp`选项表示使用OpenMP,`vector_addition.cpp`是源代码文件名,`-o vector_addition`表示输出可执行文件名为`vector_addition`。
阅读全文