Программа на C++, использующая OpenMP для сравнения двух массивов и выходного массива, когда они идентичны

Кто-нибудь знаком с использованием OpenMP в C++? Я изо всех сил пытаюсь решить программу на C++ с использованием OpenMP для двух массивов, которые я должен сравнить и убедиться, что они идентичны. Я должен сначала обработать весь массив в каждом ядре, а затем сравнить два массива, чтобы убедиться, что они идентичны. Если это не так, повторяйте процесс до тех пор, пока выходные массивы не станут идентичными, и выведите результаты. У меня есть примечание, что мне нужно использовать оператор ~ для дополнения каждого байта в массиве, с которым я не знаком. Хотя я знаком с C++ (не эксперт), но очень новичок в использовании многопоточности и OpenMP, поэтому любые советы были бы очень полезны!

Мне удалось решить аналогичное задание с коэффициентом времени в программе (ниже), но у меня много проблем с этим сравнением массивов, пожалуйста, помогите, если сможете.

      #include <iostream>
#include <fstream>
#include <list> 
#include <omp.h>
#include <stdio.h> 
#include <stdlib.h> 
#include <thread>
#include <chrono>

using namespace std;

void bitmapinvert()
{
    /* Simulating the invertion of 150kb bitmap image (75,000 ms per dual core). */
    using namespace std::chrono_literals;
    std::this_thread::sleep_for(7400ms);
}

int main(){
    using std::chrono::high_resolution_clock;
    using std::chrono::duration_cast;
    using std::chrono::duration;
    using std::chrono::milliseconds;

    auto t1 = high_resolution_clock::now();
    bitmapinvert();
   
    #pragma omp parallel for collapse(3)
        for (int x = -2; x <= 2; x += 2)
            for (int y = -2; y <= 2; y += 2)
                printf("Thread %d: (%d, %d)\n", omp_get_thread_num(), x, y);
        return 0;
    
    auto t2 = high_resolution_clock::now();

    /* Getting number of milliseconds as an integer. */
    auto ms_int = duration_cast<milliseconds>(t2 - t1);

    /* Getting number of milliseconds as a double. */
    duration<double, std::milli> ms_double = t2 - t1;

    std::cout << ms_int.count() << "ms\n";
    std::cout << ms_double.count() << "ms";

0 ответов

Другие вопросы по тегам