Мне нужно распараллелить программу с помощью OpenMP, и я понятия не имею. Код, приведенный ниже, является аналогичной (очень) полупростой задачей. У меня есть класс, атрибуты которого являются вектором и его длиной. Метод «работа» вычисляет каждый новый элемент v [i] вектора как среднее значение предыдущего и следующего после (учитывая периодические границы, т. Е. Элемент 0 является средним значением элемента 1 и элемента (len-1)), ,Пример программы OpenMp
класс:
#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;
}
метод работы называется несколько раз. Может ли кто-нибудь написать мне несколько строк кода, чтобы объяснить, что делать?
Ну, кто такой великолепный человек, который пользуется тем, что отрицает голоса на мой вопрос? Мне нужно решить эту проблему, я знаю, что это профессиональный сайт, и, вероятно, мой вопрос глуп (и очень полезен для тех людей, как я, которые учатся), но это великолепное, а не предотвращение других вопросов из моего аккаунта может научить меня, как использовать OpenMP? – Wellen