0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
||||||
1 | ||||||
Параллельное программирование на С++02.12.2020, 00:28. Показов 8333. Ответов 87
Метки нет (Все метки)
Всем доброго времени суток!
У меня есть вопросы относительно лабораторной Вот постановка задачи: Создать двумерный массив размерности n×m. Найти сумму элементов массива. Но с использованием параллелизма, параллельного программирования, Вот мой код:
Буду очень всем Вам благодарен за совет, относительно того, как можно подкорректировать мой код, чтобы программа все же работала параллельно
0
|
02.12.2020, 00:28 | |
Ответы с готовыми решениями:
87
Параллельное программирование Параллельное программирование на C++ Параллельное программирование Параллельное программирование |
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
10.01.2021, 21:12 | 21 |
Найти максимальный элемент X в массиве. Потом удалить элементы, которые меньше 0.4 * X и больше 0.6 * X
Запускаешь три потока, которые будут формировать-сортировать три твоих массива. Потом ждёшь, когда потоки завершатся и сливаешь эти три массива в новый массив, как по-заданию.
0
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
||||||
10.01.2021, 22:35 [ТС] | 22 | |||||
Вот я доделал, можете посмотреть пожалуйста правильно ли?
Потому что мне кажется, что что-то тут не так...
Добавлено через 3 минуты if(randarr3[i] < 0.4*max || randarr3[i] > 0.6*max) Если я в этом условии вместо ИЛИ поставлю И, то никакие элементы не выводятся...( Добавлено через 5 минут В поиске максимального элемента, я ошибочно сделал сложность O(n^2), я переправил на O(n)... Максимальный элемент находит верно, а вот с условием что-то походу не так(
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
11.01.2021, 23:01 | 23 | |||||
Условие правильное, а удаление элемента сделано неправильно
Добавлено через 3 минуты std::remove_if Добавлено через 22 минуты
1
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
11.01.2021, 23:23 [ТС] | 24 |
Большое спасибо! Работает.
А как быть с асинхронным вычислением?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.01.2021, 23:27 | 25 |
Потоки запускать умеешь, std::thread?
Добавлено через 1 минуту Нужно запустить три потока. В первый поместить весь код, который работает с randarr1, во второй - весь код с randarr2, в третий - randarr3 Добавлено через 46 секунд Это оставить как есть
1
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
11.01.2021, 23:27 [ТС] | 26 |
Запускал, но преподаватель сказал, что программа работает не параллельно а последовательно...
И теперь я запутался как их правильно запускать(
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
11.01.2021, 23:28 | 27 |
1
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
||||||
11.01.2021, 23:31 [ТС] | 28 | |||||
Я запускал на примере другой задачи, как-то так:
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
11.01.2021, 23:36 | 29 | |||||
get_Matrix читает массив с клавиатуры, он не должен запускаться параллельно Добавлено через 1 минуту И - у тебя вроде три независимых массива и с клавиатуры ничего не начитывается. Поэтому их все можно запустить каждый в своём потоке
1
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
11.01.2021, 23:38 [ТС] | 30 |
Ага, а если брать мою задачу, то мне нужно похожим методом сделать, только для трёх массивов, будет три потока и каждый поток должен ждать свое выполнение join()?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||||||
11.01.2021, 23:50 | 31 | ||||||||||
Сначала запускаешь три потока подряд, потом, делаешь им join
Добавлено через 8 минут
std::cout << .... в потоках нужно синхронизировать, поэтому лучше воспользоваться printf
1
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
12.01.2021, 00:02 [ТС] | 32 |
Компилятор выдает ошибки(
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
12.01.2021, 00:04 | 33 |
0
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
12.01.2021, 00:10 [ТС] | 34 |
Теперь другая ошибка появилась
0
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
||||||
12.01.2021, 00:11 [ТС] | 35 | |||||
Вот весь мой код:
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
12.01.2021, 00:14 | 36 |
Покажи, как сделал
Добавлено через 46 секунд Скобку не закрываешь В остальных то же самое
0
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
||||||
12.01.2021, 00:14 [ТС] | 37 | |||||
Забыл в конце ожидание потоков поставить
Вот код
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
12.01.2021, 00:16 | 38 |
Это делать бесполезно, массивы заполняются в параллельных потоках
Добавлено через 44 секунды А где то же самое для других массивов?
0
|
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 120
|
|
12.01.2021, 00:19 [ТС] | 39 |
Выходит мне в поток нужно закинуть как и генерацию массива, так и операцию над ним?
Или только генерацию массива, а операцию над ним выполнять без потока?
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
12.01.2021, 00:27 | 40 |
Ну да, я ж тебе показал. В остальных потоках сделай по-аналогии.
Добавлено через 5 минут Это сделано явно неправильно. Если нужно оставить только чётные элементы, нужно воспользоваться std::remove_if
0
|
12.01.2021, 00:27 | |
12.01.2021, 00:27 | |
Помогаю со студенческими работами здесь
40
параллельное программирование Параллельное программирование Параллельное программирование в С++ Параллельное программирование Параллельное программирование параллельное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
|
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
|
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
|
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
|
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей
Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
|
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
|
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
|
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
|
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
|
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке
В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
|