Программа на 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";