Нет прироста во времени при использовании OpenMP
Есть программа, которая находит след матрицы. Нужно сделать ее распараллелить. Я сделала через OpenMP, но время выполнения например при 1 потоке меньше или равно времени при 10 потоках (матрица 10000 на 10000). В настройках Visual Studio OpenMP включен. Подскажите пожалуйста, в чем проблема и как ее решить.
#include <iostream>
#include <iostream>
#include <windows.h>
#include <ctime>
#include <omp.h>//библиотека паралельных вычислений
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int i, j;//
int n, m;
int** Mas;//размер
int sum = 0;//сумма
cout << "Введите количество строк n: ";
cin >> n;//вводим кол-во строк
cout << "Введите количество столбцов m: ";
cin >> m;//вводим кол-во столбцов
Mas = new int* [n];//выделяем память
for (int i = 0; i < n; i++)
{
Mas[i] = new int[m];
}
cout << "Массив: " << endl;
for (i = 0; i < n; i++)//идем в цикле по строкам
{
for (j = 0; j < m; j++)///идем в цикле по столбцам
{
Mas[i][j] = rand() % 90 + 10;//заполняем рандомом
// cout << Mas[i][j] << " "; //выводим на экран
}
cout << endl;
}
omp_set_num_threads(5);
double wall_timer;
wall_timer = omp_get_wtime();
#pragma omp parallel for lastprivate(j) reduction(+: sum)//указываем кол-во поток для цикла по i
for (i = 0; i < n; i++)//
{
for (j = 0; j < m; j++)//
{
if (i == j) //
sum += Mas[i][j];//считаем след
}
}
cout << "След матрицы = " << sum << endl;//выводим след
cout << "Время выполнения = " << omp_get_wtime() - wall_timer << endl;
cout << omp_get_max_threads();
system("pause");//
}