Распараллелить цикл:
for(i = 2; i < N; i++)
for(j = 2; i < N; j++)
A[i, j] = A[i - 2, j] + A[i, j - 2];
Как эффективно распараллелить. Результаты выходят неверные.
#include <iostream>
#include <omp.h>
#include <iomanip>
using namespace std;
int main()
{
int n=1000;
int g = 1;
int **A = new int*[1000];
for (int i = 0; i < n; i++)
A[i] = new int[n+1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = g;
A[j][i] = g+2;
// cout << A[i][j] << " ";
g++;
}
// cout << endl;
}
cout << endl;
#pragma omp parallel num_threads(4)
{
int i1, j1;
if (omp_get_thread_num() == 0)
i1 = 0, j1 = 0;
if (omp_get_thread_num() == 1)
i1 = 1, j1 = 0;
if (omp_get_thread_num() == 2)
i1 = 0, j1 = 1;
if (omp_get_thread_num() == 3)
i1 = 1, j1 = 1;
for (int i = 2 + i1; i < n; i += 2)
{
for (int j = 2 + j1; j < n; j += 2)
{
A[i][j] = A[i - 2][j] + A[i][j - 2];
}
}
}
for (int i = n-2; i < n; i++) {
for (int j = n-2; j < n; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < n; i++)
delete [] A[i];
delete [] A;
}`
omp_set_num_threads(4);
#pragma omp parallel num_threads(4)
{
int r, c;
if (omp_get_thread_num() == 0)
r = 0, c = 0;
if (omp_get_thread_num() == 1)
r = 1, c = 0;
if (omp_get_thread_num() == 2)
r = 0, c = 1;
if (omp_get_thread_num() == 3)
r = 1, c = 1;
for (int i = 2 + c; i < n3; i += 2)
{
for (int j = 2 + r; j < n3; j += 2)
{
arr1[i][j] = arr1[i - 2][j] + arr1[i][j - 2];
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ожидал вывод "Exception opening file" и "Exception get line" каждые 5 секунд
При загрузке простейшего блинка или hello world на Arduino Mega2560, получаю следующие ошибки:
Встретил несколько раз в проектном коде реализации синглтонов подобным образом: