int g(int x, int y){
return y * x * y * x * 228;
}
int check(int x, int y){
int c = g(x, y);
return x + y + c;
}
#pragma omp parllel
{
#pragma omp for
for (int y = 5; y != 1920; y++) {
for (int x = 5; x != 1080; x++) {
similarity += check(x, y);
}
}
}
#pragma omp parallel for reduction(+:similarity)
for (int y = 5; y < 1920; y++)
{
for (int x = 5; x < 1080; x++)
{
similarity += check(x, y);
}
}
#pragma omp parallel for reduction(+:similarity)
for (int y = 5; y < 1920; y++)
{
int local_sim = 0;
for (int x = 5; x < 1080; x++)
{
local_sim += check(x, y);
}
similarity += local_sim;
}
#pragma omp parallel for reduction(+:similarity){
#pragma omp critical{
for (int y = 5; y < 1920; y++)
{
int local_sim = 0;
for (int x = 5; x < 1080; x++)
{
local_sim += check(x, y);
}
similarity += local_sim;
}
}
}
#pragma omp parallel for reduction(+:similarity){
for (int y = 5; y < 1920; y++)
{
int local_sim = 0;
for (int x = 5; x < 1080; x++)
{
local_sim += check(x, y);
}
#pragma omp critical{
similarity += local_sim;
}
}
}
#pragma omp parallel for reduction(+:similarity)
for (int y = 5; y < 1920; y++)
{
int local_sim = 0;
#pragma omp parallel for reduction(+:local_sim)
for (int x = 5; x < 1080; x++)
{
local_sim += check(x, y);
}
similarity += local_sim;
}
#pragma omp parallel for reduction(+:similarity){
for (int y = 5; y < 1920; y++)
{
for (int x = 5; x < 1080; x++)
{
similarity += check(x, y);
}
}
}
вот этот, код работает также как и без прагмы, по времени одинаково 24 секунды #pragma omp parallel for reduction(+:similarity){
for (int y = 5; y < 1920; y++)
{
int local_sim = 0;
for (int x = 5; x < 1080; x++)
{
local_sim += check(x, y);
}
similarity += local_sim;
}
}