OpenMP示例程序
OpenMp example program
我必须与OpenMP并行化一个程序,我不知道。下面的代码是一个类似的(非常)半填充的问题。我有一个属性,其属性是向量及其lenght。该方法"工作"将向量的每个新元素V [i]计算为前一个的平均值和一个之后的平均值(考虑到周期性界限,即元素0是元素1和元素(LEN-1)的平均值)。
类:
#include<vector>
#include<iostream>
class A{
private:
std::vector<int> v;
int len;
public:
A(): len(0), v(0){
v[0] = 0;
}
A(unsigned n): len(n), v(n){
for(int i = 0; i < len; i++)
v[i] = 2*(i+1);
}
void work(){
std::vector<int> temp(len);
for(int i = 0; i < len; i++)
temp[i] = (v[((i-1+len)%len)] + v[((i+1)%len)]) / 2;
v.swap(temp);
}
void out(){
for(int i = 0; i < len; i++)
std::cout << v[i] << " ";
std::cout << std::endl;
}
~A(){}
};
主:
#include <iostream>
#include "omp.h"
#include "class.cpp"
int main () {
A a(5);
for(int i = 0; i < 10; i++){
a.work();
}
a.out();
return 0;
}
该方法工作被称为多次。有人可以给我写几行代码来解释该怎么办吗?
我有解决方案,在循环之前必须写的类方法中:
#pragma omp parallel for
全是!
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- c++类声明时,相同的例程,不同的成员变量类型
- C++为线程工作动态地分割例程
- 子例程,不使用 pow,并带有参数和返回
- 直接在RcppArmadillo中调用LAPACK例程
- 如何将C++子例程链接到 x86 程序集程序?
- PX 转换例程编译问题
- 成功完成TLS握手后,服务器关闭时出现错误的SSL例程:SSL3_GET_RECORD:错误的版本号
- 只允许授权代码调用库中的例程
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- 调用子例程时类型不匹配
- 将分配给C++数组传递给 Fortran 子例程
- Android Studio 3.1.2 - 无法运行C++子例程"No implementation found for Java.lang.String..."
- Posix 线程类和启动例程 (pthread)
- OpenBLAS 只为一个例程设置线程数
- 检查并行化 BLAS 例程的结果
- 位置实用程序例程与使用类型相同的命名空间
- Qt事件后,长例程冻结了我的应用程序一段时间
- 为多线程程序增强非阻塞读写例程
- 从c++程序中调用Stan例程