Вывод количества итераций, обработанных каждым потоком ⇐ C++
Вывод количества итераций, обработанных каждым потоком
У меня есть код, который обрабатывает матрицу параллельно и должен выводить информацию о том, сколько итераций обработал каждый поток, но он выводит информацию только для одного потока. Я не так давно начал изучать OpenMP и не понимаю, в чем дело.
int main() { интервал н; cout > п; int** A = новый int* [n]; int** B = новый int* [n]; int* C = новый int[n]; int* D = новый int[n]; for (int i = 0; i < n; i++) { A = новый int[n]; B = новый int[n]; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { А[j] = rand() % 100; B[j] = rand() % 100; } } интервал thread_num; интервал it_num; #pragma omp параллельный для расписания (статический, 4) num_threads (4) { auto start_time = хроно::high_разрешение_часов::сейчас(); for (int i = 0; i < n; i++) { интервал it_num = 0; int minA = A[0]; it_num++; for (int j = 1; j < n; j++) { если (A[j] < minA) { минА = А[j]; ++it_num; } } printf("поток %d обработал %d итераций\n", omp_get_thread_num(), it_num); С = минА; } auto end_time =хроно::high_разрешение_часов::сейчас(); автоматическая длительность = хроно::duration_cast(end_time - start_time).count(); cout
У меня есть код, который обрабатывает матрицу параллельно и должен выводить информацию о том, сколько итераций обработал каждый поток, но он выводит информацию только для одного потока. Я не так давно начал изучать OpenMP и не понимаю, в чем дело.
int main() { интервал н; cout > п; int** A = новый int* [n]; int** B = новый int* [n]; int* C = новый int[n]; int* D = новый int[n]; for (int i = 0; i < n; i++) { A = новый int[n]; B = новый int[n]; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { А[j] = rand() % 100; B[j] = rand() % 100; } } интервал thread_num; интервал it_num; #pragma omp параллельный для расписания (статический, 4) num_threads (4) { auto start_time = хроно::high_разрешение_часов::сейчас(); for (int i = 0; i < n; i++) { интервал it_num = 0; int minA = A[0]; it_num++; for (int j = 1; j < n; j++) { если (A[j] < minA) { минА = А[j]; ++it_num; } } printf("поток %d обработал %d итераций\n", omp_get_thread_num(), it_num); С = минА; } auto end_time =хроно::high_разрешение_часов::сейчас(); автоматическая длительность = хроно::duration_cast(end_time - start_time).count(); cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как взаимодействовать между традиционным потоком и потоком asyncio в Python?
Anonymous » » в форуме Python - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как взаимодействовать между традиционным потоком и потоком asyncio в Python?
Anonymous » » в форуме Python - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-