Здравствуйте! Подскажите пожалуйста почему при подключении openmp не удается уменьшить время работы программы.
Плата imx8 с Cortex A53
Содержимое файла main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
#include <math.h>
#include <time.h>
#include <omp.h>
#define CHANNELS 4
using namespace std;
using namespace cv;
int main()
{
    cout << "Start programm" << endl;
    vector<Mat>      matrix_1(CHANNELS);
    vector<Mat>      matrix_2(CHANNELS);
    vector<Mat>      result(CHANNELS);
    Mat rnd_image = Mat(2048, 2048, CV_32FC1, Scalar(0));
    // matrix initialization
    clock_t start, end;
    double cpu_time_used;
	
	for (int i = 0; i < CHANNELS; i++) {
        randn(rnd_image, Scalar(0), Scalar(16000));
        rnd_image.copyTo(matrix_1[i]);
        randn(rnd_image, Scalar(0), Scalar(16000));
        rnd_image.copyTo(matrix_2[i]);
	}
	
	start = clock();
    for (int i = 0; i < CHANNELS; i++) {
        multiply(matrix_1[i], matrix_2[i], result[i]);
    }
    end = clock();
    cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
    cout << "Time taken by for_loop: " << cpu_time_used << " seconds " << endl;
	
    start = clock();
	
	#pragma omp parallel num_threads(2)
	for (int i = 0; i < CHANNELS; i++) {
		multiply(matrix_1[i], matrix_2[i], result[i]);
	}
    end = clock();
    cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
    cout << "Time taken by for_loop with openmp: " << cpu_time_used << " seconds " << endl;
    return 0;
}
Команда для компиляции (флаг -fopenmp добавлен)
g++ main.cpp -fopenmp -I /usr/include/opencv2 -L /usr/lib -lopencv_core
Прописал переменную
root@imx8m-var-dart:~/test# printenv OMP_NUM_THREADS
2
root@imx8m-var-dart:~/test#
Компилирую и запускаю программу
root@imx8m-var-dart:~/test# ./a.out
Start programm
Time taken by for_loop: 0.930273 seconds
Time taken by for_loop with openmp: 1.83559 seconds
root@imx8m-var-dart:~/test#
По идее время на выполнение должно быть в два раза меньше... Что делаю не так?


