Нет прироста во времени при использовании 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");//
}

Ответы (0 шт):